|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
通过使用这个存储过程,你就可以方便的对数据库中具有一定规则的或者全部表,对这里的字段进行各种操作,详细看示例! 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 本新闻共2 本新闻共2页,当前在第1页 1 2 返回类别: 教程 上一教程: 无数据库日志文件恢复数据库方式两则(二) 下一教程: SQL数据操作基础(初级)2 您可以阅读与"如何同时对多个表或列操作"相关的教程: · 如何同时对多个表或列操作 · 如何使用系统治理员帐户治理多个开发人员? · 用INNER JOIN语法联接多个表建记录集 · 跟我学SQL:(四)查询多个表格 · 如何用批处理对 MYSQL 进行数据操作 |
| 快精灵印艺坊 版权所有 |
首页 |
||