SQL Server ストアド プロシージャでの動的 SQL からの結果の取得
ストアド プロシージャ内で動的 SQL を操作するには、多くの場合、クエリの結果をキャプチャする必要があります。 これは難しいかもしれませんが、動的クエリ結果をストアド プロシージャ変数に効率的に取得するための解決策を次に示します。
次のようなクエリを動的に実行する必要があるとします。
<code class="language-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 VARCHAR(75)', @city = @city</code>
直接実行すると、結果が変数に保存されません。 出力をキャプチャするには、コードを次のように変更します。
<code class="language-sql">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 VARCHAR(75), @cnt INT OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
この改良されたアプローチでは、次の重要な要素が使用されます。
@cnt
変数: 動的 SQL は、COUNT(*)
の結果をローカル変数 @cnt
に割り当てます。OUTPUT
キーワード: OUTPUT
キーワードは、@cnt
を出力パラメーターとして指定します。sp_executesql
パラメータ: sp_executesql
は、@city
入力パラメータと @cnt
出力パラメータの両方を受け取るようになりました。SELECT @count
は取得した結果を表示します。 この変数には、動的クエリによって返されたカウントが保持されるようになりました。このメソッドは、ストアド プロシージャ内で動的 SQL からの結果を処理する堅牢な方法を提供し、正確かつ効率的なデータ取得を保証します。
以上が動的 SQL クエリの結果を SQL Server のストアド プロシージャ変数にキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。