Por vezes pode ser útil tratar uma stored procedure como se fosse uma tabela, fazendo um SELECT com ORDER BY ou WHERE. Um exemplo é o uso da stored procedure sp_who para ver as conexões atualmente abertas com o servidor de banco de dados. Pode-se agrupar por usuário conectado, por exemplo. Na net vi outras maneiras, talvez mais performáticas, de fazer este fuguete. Mas essa foi a mais simples que achei. Consiste em criar uma tabela temporária em memória, dar um INSERT nessa tabela usando os dados da stored procedure, e então fazendo o SELECT dessa tabela temporária. A estrutura da tabela deve ser compatível com o retorno da procedure.

declare @tmp table
 (
 spid int null,
 ecid int null,
 [status] nvarchar(max) null,
 loginname nvarchar(max) null,
 hostname nvarchar(max) null,
 blk int null,
 dbname nvarchar(max) null,
 cmd nvarchar(max) null,
 request_id int null
 );

 INSERT INTO @tmp
 exec sp_who;

 SELECT * FROM @tmp
 ORDER BY dbname desc
Anúncios