ホームページ >データベース >mysql チュートリアル >カーソルのないテーブルの各行に対してストアド プロシージャを呼び出すにはどうすればよいですか?

カーソルのないテーブルの各行に対してストアド プロシージャを呼び出すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-06 00:03:40581ブラウズ

How Can I Call a Stored Procedure for Each Row in a Table Without Cursors?

カーソルを使用しない各行のストアド プロシージャの呼び出し

テーブル内のすべての行に対してストアド プロシージャを呼び出す必要がある場合、カーソルの使用を避けたい場合は、セットベースのアプローチを利用できます。ガイドとなるコード スニペットは次のとおりです。

-- Declare & init (2008 syntax)
DECLARE @CustomerID INT = 0

-- Iterate over all customers
WHILE (1 = 1) 
BEGIN  

  -- Get next customerId
  SELECT TOP 1 @CustomerID = CustomerID
  FROM Sales.Customer
  WHERE CustomerID > @CustomerId 
  ORDER BY CustomerID

  -- Exit loop if no more customers
  IF @@ROWCOUNT = 0 BREAK;

  -- call your sproc
  EXEC dbo.YOURSPROC @CustomerId

END

このコードはテーブルを反復処理し、次の顧客の ID を取得し、その ID をパラメータとしてストアド プロシージャ YOURSPROC を呼び出します。処理する顧客がなくなるまでこのループが続きます。

以上がカーソルのないテーブルの各行に対してストアド プロシージャを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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