Consultas dinâmicas em Transact-SQL

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (8)  (0)

Veja neste artigo como trabalhar com consultas dinâmicas no SQL Server.

 

Neste artigo vamos ver como trabalhar com consultas dinâmicas no SQL Server. Este tipo de consulta é útil quando não temos informações sobre os dados a serem consultados, só teremos estas informações em tempo de execução. Um bom exemplo de uma consulta dinâmica seria uma stored procedure que retorna a quantidade total de registro de uma tabela X, porém só saberemos o nome da tabela em tempo de execução. Existem duas maneiras de executar query’s dinâmicas no SQL Server, usando o comando EXEC() ou usando uma stored procedure padrão chamda sp_executesql, logo mais veremos como utilizar um recurso ou outro. Para simular os exemplos vamos utilizar o banco de dados Northwind.Veja na figura 1 a tentativa de executar uma query dinâmica.

 

24-10pic01.JPG 

Figura 1. Executando consultas dinâmicas

 

Pode-ser verificar pela figura 1 que é preciso utilizar algumas artimanhas para executar consultas dinâmicas.Vamos agora executar a mesma consulta usando o comando EXEC() e sp_executesql.Veja os exemplos nas figuras 2 ,3 e 4.

 

24-10pic02.JPG 

Figura 2. Executando consultas dinâmicas usando o comando EXEC

 

24-10pic03.JPG 

Figura 3. Executando consultas dinâmicas usando o comando EXEC

 

24-10pic04.JPG 

Figura 4. Executando consultas dinâmicas usando a stored procedure sp_executesql

 

 

Um exemplo utilizando variáveis como parâmetros da consulta

 

Vamos agora ver um exemplo um pouco mais complicado, neste caso tudo será definido dinamicamente, o nome da tabela, a condição da consulta e o parâmetro da consulta. Veja o exemplo na figura 5.

 

24-10pic05.JPG 

Figura 5. Gerando query dinâmica utilizando variáveis como parametro

 

Perceba que na query montada dinamicamente o parâmetro @CustomerID está sem aspas simples, neste caso o SQL irá tratar isso como uma coluna da tabela e se você tentar executar esta query com certeza irá receber a seguinte mensagem: “Invalid column name 'VINET'”. Para resolver este problema vamos colocar aspas simples antes e após o nome da variável na query gerada dinamicamente. Veja na figura 6 o resultado.

 

24-10pic06.JPG 

Figura 6. O resultado da query

 

 

Usando sp_executesql com parâmetros

 

Vamos agora ver como executar query’s dinâmicas com a stored procedure sp_executesql utilizando parâmetros de entrada, esta seria uma maneira de resolver o problema acima. Você pode perceber olhando a figura 7 que devemos enviar a query a ser executada, os tipos de parâmetro e finalmente os parâmetros.

 

 

24-10pic07.JPG 

Figura 7. Executando query’s dinâmicas com parâmetros de entrada usando sp_executesql

 

 

Conclusão

 

Neste artigo mostramos como trabalhar com query’s dinâmicas no SQL Server, trata-se de uma dica muito útil no dia a dia de quem usa a Transacat-SQL. Se você ainda não usou query’s dinâmicas com certeza uma hora irá precisar utilizar. Espero que a dica seja útil.

Um grande abraço à todos e até a próxima.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?