T-SQL游标,变量在循环内不可见
我不确定这里出了什么问题,请帮忙 我试图在结果集上循环,并使用集合中的id来执行另一个select查询T-SQL游标,变量在循环内不可见,sql,sql-server-2008,Sql,Sql Server 2008,我不确定这里出了什么问题,请帮忙 我试图在结果集上循环,并使用集合中的id来执行另一个select查询 DECLARE @MyCursor CURSOR; DECLARE @ID int; DECLARE @Name varchar(200) BEGIN SET @MyCursor = CURSOR FOR SELECT ID, Name FROM UserGroups OPEN @MyCursor FETCH @MyCursor INTO @ID, @Name; W
DECLARE @MyCursor CURSOR;
DECLARE @ID int;
DECLARE @Name varchar(200)
BEGIN
SET @MyCursor = CURSOR FOR
SELECT ID, Name FROM UserGroups
OPEN @MyCursor
FETCH @MyCursor INTO @ID, @Name;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT * FROM ErrorToNotify INNER JOIN ErrorMessages ON
ErrorToNotify.ErrMsgID = ErrorMessages.ID
INNER JOIN InterfaceErrors ON
InterfaceErrors.ErrMessageID = ErrorMessages.ID
WHERE UserGroupID = @ID
FETCH NEXT FROM @MyCursor
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
在循环之前和循环结束时,使用
将下一步从@MyCursor提取到@ID、@Name
编辑
我的答案解决了语法错误,但正确的方法是不使用游标。检查Rahul的答案。使用
将下一步从@MyCursor提取到@ID、@Name
循环之前和循环末尾
编辑
我的答案解决了语法错误,但正确的方法是不使用游标。查看Rahul的答案。这里当然不需要光标,只需要与
用户组进行另一个额外的连接,如下表所示。此外,为什么要在游标中提取Name
列,因为您没有在任何地方使用它
SELECT * FROM ErrorToNotify
INNER JOIN ErrorMessages ON ErrorToNotify.ErrMsgID = ErrorMessages.ID
INNER JOIN InterfaceErrors ON InterfaceErrors.ErrMessageID = ErrorMessages.ID
INNER JOIN UserGroups ON ErrorToNotify.UserGroupID = UserGroups.ID;
当然,这里不需要游标,只需要与UserGroups
表进行另一个额外的连接,如下所示。此外,为什么要在游标中提取Name
列,因为您没有在任何地方使用它
SELECT * FROM ErrorToNotify
INNER JOIN ErrorMessages ON ErrorToNotify.ErrMsgID = ErrorMessages.ID
INNER JOIN InterfaceErrors ON InterfaceErrors.ErrMessageID = ErrorMessages.ID
INNER JOIN UserGroups ON ErrorToNotify.UserGroupID = UserGroups.ID;
非常感谢你。我会在几分钟内接受你的回答。非常感谢。将在几分钟内接受您的回答。请发布运行查询时收到的错误消息。请发布运行查询时收到的错误消息。是,正确。但我需要在组上循环,因为我对每个组有不同的选择,这只是一个例子。Tnx寻求帮助。是的,正确。但我需要在组上循环,因为我对每个组有不同的选择,这只是一个例子。Tnx寻求帮助。