T-SQL の動的 SQL: パラメーター化されたパススルー
T-SQL では、動的 SQL はクエリを構築するための便利なツールになります。実行時。ただし、動的 SQL ステートメント内でパラメーターを処理する方法を理解することが重要です。
次の動的クエリを考えてみましょう。
CREATE PROCEDURE [dbo].[sp_Test1] /* 'b0da56dc-fc73-4c0e-85f7-541e3e8f249d' */ ( @p_CreatedBy UNIQUEIDENTIFIER ) AS DECLARE @sql NVARCHAR(4000) SET @sql = ' DECLARE @p_CreatedBY UNIQUEIDENTIFIER SELECT DateTime, Subject, CreatedBy FROM ( SELECT DateTime, Subject, CreatedBy, ROW_NUMBER() OVER(ORDER BY DateTime ) AS Indexing FROM ComposeMail WHERE CreatedBy = @p_CreatedBy /* <--- the problem is in this condition */ ) AS NewDataTable '; EXEC sp_executesql @sql
このクエリは、 @p_CreatedBy パラメーター。ただし、パラメーターを指定してこのクエリを実行すると、結果は返されません。
この問題を解決するには、次のコードに示すように、パラメーターを sp_executesql に渡すことが重要です。
... WHERE CreatedBy = @p ... EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
この更新されたコードでは、@p パラメーターは UNIQUEIDENTIFIER タイプとして定義され、その値は @p_CreatedBY パラメーターに設定されます。これにより、パラメータが動的 SQL ステートメントに適切に渡されることが保証されます。
この手法に従うことで、T-SQL の動的 SQL クエリ内でパラメータを効果的に使用できます。
以上がT-SQL の動的 SQL でパススルー クエリを適切にパラメータ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。