SQL格納プロセス+ラベル循環ロット()操作データ
3115 ワード
私が集めたのは、とても役に立ちました。
1.ビーコンサイクルでMember Acceountテーブルのデータを更新、削除する
A.簡単なクルーズにFETCHを使用する
以下の例はPerson.Contectの表の名字で、アルファベットBの先頭の行で簡単なラベルを宣言し、FETCH NEXTを使ってこれらの行を一つ一つ抽出します。FETCH文は、DECLARE CURSORで指定された列の値を1行の結果セットとして返します。
B.FETCHを使って変数に値を入れます。
以下の例は例Aと同様であるが、FETCH文の出力は直接クライアントに戻るのではなく、ローカル変数に格納される。PRINT文は、変数を単一の文字列にまとめてクライアントに返します。
1.ビーコンサイクルでMember Acceountテーブルのデータを更新、削除する
DECLARE My_Cursor CURSOR --
FOR (SELECT * FROM dbo.MemberAccount) --
OPEN My_Cursor; --
FETCH NEXT FROM My_Cursor ; --
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --
FETCH NEXT FROM My_Cursor; --
END
CLOSE My_Cursor; --
DEALLOCATE My_Cursor; --
GO
2.ビーコンサイクルを利用して、Member Serviceテーブルのデータを更新する(各ユーザが購入したサービスを更新する時間)DECLARE @UserId varchar(50)
DECLARE My_Cursor CURSOR --
FOR (SELECT UserId FROM dbo.MemberAccount) --
OPEN My_Cursor; --
FETCH NEXT FROM My_Cursor INTO @UserId; -- ( MemberAccount UserId @UserId )
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @UserId; -- ( MemberAccount UserId)
UPDATE dbo.MemberService SET ServiceTime = DATEADD(Month, 6, getdate()) WHERE UserId = @UserId; --
FETCH NEXT FROM My_Cursor INTO @UserId; -- ( MemberAccount UserId @UserId )
END
CLOSE My_Cursor; --
DEALLOCATE My_Cursor; --
GO
sql記憶過程でどのようにデータセットを循環しますか?A.簡単なクルーズにFETCHを使用する
以下の例はPerson.Contectの表の名字で、アルファベットBの先頭の行で簡単なラベルを宣言し、FETCH NEXTを使ってこれらの行を一つ一つ抽出します。FETCH文は、DECLARE CURSORで指定された列の値を1行の結果セットとして返します。
USE AdventureWorks
GO
DECLARE contact_cursor CURSOR FOR
SELECT LastName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName
OPEN contact_cursor
-- Perform the first fetch.
FETCH NEXT FROM contact_cursor
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM contact_cursor
END
CLOSE contact_cursor
DEALLOCATE contact_cursor
GO
B.FETCHを使って変数に値を入れます。
以下の例は例Aと同様であるが、FETCH文の出力は直接クライアントに戻るのではなく、ローカル変数に格納される。PRINT文は、変数を単一の文字列にまとめてクライアントに返します。
USE AdventureWorks
GO
-- Declare the variables to store the values returned by FETCH.
DECLARE @LastName varchar(50), @FirstName varchar(50)
DECLARE contact_cursor CURSOR FOR
SELECT LastName, FirstName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName, FirstName
OPEN contact_cursor
-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement.
FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- Concatenate and display the current values in the variables.
PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName
-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName
END
CLOSE contact_cursor
DEALLOCATE contact_cursor
GO