知识大全 SQL Server编写存储过程小工具

Posted 过程

篇首语:一日之计在于晨,一年之计在于春。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server编写存储过程小工具相关的知识,希望对你有一定的参考价值。

SQL Server编写存储过程小工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在开发数据库系统的过程中 经常要写很多的存储过程 为了统一格式和简化开发过程 我编写一些存储过程 用来自动生成存储过程 下面就为您简单介绍一下它们 其中一个用于生成Insert过程 另一个用于生成Update过程       Sp_GenInsert     该过程运行后 它为给定的表生成一个完整的Insert过程 如果原来的表有标识列 您得将生成的过程中的SET IDNTITY_INSERT ON 语句手工删除     语法如下     sp_GenInsert < Table Name > < Stored Procedure Name >     以northwind 数据库为例     sp_GenInsert Employees INS_Employees     最后会生成一个Insert存储过程 利用它 您可以作进一步的开发       Sp_GenUpdate     它会为一个表生成update存储过程 语法如下     sp_GenUpdate < Table Name > < Primary Key > < Stored Procedure Name >     以northwind 数据库为例     sp_GenUpdate Employees EmployeeID UPD_Employees     运行后生成如下所示的存储过程     Create Procedure UPD_Employees     @EmployeeID int     @LastName nvarchar( )     @FirstName nvarchar( )     @Title nvarchar( )     @TitleofCourtesy nvarchar( )     @BirthDate datetime     @HireDate datetime     @Address nvarchar( )     @City nvarchar( )     @Region nvarchar( )     @PostalCode nvarchar( )     @Country nvarchar( )     @HomePhone nvarchar( )     @Extension nvarchar( )     @Phote image     @Notes ntext     @ReportsTo int     @PhotoPath nvarchar( )     AS     UPDATE Employees     SET     LastName = @LastName     FirstName = @FirstName     Title = @Title     TitleofCourtesy = @TitleofCourtesy     BirthDate = @BirthDate     HireDate = @HireDate     Address = @Address     City = @City     Regin = @Regin     PostalCode = @PostCode     Country = @Country     HomePhone = @HomePhone     Extension = @Extension     Photo = @Photo     Notes = @Notes     ReportsTo = @ReportsTo     PhotoPath = @PhotoPath     WHERE EmployeeID = @EmployeeID       使用以上的两个存储过程 节省了我不少时间 特别是在改变了表结构后 重新构造各个存储过程的过程中 您可以改写这两个程序 来自动生成别的存储过程   以下是两个存储过程的源程序  /*==================================================================    语法: sp_GenInsert   以northwind 数据库为例  sp_GenInsert Employees INS_Employees     注释 如果您在Master系统数据库中创建该过程 那您就可以在您服务器上所有的数据库中使用该过程     ==================================================================*/    CREATE procedure sp_GenInsert  @TableName varchar( )   @ProcedureName varchar( )  as  set nocount on    declare @maxcol int   @TableID int    set @TableID = object_id(@TableName)    select @MaxCol = max(colorder)  from syscolumns  where id = @TableID    select Create Procedure + rtrim(@ProcedureName) as type as colorder into #TempProc  union  select convert(char( ) @ + syscolumns name)  + rtrim(systypes name)  + case when rtrim(systypes name) in ( binary char nchar nvarchar varbinary varchar ) then ( + rtrim(convert(char( ) syscolumns length)) + )   when rtrim(systypes name) not in ( binary char nchar nvarchar varbinary varchar ) then   end  + case when colorder < @maxcol then \',\'   when colorder = @maxcol then \' \'  end  as type,  colorder  from syscolumns  join systypes on syscolumns.xtype = systypes.xtype  where id = @TableID and systypes.name <> \'sysname\'  union  select \'AS\',@maxcol + 1 as colorder  union  select \'INSERT INTO \' + @TableName,@maxcol + 2 as colorder  union  select \'(\',@maxcol + 3 as colorder  union  select syscolumns.name  + case when colorder < @maxcol then \',\'   when colorder = @maxcol then \' \'  end  as type,  colorder + @maxcol + 3 as colorder  from syscolumns  join systypes on syscolumns.xtype = systypes.xtype  where id = @TableID and systypes.name <> \'sysname\'  union  select \')\',(2 * @maxcol) + 4 as colorder  union  select \'VALUES\',(2 * @maxcol) + 5 as colorder  union  select \'(\',(2 * @maxcol) + 6 as colorder  union  select \'@\' + syscolumns.name  + case when colorder < @maxcol then \',\'   when colorder = @maxcol then \' \'  end  as type,  colorder + (2 * @maxcol + 6) as colorder  from syscolumns  join systypes on syscolumns.xtype = systypes.xtype  where id = @TableID and systypes.name <> \'sysname\'  union  select \')\',(3 * @maxcol) + 7 as colorder  order by colorder      select type from #tempproc order by colorder    drop table #tempproc   功能:为给定表创建Update存储过程  语法: sp_GenUpdate ,,   以northwind 数据库为例  sp_GenUpdate \'Employees\',\'EmployeeID\',\'UPD_Employees\'    注释:如果您在Master系统数据库中创建该过程,那您就可以在您服务器上所有的数据库中使用该过程。tW.WIngWIT.cOm    ===========================================================*/  CREATE procedure sp_GenUpdate  @TableName varchar(130),  @PrimaryKey varchar(130),  @ProcedureName varchar(130)  as  set nocount on    declare @maxcol int,  @TableID int    set @TableID = object_id(@TableName)    select @MaxCol = max(colorder)  from syscolumns  where id = @TableID    select \'Create Procedure \' + rtrim(@ProcedureName) as type,0 as colorder into #TempProc  union  select convert(char(35),\'@\' + syscolumns.name)  + rtrim(systypes.name)  + case when rtrim(systypes.name) in (\'binary\',\'char\',\'nchar\',\'nvarchar\',\'varbinary\',\'varchar\') then \'(\' + rtrim(convert(char(4),syscolumns.length)) + \')\'   when rtrim(systypes.name) not in (\'binary\',\'char\',\'nchar\',\'nvarchar\',\'varbinary\',\'varchar\') then \' \'  end  + case when colorder < @maxcol then \',\'   when colorder = @maxcol then \' \'  end  as type,  colorder  from syscolumns  join systypes on syscolumns.xtype = systypes.xtype  where id = @TableID and systypes.name <> \'sysname\'  union  select \'AS\',@maxcol + 1 as colorder  union  select \'UPDATE \' + @TableName,@maxcol + 2 as colorder  union  select \'SET\',@maxcol + 3 as colorder  union  select syscolumns.name + \' = @\' + syscolumns.name  + case when colorder < @maxcol then \',\'   when colorder = @maxcol then \' \'  end  as type,  colorder + @maxcol + 3 as colorder  from syscolumns  join systypes on syscolumns.xtype = systypes.xtype  where id = @TableID and syscolumns.name <> @PrimaryKey and systypes.name <> \'sysname\'  union  select \'WHERE \' + @PrimaryKey + \' = @\' + @PrimaryKey,(2 * @maxcol) + 4 as colorder  order by colorder      select type from #tempproc order by colorder    drop table #tempproc  /*===============源程序结束==================*/   cha138/Article/program/SQLServer/201311/22023

相关参考

知识大全 SQL Server存储过程编写和优化措施[1]

SQLServer存储过程编写和优化措施[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 SQL Server加密存储过程的破解问题

SQLServer加密存储过程的破解问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  CREA

知识大全 SQL Server存储过程编程经验技巧

SQLServer存储过程编程经验技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MS SQ

知识大全 Delphi与SQL Server存储过程编程详解

Delphi与SQLServer存储过程编程详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 .Net下调用SQL Server2000中存储过程

.Net下调用SQLServer2000中存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 JSP中调用SQL Server存储过程实例讲解

JSP中调用SQLServer存储过程实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下

知识大全 实例讲解JSP调用SQL Server的存储过程

实例讲解JSP调用SQLServer的存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  J

知识大全 SQL Server 千万数量级 分页 存储过程

SQLServer千万数量级分页存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着信息

知识大全 用ASP调用SQL Server的视图和存储过程

用ASP调用SQLServer的视图和存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 VS和SQL Server对存储过程进行版本排序

VS和SQLServer对存储过程进行版本排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概