短い答え: いいえ
長い答え:
まあ、それはまだいいえです .しかし、私はその理由を説明しようとします。現在、クエリを実行すると、DB エンジンは、クエリが返す結果セットの構造 (列数、列名、データ型など) を認識している必要があります。したがって、DB からデータを取得する場合は、結果セットの構造を定義する必要があります。考えてみてください:結果セットの構造が事前にわからないクエリを実行したことがありますか?
これは、 select *
を実行する場合にも当てはまります 、これは単なる砂糖の構文です。最後に、返される構造は「そのようなテーブルのすべての列」です。
文字列を組み立てることにより、結果セットを要求する前に、必要な構造を動的に生成します。それが機能する理由です。
最後に、文字列を動的にアセンブルすると、理論的にも潜在的に (可能性は低いですが)無限の列を持つ結果セットを取得します。もちろん、それは不可能であり、失敗しますが、その意味を理解していると思います.
更新
これは、機能しない理由を補強するものです。
こちら :
引き続き探してここに追加します。