/*
USE myDB 
GO
*/
DECLARE @fieldtype sysname
SET @fieldtype='varchar'--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
    +N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id 
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    AND c.xusertype=t.xusertype
    AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'这段代码是[潇洒老乌龟]写的
这段代码是否在查询分析器里执行下,就可以了.

解决方案 »

  1.   

    我用的是sql server2005 express,我SSMSE里新建了个SQL查询,在里面执行你的这段代码,它报错:Msg 16950, Level 16, State 2, Procedure sp_MSforeach_worker, Line 27
    目前没有为变量 '@local_cursor' 分配游标。
    Msg 16950, Level 16, State 2, Procedure sp_MSforeach_worker, Line 32
    目前没有为变量 '@local_cursor' 分配游标。
    Msg 16950, Level 16, State 2, Procedure sp_MSforeach_worker, Line 153
    目前没有为变量 '@local_cursor' 分配游标。
    Msg 16916, Level 16, State 1, Procedure sp_MSforeach_worker, Line 155
    名为 'hCForEachDatabase' 的游标不存在。
      

  2.   

    2005不行,2000可以
    2005的sp_MSforeach_Worker改写了