Processando uma Stored Procedure e armazenando o retorno em uma tabela

Dica – Processando uma Stored Procedure e armazenando o retorno em uma tabela.


Boa tarde, pessoal.

A dica de hoje tem o objetivo de demonstrar como podemos executar uma Stored Procedure no SQL Server 2005 e 2008, armazenando o seu retorno em uma tabela.

Em diversas situações utilizar uma Stored Procedure representa uma facilidade e agilidade para o Administrador de Banco de Dados em suas atividades. O que nos faz pensar que sempre a Stored Procedure poderá não atender e resolver os nossos problemas. Trata-se de um pensamento correto!!!

Mas se necessitarmos obter os valores de retorno após a execução da Stored Procedure? Isso é possível? Temos como armazenar estes valores em uma tabela? Para todas estes perguntas temos uma única resposta “SIM”. E com base nestes questionamentos e também em alguns posts que encontrei nos Fóruns MSDN Brasil e TechNet Brasil, vou postar esta pequena dica e espero que seja útil.

Eu desenvolvi um pequeno código, denominado Código 1, que ilustra a possibilidade de armazenar o retorno da execução da Stored Procedure de sistema: SP_SpaceUsed, que possui a função de retornar ao usuário informações sobre alocação de espaço ocupado por Tabelas, Databases e Índices.

A seguir apresento o Código 1:

— Código 1 —

— Criando uma nova tabela para armazenar todas as tabelas existentes em um Banco de Dados —

Create Table MinhasTabelas
(Codigo Int Primary Key Identity(1,1),
Nome Varchar(100))

— Inserindo a relação de Nomes de Tabelas após a execução da Sys.Tables —

Insert Into MinhasTabelas
SELECT Name FROM SYS.TABLES
WHERE TYPE=’U’

— Criando uma nova tabela para armazenar todas as informações retornadas pela SP_SpaceUsed —

Create Table EspacoOcupado
(Name VarChar(100),
Rows Int,
Reserved Varchar(10),
Data Varchar(10),
Index_Size Varchar(10),
Unused Varchar(10))

— Declarando uma Estrutura de Repetição – While —

Declare @Contador SmallInt,
@NomeTabela Varchar(100)

Set @Contador=1

While @Contador <= (Select COUNT(Codigo) from MinhasTabelas)
Begin

Select @NomeTabela=Nome from MinhasTabelas
Where Codigo=@Contador

— Inserindo o Retorno da Execução da SP_SpaceUsed na Tabela EspacoOcupado —

Insert Into EspacoOcupado
Exec SP_Spaceused @NomeTabela

Set @Contador +=1
End

— Consultando os dados armazenados na tabela EspacoOcupado —

Select * from EspacoOcupado

 

Bom pessoal, esta aqui mais uma simples dica, sem muita frescura, sempre direta no assunto, espero que todos gostem, e que mais uma vez possa ajudar nas suas atividades.

Agradeço a sua visita, nos encontros nas próximas dicas.

Até mais.