- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:動的SQL)
動的SQLについて
このQ&Aのポイント
- 動的SQLについての疑問点について詳しく説明します。
- ストアドの命令1と命令2の違いについて詳しく説明します。
- ストアドをフォームのレコードソースにする際の現象について考察します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SELECT * FROM TABLE1 WHERE KEY='A'とSELECT * FROM TABLE1 WHERE KEY='B'の2つのクエリについて、 sp_executesqlは、「SELECT * FROM TABLE1 WHERE KEY=@A」でパラメータが異なるもの、と認識し、実行時に過去に実行したクエリプランがキャッシュされていればそれを使います。 EXECでは全く別のクエリと認識されますので、毎回新しいクエリプランを作成します。 したがって、定型クエリを繰り返し実行するケースでsp_executesqlを利用すると、多少効果的です。 また、sp_executesqlでは実行した結果をTransact-SQLの変数に受け取ることもできますが、EXECではできません。 なお、adp上での両者の違いについては確認できませんでした(両方ともパラメータ入力を求めない) それにしても > exec ('select * from T_日報 where 日付=''' + @日付_sp + '''') は私的にはちょっと画期的でした。EXEC文だとdatetime型を単純に文字列連結してもエラーにならないんですね。
お礼
別段何らかの制限があるわけではないと云うことですね。 ありがとうございました、再度精査してみます。