动态生成的存储过程

来源:互联网 发布:查询dns缓存 linux 编辑:程序博客网 时间:2024/05/17 20:24

  一般的存储过程都是固定不变的,但是若这样写,一个项目写出来的存储过程太多,显的数据库太庞大,所以我们可以将存储过程中的类型比较接近的,或是格式相似的可以写一个通用的存储过程,将表名,字段等以参数形式传递进去后,动态生成存储过程。这样,即是存储过程数量减少了,也提高了编程的效率。具体的示例(以删除为例)如下:

 

CREATE PROCEDURE dbo.sp_delete
 //这是对数据库进行删除操作的存储过程
 (
 @lx char(1),  /*这是删除是全部删除,还是条件删除,其中的0表示全部删除,1表示条件删除*/
 @tablename  nvarchar(50),/*这是要删除的对象表*/
 @zd nvarchar(50) ,/*该项是所选择的条件实体*/
 @cdt nvarchar(50)/*删除条件*/
 )
 
AS
 
 if(@lx='0')
    begin
 exec('delete   '  +  @tablename )
 return
 end
 
 if(@lx='1')
 begin
    exec('delete   '  +  @tablename    +   '   where   '  +   @zd  +   '  =   ' +  @cdt )
 return
 end
 

 

根据Sql语言的语法可以为Insert ,Select,Update等,都可以写出比较通用的存储过程。这样就可以节省很多的资源。其中有些还是非常通用的。

 

原创粉丝点击