Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Динамична обобщена заявка без съхраняване на заявка като низ

Кратък отговор: не.

Дълъг отговор:

Е, това все още е нене . Но ще се опитам да обясня защо. От днес, когато изпълнявате заявката, машината на DB изисква да е наясно със структурата на набора от резултати (брой колони, имена на колони, типове данни и т.н.), които заявката ще върне. Следователно, трябва да дефинирате структурата на набора от резултати, когато поискате данни от DB. Помислете за това:изпълнявали ли сте някога заявка, при която не бихте знаели структурата на набора от резултати предварително?

Това важи и когато select * , което е просто захарен синтаксис. Накрая структурата, която се връща, е „всички колони в такава таблица(и)“.

С асемблирането на низ вие динамично генерирате структурата, която желаете, преди да поискате набора от резултати. Ето защо работи.

И накрая, трябва да сте наясно, че динамичното сглобяване на низа може теоретично и потенциално (въпреки че не е вероятно) да получите набор от резултати с безкрайни колони. Разбира се, това не е възможно и ще се провали, но съм сигурен, че разбирате последиците.

Актуализация

Намерих това, което затвърждава причините, поради които не работи.

Тук :

Ще продължа да търся и да добавям тук.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. низ еквивалент на Sum за конкатенация

  2. Регистърът на транзакциите на SQL Server, част 2:Архитектура на журнала

  3. SQL Server 2008:преместване на данни между среди

  4. Име на текущата изпълнявана процедура

  5. Използване на INNER JOIN за комбиниране на таблици на SQL Server и показването им в ASP.NET уебформи