简单通用的表删除、表查询

在用net的三层架构时,为了提高系统的可靠性和运行效率,所以系统实现多采用存储过程,然而由于系统功能较多,项目较大,有上千张数据表,这样不免会有很多的多简单表的操作(查询,删除,修改等)

所以为了避免重复的劳动和提高编程的效率,所以写了一个简单的通用的存储过程,拿出来和大家分享,如有问题,望各位同仁不吝赐教。
/*

作者:马万前
时间:2010-4-22
版本:Ver1.0
*/
Create         PROCEDURE [dbo].[sp_Support_DeleteTableByFourKeys]
(
 @execStatus int OUTPUT,
 @tablename sysname,--表名称
 @key sysname,--主键一
 @value varchar(50),--主键一值
 @key1 sysname,--主键二
 @value1 varchar(50),--主键二值
 @key2 sysname,--主键三
 @value2 varchar(50),--主键三值
 @key3 sysname,--主键四
 @value3 varchar(50)--主键四值
)
 AS
BEGIN
 DECLARE @err  INT
 DECLARE @row  INT
BEGIN TRANSACTION
 
  BEGIN
  declare @sql varchar(500)
  
   set @sql = 'delete from '+@tablename+' where 1=1'
   if @value<> ''
    set @sql = @sql + ' and '+quotename(@key)+'='''+convert(varchar(50),@value)+''''
   if @value1<> ''
    set @sql = @sql + ' and '+quotename(@key1)+'='''+convert(varchar(50),@value1)+''''
   if @value2<> ''
    set @sql = @sql + ' and '+quotename(@key2)+'='''+convert(varchar(50),@value2)+''''
   if @value3<> ''
    set @sql = @sql + ' and '+quotename(@key3)+'='''+convert(varchar(50),@value3)+''''
   print @sql
   exec (@sql)
  
END

  
 SELECT @err=@@ERROR, @row=@@ROWCOUNT

 IF @@ERROR=0 
   BEGIN
    SET @ExecStatus=0
    COMMIT TRANSACTION
    RETURN
   END
  ELSE
   BEGIN
    ROLLBACK TRANSACTION
    SET @ExecStatus=1
    RETURN
END
END

上面是删除,可以根据需要进行重写,我在系统中重写了四次。

下面是通用的查询脚本:

 

/*
版本:Ver1.0
作者:马万前
时间:2009-12-14
用途:通用的简单的表查询

*/
Create          PROCEDURE sp_Support_SelectTableByOneKeys
(
 @execStatus int OUTPUT,
 @tablename sysname,--表名称,也可以是视图
 @key sysname,--主键一
 @value varchar(50)--主键一值
)
 AS
BEGIN
 DECLARE @err  INT
 DECLARE @row  INT
BEGIN TRANSACTION
 
  BEGIN
  declare @sql varchar(1000)
 set @sql = 'select * from '+quotename(@tablename)+' where 1=1'
   if @value<> ''
    set @sql = @sql + ' and '+quotename(@key)+'='''+convert(varchar(50),@value)+''''
   
   print @sql
   exec(@sql)
  
END

  
 SELECT @err=@@ERROR, @row=@@ROWCOUNT

 IF @@ERROR=0 
   BEGIN
    SET @ExecStatus=0
    COMMIT TRANSACTION
    RETURN
   END
  ELSE
   BEGIN
    ROLLBACK TRANSACTION
    SET @ExecStatus=1
    RETURN
END
END,

备注:可以更加需要进行扩展,也可以基于此思想,完成修改,新增的储存过程,脚本就不上传了。

 

posted @ 2010-04-28 22:42  autumnyuhe  阅读(733)  评论(0编辑  收藏  举报