无风kiseki

博客园 首页 新随笔 联系 订阅 管理

 

--
 ----------创建临时表---------------------
 IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'A')
  DROP TABLE A

 CREATE TABLE [dbo].[A](
  [TableName] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
  [ColumnName] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL
 )

 DELETE FROM A
 ----------


 ----------遍历需要更改的字段--------------------- 
 DECLARE @ColumnName  nvarchar(100)
 DECLARE @strSQL   nvarchar(4000)
 
 DECLARE myCursor CURSOR
    FOR SELECT M.NAME,S.NAME AS ColumnName
   FROM sysobjects M
   INNER JOIN syscolumns S ON M.ID = S.ID
   WHERE M.xtype = 'U' AND LEFT(M.NAME,2) = 'ND'
    AND S.xtype IN(167, 231)
   ORDER BY M.NAME

 OPEN myCursor
 FETCH NEXT FROM myCursor INTO @TableName,@ColumnName

 WHILE @@FETCH_STATUS = 0
 BEGIN
  
  --查询字段
  SET @strSQL = 'SELECT * FROM ' + @TableName + ' WHERE '+ @ColumnName +' LIKE ''%TBL_%'''
  SET @strSQL = 'IF EXISTS(' + @strSQL + ')' + CHAR(13) + CHAR(10)
  SET @strSQL = @strSQL + 'INSERT INTO A VALUES('''+@TableName+''','''+@ColumnName+''') '
  SET @strSQL = @strSQL + CHAR(13) + CHAR(10)
  SET @strSQL = @strSQL + CHAR(13) + CHAR(10)
  
  EXEC SP_EXECUTESQL @strSQL
  
  --print @strSQL    

  FETCH NEXT FROM myCursor INTO @TableName,@ColumnName
 END

 CLOSE myCursor
 DEALLOCATE myCursor
 
 -----------------------生成更新语句---------------------------
 DECLARE myCursor CURSOR
    FOR SELECT TableName,ColumnName FROM A ORDER BY TABLENAME

 OPEN myCursor
 FETCH NEXT FROM myCursor INTO @TableName,@ColumnName

 WHILE @@FETCH_STATUS = 0
 BEGIN
  
  
  SET @strSQL = 'UPDATE ' + @TableName + ' SET ' + @ColumnName + ' = REPLACE('+@ColumnName+',''TBL_'',''UT_'') '    
  EXEC SP_EXECUTESQL @strSQL
  
  --PRINT @TableName + '~~~~~~' + @ColumnName
  --PRINT @strSQL
  
  FETCH NEXT FROM myCursor INTO @TableName,@ColumnName
 END

 CLOSE myCursor
 DEALLOCATE myCursor


----------------------更新视图-----------------


 
 ---删除临时表
-- IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'A')
--  DROP TABLE A

posted on 2009-07-04 22:26  无风kiseki  阅读(1476)  评论(0编辑  收藏  举报