DECLARE @tag VARCHAR(MAX)
DECLARE @TagID as INT;
DECLARE tag_cursor CURSOR
FOR
SELECT tagname FROM #temptag
FOR READ ONLY
OPEN tag_cursor
FETCH NEXT FROM tag_cursor INTO @tag
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS (SELECT * FROM Tag WHERE TagName=@tag)
BEGIN
SELECT @TagID = TagID FROM Tag WHERE TagName = @tag
Insert into NoteTags(NoteID,TagID) values (@NoteID,@TagID)
END
ELSE
BEGIN
INSERT INTO Tag
SELECT @tag FROM #temptag
SELECT @TagID = SCOPE_IDENTITY();
Insert into NoteTags(NoteID,TagID) values (@NoteID,@TagID)
END
FETCH NEXT FROM tag_cursor INTO @tag
END
CLOSE tag_cursor
DEALLOCATE tag_cursor
我正在使用 XML 将参数传递给过程,我创建了一个临时表并将 XML 中的所有值存储到其中。然后我写了 Cursor 来检查表中是否已经存在值。
如果值不可用,将插入记录。
问题:如果我从 XML 中发送两个值,比如我的表中不存在的 IND, USA,则重复的记录被插入到表中。
谁能告诉我我的代码犯了什么错误。
修改后..
BEGIN
INSERT INTO Tag(TagName) values(@tag);
SELECT @TagID = IDENT_CURRENT('Tag');
Insert into NoteTags(NoteID,TagID) values (@NoteID,@TagID)
END