sql >> Databáze >  >> RDS >> Sqlserver

Dynamický kontingenční dotaz bez uložení dotazu jako řetězec

Krátká odpověď: ne.

Dlouhá odpověď:

No, to stále ne . Ale pokusím se vysvětlit proč. Od dnešního dne, když spustíte dotaz, DB engine vyžaduje znát strukturu sady výsledků (počet sloupců, názvy sloupců, datové typy atd.), kterou dotaz vrátí. Proto musíte definovat strukturu sady výsledků, když požadujete data z DB. Přemýšlejte o tom:spustili jste někdy dotaz, u kterého byste předem neznali strukturu sady výsledků?

To platí i tehdy, když select * , což je pouze syntaxe cukru. Na konci je vracející se struktura „všechny sloupce v takových tabulkách“.

Sestavením řetězce dynamicky vygenerujete požadovanou strukturu, než požádáte o sadu výsledků. Proto to funguje.

Nakonec byste si měli uvědomit, že dynamické sestavení řetězce může teoreticky a potenciálně (i když to není pravděpodobné) získáte sadu výsledků s nekonečnými sloupci. To samozřejmě není možné a selže, ale jsem si jistý, že jste pochopili důsledky.

Aktualizovat

Našel jsem toto, což posiluje důvody, proč to nefunguje.

Zde :

Budu hledat a přidávat sem.




  1. Instalace Perl DBD::Oracle Module

  2. mysql dotaz pro shodu věty s klíčovými slovy v poli

  3. Problémy se zobrazováním obrázků blob

  4. PHP Calculate Number of downline v binárním stromu