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