sql >> データベース >  >> RDS >> Sqlserver

SQL Server はストアド プロシージャで EXEC/sp_executesql または単純な SQL を使用しますか?

    ここでは、動的 SQL を使用する理由はありません。 行う場合 動的 SQL を使用する必要がある場合は、sp_executesql を検討する必要があります EXEC() より優先度が高い .次のようなさまざまな理由があります。

    <オール> <リ>

    sp_executesql クエリ プランを再利用する可能性が高い (動的 SQL を参照) - EXEC(@SQL) 対 EXEC SP_EXECUTESQL(@SQL) );

    <リ>

    厳密に型指定されたパラメーターを sp_executesql に渡す方がはるかに簡単です (文字列を連結するよりも SQL インジェクションを阻止するほうがよい);そして、

    <リ>

    また、動的 SQL スコープ内から変数を取得して呼び出しスコープに戻すこともできます。例:

    これはあまり有用な例ではありませんが、動的文字列を実行する際によくある問題です。しかし、もっと重要なことは、最初の手段としてではなく、必要な場合にのみ動的 SQL を考慮する必要があるということです。




    1. sqlplus入力ファイルのテーブル名のパラメータ化

    2. unixODBCドライバーマネージャーの非システムバージョンでのRStudioの使用

    3. PostgreSQLのタイムスタンプから日付を取得する

    4. MySQLの既存の列にnull以外の制約を追加する方法