ここでは、動的 SQL を使用する理由はありません。 行う場合 動的 SQL を使用する必要がある場合は、sp_executesql
を検討する必要があります EXEC()
より優先度が高い .次のようなさまざまな理由があります。
sp_executesql
クエリ プランを再利用する可能性が高い (動的 SQL を参照) - EXEC(@SQL) 対 EXEC SP_EXECUTESQL(@SQL)
);
厳密に型指定されたパラメーターを sp_executesql
に渡す方がはるかに簡単です (文字列を連結するよりも SQL インジェクションを阻止するほうがよい);そして、
また、動的 SQL スコープ内から変数を取得して呼び出しスコープに戻すこともできます。例:
これはあまり有用な例ではありませんが、動的文字列を実行する際によくある問題です。しかし、もっと重要なことは、最初の手段としてではなく、必要な場合にのみ動的 SQL を考慮する必要があるということです。