JoeSnyderJr
asked on
How to create Cursor Variable
I have create the following cursor and am attempting to run via MS Studio Express. When execute I get the following error but not sure how to correct: Msg 16948, Level 16, State 4, Line 40
The variable '@MasterMenuNumber' is not a cursor variable, but it is used in a place where a cursor variable is expected.
The variable '@MasterMenuNumber' is not a cursor variable, but it is used in a place where a cursor variable is expected.
DECLARE @MasterMenuNumber Int;
DECLARE MyCursor CURSOR LOCAL
FAST_FORWARD
FOR
SELECT MasterMenuNumber
FROM F01.MstrMenu
OPEN MyCursor
FETCH NEXT FROM MyCursor
INTO @MasterMenuNumber
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM F01.BamRecs FROM F01.BldAMenu
WHERE BamRecs.BAMenuNumber=BldAMenu.BAMenuNumber AND BldAMenu.MasterMenuNumber= @MasterMenuNumber
AND BldAMenu.DietNumber not in
(SELECT DietNumber from F01.MMDiets where MasterMenuNumber=@MasterMenuNumber);
DELETE FROM F01.BldAMenu WHERE MasterMenuNumber= @MasterMenuNumber
AND BAMenuNumber not in (SELECT BAMenuNumber FROM F01.BamRecs);
DELETE FROM F01.Snacks FROM F01.SnackRec
WHERE SnackRec.SNAMenuNumber=Snacks.SNAMenuNumber AND Snacks.MasterMenuNumber= @MasterMenuNumber
AND Snacks.DietNumber not in
(SELECT DietNumber from F01.MMDiets where MasterMenuNumber=@MasterMenuNumber);
DELETE FROM F01.Snacks WHERE MasterMenuNumber= @MasterMenuNumber
AND SNAMenuNumber not in (SELECT SNAMenuNumber FROM F01.SnackRec);
FETCH NEXT FROM MyCursor
INTO @MasterMenuNumber
END
CLOSE MyCursor
DEALLOCATE MyCursor
DEALLOCATE @MasterMenuNumber
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
take a look at
http://technet.microsoft.com/en-us/library/ms181765.aspx
http://technet.microsoft.com/en-us/library/ms181765.aspx
sorry, I have a missing, wrong window :)
ASKER
Thanks, you even anticipated my DeAllocate question for the @variable. Thanks for quick response
Were you suggesting by your additional link that a case statement would be alternative to my using a cursor in this situation??
Were you suggesting by your additional link that a case statement would be alternative to my using a cursor in this situation??
that is wrong post, but you can change to use query to delete
delete yourtable
from yourtable
inner join ....
where ....
delete yourtable
from yourtable
inner join ....
where ....
http://msdn.microsoft.com/en-us/library/aa258842(SQL.80).aspx