さまざまな問題を抱えています。まず、特定の @@FETCH_STATUS 値を使用しているのはなぜですか? @@FETCH_STATUS =0 にする必要があります。
第二に、内側のカーソル into を選択していません。 なんでも。そして、このようにすべてのフィールドを選択するような状況は考えられません - スペルアウトしてください!
これがサンプルです。フォルダーには、Attend の外部キーでもある「ClientID」の主キーがあります。フォルダの ClientID ごとに分類されたすべての参加 UID を出力しているだけです:
Declare @ClientID int;
Declare @UID int;
DECLARE Cur1 CURSOR FOR
SELECT ClientID From Folder;
OPEN Cur1
FETCH NEXT FROM Cur1 INTO @ClientID;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Processing ClientID: ' + Cast(@ClientID as Varchar);
DECLARE Cur2 CURSOR FOR
SELECT UID FROM Attend Where [email protected];
OPEN Cur2;
FETCH NEXT FROM Cur2 INTO @UID;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Found UID: ' + Cast(@UID as Varchar);
FETCH NEXT FROM Cur2 INTO @UID;
END;
CLOSE Cur2;
DEALLOCATE Cur2;
FETCH NEXT FROM Cur1 INTO @ClientID;
END;
PRINT 'DONE';
CLOSE Cur1;
DEALLOCATE Cur1;
最後に、よろしいですか ストアドプロシージャでこのようなことをしたいですか?ストアド プロシージャを悪用するのは非常に簡単で、問題の特徴付けに問題が反映されることがよくあります。たとえば、私が示したサンプルは、標準の選択呼び出しを使用してはるかに簡単に実現できます。