動的 SQL 結果を SQL Server 変数に保存する
ストアド プロシージャ内で頻繁に使用される動的 SQL は、実行時に SQL ステートメントを実行する柔軟性を提供し、適応性のあるパラメータ化されたクエリの作成を可能にします。 ただし、これらの動的クエリの結果を変数に取り込むには、独特の課題が生じます。
チャレンジ
動的 SQL を使用するストアド プロシージャを考えてみましょう。
DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city
目的は、COUNT(*)
の結果を変数に保存することです。 この結果に直接アクセスするのは簡単ではありません。
解決策: OUTPUT パラメーター
解決策は、動的 SQL で OUTPUT パラメーターを利用することです。 以下はストアド プロシージャの改良版です:
DECLARE @sqlCommand NVARCHAR(1000) DECLARE @count INT DECLARE @city VARCHAR(75) SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count
この改善されたアプローチには、次の重要な変更が組み込まれています。
@count
が宣言されています。COUNT(*)
をパラメータ @cnt
に割り当てます。sp_executesql
が呼び出され、@cnt
を OUTPUT パラメーターとして明示的に定義します。@count
の値が選択され、取得された結果が表示されます。この方法では、動的 SQL の結果を効果的に変数に取り込み、ストアド プロシージャを複雑なデータ取得タスクに適したものにします。
以上が動的 SQL の結果を SQL Server の変数に取り込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。