Имате различни проблеми. Първо, защо използвате конкретните си стойности @@FETCH_STATUS? Просто трябва да е @@FETCH_STATUS =0.
Второ, вие не избирате вашия вътрешен курсор в нещо. И не мога да се сетя за обстоятелства, при които бихте избрали всички полета по този начин - изпишете ги!
Ето една проба, която трябва да използвате. Folder има първичен ключ „ClientID“, който също е външен ключ за Attend. Просто отпечатвам всички UID на Attend, разбити по Folder ClientID:
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;
И накрая, СИГУРЕН ли си искате ли да правите нещо подобно в съхранена процедура? Много е лесно да се злоупотребява със запомнените процедури и често отразява проблеми при характеризирането на вашия проблем. Примерът, който дадох, например, може да бъде много по-лесно изпълнен чрез стандартни избирателни повиквания.