循环中的MS SQL更新

Dav*_*vid 0 t-sql sql-server sql-server-2005

我试图实现这样的事情:

DECLARE @id int
declare @cont varchar(max)
declare @temp varchar(max)
DECLARE curs CURSOR FOR SELECT id, [content] FROM [dbo].[Contents]

OPEN curs

FETCH NEXT FROM curs into @id, @cont
WHILE @@FETCH_STATUS = 0
   BEGIN
      SET @temp = replace(@cont, @param_ReplaceThis, @param_WithReplacement)

      update [dbo].[Contents]
         set [Content] = @temp
        where id = @id;

      FETCH NEXT FROM curs into @id, @cont;
   END;
CLOSE curs;
DEALLOCATE curs;
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误消息,它不允许在函数中使用'UPDATE'...我只是认为这些东西在Oracle上正常工作...

Mic*_*ski 6

为什么使用游标来进行简单的设置操作呢?

UPDATE [dbo].[Contents] 
SET [Content] = replace([Content], @param_ReplaceThis, @param_WithReplacement)
Run Code Online (Sandbox Code Playgroud)

进一步回答您的问题,您可以在DECLARE CURSOR语句中添加FOR UPDATE [OF column_name,...].如果省略[OF column name,...],则所有列都是可更新的.