実行時のステートメントの構築

実行時に SQL ステートメントを動的に構築する必要があるほとんどの Microsoft SQL Server アプリケーションは、そのステートメントを実行するデータベース API 関数またはメソッドを呼び出される前に SQL ステートメントを構築します。たとえば、ODBC を使用する C 言語のアプリケーションでは、1 つ以上の SQL ステートメントを 1 つの文字配列に動的に構築し、その配列を ODBC の SQLPrepare 関数または SQLExecDirect 関数に渡すことができます。

Transact-SQL では、実行時に Transact-SQL スクリプト、ストアド プロシージャ、およびトリガ内で SQL ステートメントを構築する次の方法がサポートされています。

  • Unicode 文字列の実行には、sp_executesql システム ストアド プロシージャを使用します。sp_executesql では、RAISERROR ステートメントと同様のパラメータ置換がサポートされます。

  • 文字列の実行には、EXECUTE ステートメントを使用します。EXECUTE ステートメントでは、実行された文字列でパラメータ置換がサポートされません。

    セキュリティに関する注意セキュリティに関する注意

    EXECUTE ステートメントを使用して文字列を実行すると、SQL インジェクション攻撃が容易になります。代わりにパラメータを指定して sp_executesql を使用することをお勧めします。