ホームページ > データベース > mysql チュートリアル > 動的 SQL クエリの結果を SQL Server の変数にキャプチャするにはどうすればよいですか?

動的 SQL クエリの結果を SQL Server の変数にキャプチャするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-11 11:06:42
オリジナル
513 人が閲覧しました

How to Capture Dynamic SQL Query Results into a Variable in SQL Server?

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>
ログイン後にコピー

詳細な説明は次のとおりです:

  1. 結果変数の宣言: クエリの出力を保持するために、@cntINT として宣言します。

  2. 動的 SQL を変更します: SELECT ステートメントは、COUNT(*) の結果を @cnt に割り当てるように調整されます: SELECT @cnt=COUNT(*).

  3. OUTPUT で sp_executesql を使用します: sp_executesql は、OUTPUT パラメーターとともに使用され、@cnt がクエリから値を受け取ることを指定します。 パラメーター宣言 @cnt int OUTPUT.

    に注意してください。
  4. 結果の取得: 実行後、@cnt にはカウントが含まれます。 SELECT @count は保存された値を表示します。

この洗練されたメソッドは、動的 SQL の結果を効率的に変数に取り込み、ストアド プロシージャ内でさらなる処理や戻りを可能にします。

以上が動的 SQL クエリの結果を SQL Server の変数にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート