ホームページ >データベース >mysql チュートリアル >T-SQL クエリ結果を反復処理し、行ごとにストアド プロシージャを実行するにはどうすればよいですか?

T-SQL クエリ結果を反復処理し、行ごとにストアド プロシージャを実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-01 08:03:09885ブラウズ

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

クエリ結果による T-SQL ループ

テーブルから ID のリストを取得するクエリがあるとします。

SELECT @id=table.id FROM table

次に、ID と別の ID を渡して、行ごとにストアド プロシージャを実行する必要があります。 value:

EXEC stored_proc @varName=@id, @otherVarName='test'

T-SQL では、CURSOR を使用してこれを実現できます:

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid

このスクリプトでは:

  • 3 つの変数を宣言します: @id (INT)、@name (NVARCHAR(100))、およびという名前の CURSOR @getid.
  • テーブル table から ID 列と名前列を選択する CURSOR に @getid を設定します。
  • CURSOR を開き、最初の行をフェッチし、結果を @ に保存します。 id と @name.
  • @@FETCH_STATUS 値が 0 (つまり、
  • ループ内でストアド プロシージャを実行し、@id、@otherVarName パラメーターのリテラル値 'test'、および @varForName のフェッチされた名前の値を渡します。
  • 次の行を取得し、結果を @id と @name に保存します。
  • それ以上ない場合

このスクリプトを使用すると、クエリ結果をループし、行ごとにストアド プロシージャを実行し、データに基づいて変数名と値を更新できます。クエリ。

以上がT-SQL クエリ結果を反復処理し、行ごとにストアド プロシージャを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。