Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta dinâmica dinâmica sem armazenar consulta como String


Resposta curta: não.

Resposta longa:

Bem, isso ainda é não . Mas vou tentar explicar o porquê. A partir de hoje, quando você executa a consulta, o mecanismo de banco de dados exige estar ciente da estrutura do conjunto de resultados (número de colunas, nomes de colunas, tipos de dados etc.) que a consulta retornará. Portanto, você deve definir a estrutura do conjunto de resultados ao solicitar dados do banco de dados. Pense nisso:você já executou uma consulta em que não conhecia a estrutura do conjunto de resultados de antemão?

Isso também se aplica mesmo quando você select * , que é apenas uma sintaxe de açúcar. No final, a estrutura de retorno é "todas as colunas dessa(s) tabela(s)".

Ao montar uma string, você gera dinamicamente a estrutura que deseja, antes de solicitar o conjunto de resultados. É por isso que funciona.

Finalmente, você deve estar ciente de que montar a string dinamicamente pode teoricamente e potencialmente (embora não provável) obtenha um conjunto de resultados com colunas infinitas. Claro, isso não é possível e vai falhar, mas tenho certeza que você entendeu as implicações.

Atualizar

Encontrei isso, o que reforça as razões pelas quais não funciona.

Aqui :

Vou continuar procurando e adicionando aqui.