当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 如何同时对多个表或列操作

MSSQL
SQL Server中选出指定范围行的SQL语句写法
Microsoft SQL Server 2000安装问题集锦
修改SQL Server 2005 sa用户密码的方法
SQL Server数据库查询优化的常用方法总结
两种与SQL Server数据库交换数据的方法
Sun正式发布MySQL 5.1版 简化数据库应用
使用SQL Server 2008中对象相关性
SQL注入防御:用三种策略应对SQL注入攻击
SQL Server 2005 SP3正式版
MySQL数据库中使用GRANT语句增添新用户
讲解数据库加密技术的功能特性与实现方法
如何在SQL Server数据库中加密数据
30步检查SQL Server安全列表
在SQL Server数据库开发中的十大问题
向外扩展SQL Server 实现更高扩展性
SQL Server 2005 五个动态管理对象
从算法入手讲解SQL Server的典型示例
如何解决SQLServer占内存过多的问题
SQL指令植入式攻击的危害及其防范措施
SQL游标原理和使用方法

MSSQL 中的 如何同时对多个表或列操作


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 116 ::
收藏到网摘: n/a

 通过使用这个存储过程,你就可以方便的对数据库中具有一定规则的或者全部表,对这里的字段进行各种操作,具体看示例!
CREATE PROCEDURE SP_execSQLonDB
 (@TABLENAME VARCHAR(50),        --表名条件
  @COLUMNNAME VARCHAR(50),       --字段条件
  @SQL NVARCHAR(4000),           --执行的SQL
  @INCLUDE_NTI CHAR(1) = ’N’)    --是否包含Text,NText,Image数据类型
AS 
BEGIN
 --Variable Declaration 
 --变量定义
 DECLARE @strSQL NVARCHAR(4000)
 DECLARE @SQL2 NVARCHAR(4000)
 DECLARE @sTableName VARCHAR(200)
 DECLARE @sColumnName VARCHAR(200)
DECLARE @SQLTemp NVARCHAR(4000)
 --Check whether to include TEXT, NTEXT, IMAGE data types
 --检查是否需要包含 Text,NText,Image数据类型
 SET @INCLUDE_NTI = UPPER(LTRIM(RTRIM(@INCLUDE_NTI)))
 IF @INCLUDE_NTI NOT IN (’N’, ’Y’)
  SET @INCLUDE_NTI = ’N’
 --Construct a cursor to get the list of Table/Column Names according to the @TABLENAME and @COLUMNNAME parameters.
 --创建一个游标来读取表名和列名的列表,这里列表由参数@TABLENAME 和 @COLUMNNAME 决定
 SET @strSQL = N’DECLARE TabColCursor CURSOR FOR SELECT RTRIM(LTRIM(SU.name)) + ’’.’’ + LTRIM(RTRIM(SO.name)), SC.name FROM sysobjects SO INNER JOIN syscolumns SC ON SO.id = SC.id INNER JOIN sysusers SU ON SO.uid = SU.uid WHERE SO.xtype = ’’U’’ ’
 --Filter out Text/NText/Image data types if it is not included
 --假如不包含Text/NText/Image数据类型,把他们过滤掉
 IF @INCLUDE_NTI = ’N’ 
  --In SysColumns sytem table XTYPE column corresponds to Column Data Type
  SET @strSQL = @strSQL + ’ AND SC.xtype NOT IN (35, 99, 34) ’
 --Add the TABLE(S) name i.e. filter if it is supplied
 --假如有提供表名参数,把它写入过滤条件中
 IF @TABLENAME IS NOT NULL AND ltrim(rtrim(@TABLENAME)) <> ’’
 BEGIN
  SET @TABLENAME = REPLACE(@TABLENAME, ’, ’, ’,’)
  SET @strSQL = @strSQL + ’ AND (SO.name LIKE ’’’ + REPLACE(@TABLENAME, ’,’, ’’’ OR SO.name LIKE ’’’) + ’’’)’
  SET @SQLTemp= ’ AND (SO.name LIKE ’’’ + REPLACE(@TABLENAME, ’,’, ’’’ OR SO.name LIKE ’’’) + ’’’)’
 END
 --Add the COLUMN(S) name i.e. filter if it is supplied
 --假如有提供列名参数,把它写入过滤条件中
 IF @COLUMNNAME IS NOT NULL AND ltrim(rtrim(@COLUMNNAME)) <> ’’
 BEGIN
  SET @COLUMNNAME = REPLACE(@COLUMNNAME, ’, ’, ’,’)
  SET @strSQL = @strSQL + ’ AND (SC.name LIKE ’’’ + REPLACE(@COLUMNNAME, ’,’, ’’’ OR SC.name LIKE ’’’) + ’’’)’
 END