我收到此错误。我想更新表中900个项目的200万条记录。
这是我的光标。
DECLARE @salesgroup varchar(10);
DECLARE @category varchar(10);
DECLARE @subcategory varchar(10);
DECLARE @itemname varchar(10);
DECLARE cursor1 CURSOR LOCAL FAST_FORWARD FOR
(SELECT salesgroup, category, subcategory, itemname
FROM poii);
OPEN cursor1;
FETCH NEXT FROM cursor1 INTO @salesgroup, @category, @subcategory, @itemname;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE MNB
SET salesgroup = @salesgroup,
category = @category,
subcategory= @subcategory,
@itemname = @itemname
WHERE itemname = @itemname;
FETCH NEXT FROM cursor1 INTO @salesgroup, @category, @subcategory, @itemname;
END
CLOSE cursor1;
DEALLOCATE cursor1
答案 0 :(得分:0)
不要使用光标。只需使用:
UPDATE MNB
SET salesgroup = poli.salesgroup,
category = poli.category,
subcategory= poli.subcategory,
itemname = poli.itemname
FROM MNB JOIN
poli
ON MNB.itemname = poli.itemname;
学习在适当的地方使用基于集合的操作。如果您想练习使用游标,请将它们用于执行存储过程之类的操作。
答案 1 :(得分:0)
您的查询很好(语法)。你想尝试逐行运行吗?这不起作用,因为那样你就不再定义你的变量了。
此外,UPDATE MNB
SET salesgroup = @salesgroup,
category = @category,
subcategory= @subcategory,
@itemname = @itemname
应该做什么:
{{1}}