- 浏览: 61699 次
- 性别:
- 来自: 上海
最新评论
-
feipigzi:
我觉得文章内容不如改成四个字——“顾名思义”
FRAMESET和IFRAME各自的优点和缺点 -
yuchujin:
这个也太短了吧
FRAMESET和IFRAME各自的优点和缺点
问题的提出:每当新建一个数据表,要建立个UP_TableName的存储过程来实现表的INSERT UPDATE DELETE操作。如建立了个表是 WoolenDeliveDetail,更新表的存储过程是UP_WoolenDeliveDetail
CREATE PROCEDURE UP_WoolenDeliveDetail
@INTUpdateID INT,--为 -1 删除 0 修改 1新增
@INTDeDetailID INT,
@INTDeID INT,
@INTColorID INT,
@NVD1 NVARCHAR(20),
@NVD2 NVARCHAR(20),
@NVD3 NVARCHAR(20),
@NVD4 NVARCHAR(20),
@NVD5 NVARCHAR(20),
@NVD6 NVARCHAR(20),
@NVD7 NVARCHAR(20),
@NVD8 NVARCHAR(20),
@NVD9 NVARCHAR(20),
@NVD10 NVARCHAR(20)
AS
IF (@INTUpdateID=0)
Begin
UPDATE WoolenDeliveDetail SET DeID=@INTDeID,ColorID=@INTColorID,
D1=@NVD1,D2=@NVD2,D3=@NVD3,D4=@NVD4,D5=@NVD5,D6=@NVD6,
D7=@NVD7,D8=@NVD8,D9=@NVD9,D10=@NVD10
WHERE DeDetailID=@INTDeDetailID
End
ELSE IF (@INTUpdateID=1)
Begin
SET @INTDeDetailID=(Select ISNULL(MAX(DeDetailID),0) From WoolenDeliveDetail)+1
--取新的ID
INSERT INTO WoolenDeliveDetail (DeDetailID,DeID,ColorID,
D1,D2,D3,D4,D5,D6,D7,D8,D9,D10
) VALUES
(@INTDeDetailID,@INTDeID,@INTColorID,
@NVD1,@NVD2,@NVD3,@NVD4,@NVD5,@NVD6,@NVD7,@NVD8,@NVD9,@NVD10
)
End
ELSE
DELETE FROM WoolenDeliveDetail WHERE DeDetailID=@INTDeDetailID
GO
其他的常规的数据表更新存储过程与这存储过程结构差不多。有没有方法实现,新建一表后,执行一个通用的生成更新数据的存储过程,后生成该表的更新存储脚本??
解决方法:
用下面这个自动生成表的更新数据的存储过程:
CREATE PROCEDURE SP_CreateProcdure @TableName nvarchar(50) AS /* 功能: 自动生成表的更新数据的存储过程 如:当建立表MyTable后,执行SP_CreateProcdure ,生成表MyTable的数据更 新的存储过程UP_MyTable 设计: OK_008 时间: 2006-05 备注: 1、请在查询分析器上执行:EXEC SP_CreateProcdure TableName 2、由于生成的字符串长度合计很多时候存在>4000以上,所有只使用Print输出, 再Copy即可。 3、该方法能生成一般表的更新数据的存储过程,其中更新格式可以根据实际 情况修改。 设计方法: 1、提取表的各个字段信息 2、 ──┰─ 构造更新数据过程 ├─ 构造存储过程参数部分 ├─ 构造新增数据部分 ├─ 构造更新数据部分 ├─ 构造删除数据部分 3、分段PRINT 4、把输出来的结果复制到新建立存储过程界面中即可使用。 */ DECLARE @strParameter nvarchar(3000) DECLARE @strInsert nvarchar(3000) DECLARE @strUpdate nvarchar(3000) DECLARE @strDelete nvarchar(500) DECLARE @strWhere nvarchar(100) DECLARE @strNewID nvarchar(100) DECLARE @SQL_CreateProc nvarchar(4000) SET @SQL_CreateProc='CREATE PROCEDURE UP_'+@TableName +char(13)+'@INTUpdateID int,' +' /* -1 删除 0 修改 1新增 */' SET @strParameter='' SET @strInsert='' SET @strUpdate='' SET @strWhere='' DECLARE @TName nvarchar(50),@TypeName nvarchar(50),@TypeLength nvarchar(50),@Colstat bit DECLARE Obj_Cursor CURSOR FOR SELECT * FROM FN_GetObjColInfo(@TableName) OPEN Obj_Cursor FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat WHILE @@FETCH_STATUS=0 BEGIN --构造存储过程参数部分 SET @strParameter=@strParameter +CHAR(13)+'@'+ @TName + ' ' +@TypeName+',' --构造新增数据部分 IF @Colstat=0 SET @strInsert=@strInsert + '@'+ @TName +',' --构造更新数据部分 IF (@strWhere='') BEGIN SET @strNewID='SET @'+@TName+'=(Select ISNULL(MAX('+@TName+'),0) From '+@TableName+')+1--取新的ID' SET @strWhere=' WHERE '+@TName+'='+'@'+@TName END ELSE SET @strUpdate=@strUpdate+@TName+'='+'@'+@TName +',' --构造删除数据部分 FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat END CLOSE Obj_Cursor DEALLOCATE Obj_Cursor SET @strParameter=LEFT(@strParameter,LEN(@strParameter)-1) --去掉最右边的逗号 SET @strUpdate=LEFT(@strUpdate,LEN(@strUpdate)-1) SET @strInsert=LEFT(@strInsert,LEN(@strInsert)-1) --存储过程名、参数 PRINT @SQL_CreateProc+@strParameter +CHAR(13)+'AS' --修改 PRINT 'IF (@INTUpdateID=0)' PRINT' BEGIN'+CHAR(13) PRINT CHAR(9)+'UPDATE '+@TableName+' SET '+@strUpdate+CHAR(13)+CHAR(9)+@strWhere PRINT ' END' --增加 PRINT 'IF (@INTUpdateID=1)' PRINT ' BEGIN' PRINT CHAR(9)+@strNewID PRINT CHAR(9)+'INSERT INTO '+@TableName+' SELECT '+@strInsert PRINT ' END' --删除 PRINT 'ELSE' PRINT ' BEGIN' PRINT CHAR(9)+'DELETE FROM '+@TableName +@strWhere PRINT ' END' PRINT 'GO' GO
其中有的自定义函数FN_GetObjColInfo,代码如下:
<!---->/*功能:返回某一表的所有字段、存储过程、函数的参数信息 设计:OK_008 时间:2006-05*/ CREATE FUNCTION FN_GetObjColInfo (@ObjName varchar(50)) RETURNS @Return_Table TABLE( TName nvarchar(50), TypeName nvarchar(50), TypeLength nvarchar(50), Colstat Bit ) AS BEGIN INSERT @Return_Table select b.name as 字段名,c.name as 字段类型,b.length as 字段长度,b.colstat as 是否自动增长 from sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on c.xusertype=b.xtype where a.name =@ObjName order by B.ColID RETURN END
经过自己测试,感觉还行。节省了很多写更新数据的存储过程时间
发表评论
-
mysql 索引查询优化
2010-09-21 12:57 1461转载:http://hi.baidu.com/we ... -
SQL监控
2010-09-21 12:49 1125<script src="http://w ... -
SQL Server中各个系统表的作用(转载)
2006-06-07 16:22 1372sysaltfiles 主数据库 ... -
[SQL Server]管理常用SQL语句 (转载)
2006-06-07 16:23 921[SQL Server]管理常用SQL语 ... -
最新注册号码(不断更新)
2006-06-08 14:04 792http://vscool.net/read.php?tid= ... -
让SQL Server为工作负载高峰提前做好准备
2006-07-25 16:18 723毫无疑问,许多电子商 ... -
SQL SERVER乐观锁定和悲观锁定使用实例
2006-08-28 14:42 925乐观锁定,悲观锁定,锁 ... -
弹出新窗口,填写数据,提交后,关闭该弹出窗口,刷新父页面
2006-09-08 10:06 2488父窗口弹出子窗口的 button处理事件:private v ... -
如何删除SQL SERVER 2000的日志文件空间? 选择自 softj 的 Blog
2006-09-13 11:08 2895首先备份数据库然后备份文件,备份日志文件,可改名在 查询分 ... -
SQL SERVER导入导出大阅兵
2006-09-13 11:12 1398【IT168 技术专题】在我们使用SQL SERVER中,最常 ... -
数据导入导出工具BCP详解
2006-09-13 11:15 1577IT168 技术文档】bcp是SQL Server中负责导入导 ... -
使用Transact-SQL进行数据导入导出方法详解
2006-09-13 11:16 924IT168 技术文档】本文讨论了如何通过Transact-SQ ... -
SQL Server 2000中的触发器使用
2006-09-13 11:18 1007触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化 ... -
SQL SERVER 与ACCESS、EXCEL的数据转换
2006-09-13 11:22 709熟悉SQL SERVER 2000的数据库管理员都知道,其DT ... -
Sql server优化50法
2006-09-13 11:22 901查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有 ... -
SQL Server 2000 中递归
2006-09-22 13:31 1076CREATE FUNCTION dbo.Fun_Get_Cat ...
相关推荐
在SQL Server Management Studio (SSMS) 中,你可以右键点击数据库或具体的数据表,选择“任务” -> “生成脚本”,然后按照向导设置脚本的选项,如是否包含数据、脚本的目标版本等,最后即可生成对应的SQL脚本文件...
SQL Server 数据自动生成SQL语句是一项实用的功能,它极大地简化了数据迁移或备份的过程。这个功能使得用户能够快速地根据数据库中的表结构和已有数据,生成相应的SQL插入语句,以便将这些数据移植到其他数据库系统...
你可以通过整理这些信息,手动编写CREATE TABLE语句来创建数据库表,但若能用Excel自动生成,将大大提高效率。 02-数据初始化及SQL生成文档.xls可能包含了一些预设的数据,用于测试或者填充新建立的数据库。在Excel...
运行这个文件,用户通常需要提供数据库连接信息(如服务器名、数据库名、用户名和密码),然后选择要导出的表,工具就会自动生成对应的SQL脚本。生成的脚本可以根据需要进行编辑,比如添加条件、调整顺序或者合并多...
《SQL脚本自动生成器11.0:高效数据库管理与编程的得力助手》 在信息化时代,数据库管理与编程扮演着至关重要的角色。SQL(Structured Query Language)作为关系型数据库的语言,其脚本编写是数据库操作的核心部分...
用于自动生成sql脚本的sql server数据库专用用于自动生成sql脚本的sql server数据库专用用于自动生成sql脚本的sql server数据库专用
该工具的核心功能是根据用户提供的数据源(如CSV文件或数据库表),自动生成符合这个结构的SQL语句。用户可能需要指定哪些列要包含在插入语句中,以及对应的值来源。如果数据源是另一张数据库表,工具可能会提供连接...
SQL表记录脚本生成器能够自动生成这些信息,使得在创建新数据库或重建现有数据库时,可以快速准确地复现原有的表结构。 其次,索引的处理也至关重要。索引是提高数据库查询性能的关键因素,它可以加速数据的查找...
本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器(Interceptor)在运行时自动生成SQL语句,适用于具有主键或唯一索引的单表操作。 首先,`AutoMapperInterceptor.java`是这个插件的...
可以根据表内容自动生成insert 脚本,select 脚本,update脚本; blob和text数据类型的字段不支持。 可以方便定制需要的字段和条件。 维护SQL server 十分方便的小工具。 在不同数据库或服务器之间传递数据非常...
以下将详细讲解如何在SQL Server 2005中自动生成带数据的数据库脚本。 一、SQL Server Management Studio (SSMS) 的使用 1. 打开SSMS:首先,你需要安装并启动SQL Server Management Studio,这是SQL Server 2005...
本文将深入探讨“SQLServer数据库部署工具”,该工具能自动生成数据添加、更新脚本,极大地方便了数据库的维护工作。 首先,我们来了解什么是数据库部署。数据库部署通常涉及创建数据库结构、设置权限、初始化数据...
- 指出生成的脚本可以与通过SQL Server Management Studio(SSMS)工具自动生成的脚本结合使用,这通常指的是用于备份或迁移数据的脚本。 #### 标签解析 - **SQL Server**:标识本文涉及的是Microsoft SQL Server...
标题中的“SQL脚本自动生成器”是一款专为数据库管理员和开发者设计的工具,它能够自动从特定的数据库产品中提取指定表的数据,并将其转换成SQL脚本文件。这种工具通常用于在不同的数据库系统间迁移数据,或者备份和...
本文将详细解释如何为SQL Server 2000的数据生成脚本,以及这个过程中的关键知识点。 首先,生成数据脚本的主要目的是为了备份数据、初始化新的数据库环境或在不同服务器间迁移数据。在SQL Server 2000中,这可以...
"读取数据库表生成SQL脚本.zip"这个文件包显然提供了一个小工具,它可以帮助用户方便地从数据库中读取表格信息并自动生成相应的SQL脚本。这在数据迁移、备份、或者进行数据库结构分析时非常实用。下面将详细讨论相关...
8. **安全性**: 在生成脚本时,工具应考虑权限和安全设置,确保这些设置在新环境中得到正确复制,防止未授权访问或数据泄露。 9. **性能优化**: 生成的脚本可能会包含索引创建和优化建议,帮助提升数据库性能。然而...
PowerDesigner是一款强大的数据建模工具,它能够帮助用户进行数据建模,包括概念数据模型(CDM)、物理数据模型(PDM)等,并能自动生成SQL脚本来创建数据库。以下步骤详细介绍了如何在PowerDesigner中生成SQL脚本。 **...
1. **实体类(Entity)**:根据数据库表结构自动生成对应的Java实体类,包含表中的所有字段及其属性,通常会使用getter和setter方法。 2. **Mapper接口(Mapper Interface)**:自动生成与数据库操作相关的接口,如...
本工具“SQL-根据数据库表名自动生成表中字段工具”正是为了解决一个常见的开发痛点:快速获取和操作特定表的结构信息。它允许用户输入表名,然后自动生成该表的所有字段信息,以`INSERT INTO`和`UPDATE`语句的形式...