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 nvarchar(75)', @city = @city</code>
このコード スニペットは COUNT(*)
クエリを動的に生成しますが、結果はキャプチャされません。 これに対処するには、次のような修正されたアプローチが必要です。
<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 nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
詳細な説明は次のとおりです:
結果変数の宣言: クエリの出力を保持するために、@cnt
を INT
として宣言します。
動的 SQL を変更します: SELECT
ステートメントは、COUNT(*)
の結果を @cnt
に割り当てるように調整されます: SELECT @cnt=COUNT(*)
.
OUTPUT で sp_executesql
を使用します: sp_executesql
は、OUTPUT
パラメーターとともに使用され、@cnt
がクエリから値を受け取ることを指定します。 パラメーター宣言 @cnt int OUTPUT
.
結果の取得: 実行後、@cnt
にはカウントが含まれます。 SELECT @count
は保存された値を表示します。
この洗練されたメソッドは、動的 SQL の結果を効率的に変数に取り込み、ストアド プロシージャ内でさらなる処理や戻りを可能にします。
以上が動的 SQL クエリの結果を SQL Server の変数にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。