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.