快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

通过使用这个存储过程,你就可以方便的对数据库中具有一定规则的或者全部表,对这里的字段进行各种操作,详细看示例!
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
--Execute the constructed "Cursor Declaration" string
--执行定义游标的SQL语句
EXECUTE sp_executesql @strSQL

IF @@ERROR > 0
BEGIN
PRINT ’Error while declaring the Cursor. Please check out the parameters supplied to the Procedure’
RETURN -1
END
--Database Transaction.
--标记一个显式本地事务的起始点
BEGIN TRANSACTION gDatabaseTrans
--Open the cursor
--打开游标
OPEN TabColCursor
--Fetch te Table, Column names to variables
--用游标取出标名、列名对应到参数
FETCH NEXT FROM TabColCursor
INTO @sTableName, @sColumnName
返回类别: 教程
上一教程: SQL SERVER关于字段中的数据类型
下一教程: 将EXCEL中的数据导入到SQL SERVER 2000数据库中

您可以阅读与"如何同时对多个表或列操作"相关的教程:
· 如何同时对多个表或列操作
· 跟我学SQL:(四)查询多个表格
· 如何使用系统治理员帐户治理多个开发人员?
· 用INNER JOIN语法联接多个表建记录集
· 如何用批处理对 MYSQL 进行数据操作
    微笑服务 优质保证 索取样品