私のSQLコードでは、テーブル(A)を宣言し、データベーステーブル(B)からそのテーブルにいくつかの行を挿入しました。次に、Aから挿入された行を取得し、それをCURSORに配置する必要があります。実行した後、FETCH NEXT
静止画は@@FETCH_STATUS
です-1
。ただし、の期待値@@FETCH_STATUS
はです0
。質問の下に簡略化されたコードを配置しています。
このコードの何が問題になっているのかわかりますか?宣言されたテーブルを使用しCURSOR
てSQLにを入力できますか、またはデータベースに作成されたテーブルからカーソルを入力する必要がありますか。
// This is a code that goes inside a Stored Procedure.
AS
DECLARE A TABLE (.........)// A table has same fields in table B
DECLARE s INT
WHILE EXISTS ( SELECT * FROM B WHERE ......)
BEGIN
BEGIN TRAN
INSERT INTO A SELECT TOP 10 (....)FROM B WITH (UPDLOCK, HOLDLOCK) WHERE ....
SELECT s = count(*) from A // this returns some value which means inserting is working
DECLARE dataSet CURSOR FOR (SELECT..... FROM A)
OPEN dataSet
FETCH NEXT FROM dataSet INTO ...
WHILE @@FETCH_STATUS = 0 // coming value for this is -1
BEGIN
//Code goes here
FETCH NEXT FROM dataSet INTO ...
END
CLOSE dataSet
DEALLOCATE dataSet
DELETE FROM A
COMMIT TRAN
END