Consulta Dinâmica SQL – Retorna a Query com os campos da Tabela

Para facilitar minha vida e ajudar alguns estou publicando o código de uma procedure que estou utilizando bastante no dia-a-dia.
A procedure recebe como parâmetro o nome de uma tabela (em String)  e retorna a consulta SQL com todos os campos da tabela ordenados da mesma maneira que a tabela foi criada.

 
CREATE PROCEDURE spQuery (@Nm_tb VARCHAR(200)) 
/*
Autor: @ThiagoThamiel
Data: 06/12/2012
Descrição: Retornar a query com os campos para consulta de uma tabela recebida por parametro
*/
AS 
BEGIN 
 Declare @NomeColuna varchar(100)
 Declare @MontaQuery varchar(8000)
 set @MontaQuery = ''
 DECLARE Cursor1 CURSOR FOR
 SELECT UPPER(NAME) AS 'NAME' FROM SYSCOLUMNS WHERE ID IN (SELECT ID FROM SYSOBJECTS WHERE NAME = @Nm_tb ) ORDER BY COLID
 OPEN Cursor1;
 FETCH NEXT FROM Cursor1 INTO @NomeColuna ;
 WHILE @@FETCH_STATUS = 0
 BEGIN
 IF @MontaQuery = '' BEGIN
 SET @MontaQuery = @MontaQuery + @NomeColuna
 END ELSE BEGIN
 SET @MontaQuery = @MontaQuery + ', ' + @NomeColuna
 END ;
 FETCH NEXT FROM Cursor1 INTO @NomeColuna;
 END;
 CLOSE Cursor1;
 DEALLOCATE Cursor1;

print 'SELECT ' + @MontaQuery + ' FROM ' + @Nm_tb
END

 

Chamada da Procedure:

spQuery 'tscdvd'


Categorias:Programação

Deixe uma resposta

%d blogueiros gostam disto: