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上正常工作...
为什么使用游标来进行简单的设置操作呢?
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,...],则所有列都是可更新的.