我不擅长 SQL Server 2000。我有一个以逗号分隔的 id 列表。我需要查看该 ID 是否存在于表中。如果是这样,我想跳出循环,并将该 ID 保存在可以在存储过程中使用的变量中。这就是我现在正在尝试的:
DECLARE @coreID INT
SET @coreID=NULL
DECLARE @itemID NVARCHAR(50)
DECLARE itemCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT [String] AS 'itemID' FROM dbo.SplitListIntoTable(@myIDs)
OPEN itemCursor
FETCH NEXT FROM itemCursor INTO @itemID
WHILE @@FETCH_STATUS = 0 BEGIN
-- If @itemID EXISTS IN MyTable set @coreID=@itemID and Break. How do I do this?
FETCH NEXT FROM itemCursor INTO @itemID
END
CLOSE itemCursor
DEALLOCATE itemCursor
谢谢你!
理想情况下,您不应该使用光标,因为性能不会很好。如果您可以将其作为基于集合的语句来执行,请改为这样做,也许像这样:
SELECT TOP 1 @CoreID = [String]
FROM dbo.SplitListIntoTable(@myIDs) x
JOIN MyTable t ON x.[String] = t.ID
但是,如果您确实有理由使用游标,则可以使用BREAK http://msdn.microsoft.com/en-us/library/aa260676(SQL.80).aspx跳出 WHILE 循环的语句
e.g.
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS(SELECT * FROM MyTable WHERE Id = @ItemID)
BEGIN
SET @CoreId = @ItemId
BREAK
END
FETCH NEXT FROM itemCursor INTO @itemID
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)