通用存储过程

MSSQL 分页:

1--select top 3 * from  tbl_users  where  id not in (select top 6 id  from  tbl_users   )

2--SELECT TOP 3 * FROM tbl_users
WHERE (    ID  >
(   SELECT     MAX(id)   FROM   (SELECT    TOP   6   id    FROM     tbl_users  ) as T )    )

 

 

通用存储过程:

 ---------------------------------------------------

 

 

备份数据库:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BackupDataBase_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BackupDataBase_Proc
GO
CREATE PROC BackupDataBase_Proc
 @filePath varchar(1000) 
AS
 DECLARE  @GetFilePath varchar(1000)
BEGIN

SET @GetFilePath = @filePath + 'Mall_DB '+
    convert(VARCHAR(4),year(getdate())) + '-' +
 convert(VARCHAR(2),MONTH(getdate())) + '-' +
    convert(VARCHAR(2),DAY(getdate())) + ' ' +
    replace(Convert(char(8),Getdate(),14),':','')

BACKUP DATABASE [Mall_DB] TO DISK = @GetFilePath WITH NOFORMAT, NOINIT,
    NAME = N'Mall_DB', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

END

 

 

exec BackupDataBase_Proc 'E:/VS2008_ProJ/svnworks/db/'

 

 

 

 

 

 

---------------------------------------------------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,通用删除>
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- =============================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_Delete_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_Delete_Proc]
GO

CREATE PROCEDURE Common_Delete_Proc
 -- Add the parameters for the stored procedure here
 @tableName   varchar(100),
    @DeleteCondition  varchar(1000),
 @returnValue   int output
AS
declare @SQLStr varchar(4000)
    set @SQLStr='DELETE FROM  '
BEGIN
 SET NOCOUNT ON;
 BEGIN TRAN
 if(@DeleteCondition <> 'NULLS')
  begin
   set @SQLStr=@SQLStr+' 
'+@tableName+' WHERE '+@DeleteCondition
  end
 else
  begin
   set @SQLStr=@SQLStr+' 
'+@tableName
  end

 exec(@SQLStr)

 IF @@ERROR <> 0
 begin
  set @returnValue = 0
  ROLLBACK TRAN
 end
 ELSE 
  begin
   set @returnValue = 1
   COMMIT TRAN
  end
  SET NOCOUNT OFF
end
GO


-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,添加>
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- sp_executesql需要 ntext/nchar/nvarchar类型 的参数
-- =============================================
/*
 exec sp_executesql N'select * from T_Users where userid=988'
 exec sp_executesql N'select * from T_Users where userid = @uid',N'@uid int',@uid=988
 exec sp_executesql N'select @counts = select count(*) from T_Users',N'@counts int output',@uid output
*/

 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_Add_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_Add_Proc]
GO

ALTER procedure  [dbo].[Common_Add_Proc]
 @tableName   varchar(100), 
 @fields      varchar(1000),  
    @fieldValue  varchar(2000),   /*字段值*/
 @returnValue varchar(2000) output /*返回参数*/
AS
declare @SQLStr nvarchar(4000)
BEGIN
 SET NOCOUNT ON
 BEGIN TRAN
 set @SQLStr = 'INSERT INTO '
 if(@fields <> 'NULLS')
/*@fields = 'NULLS' 说明不用写字段INSERT INTO Users(name,email...)*/
 begin
  set @SQLStr = @SQLStr+ @tableName +'(
'+@fields+') values('+@fieldValue+');SELECT @returnValue = SCOPE_IDENTITY()'
    end
 else
 begin
  set @SQLStr = @SQLStr+ @tableName +' values(
'+@fieldValue+');SELECT @returnValue = SCOPE_IDENTITY()'
    end

 EXEC sp_executesql @SQLStr, N'@returnValue varchar(2000) output', @returnValue output
 
  IF @@ERROR <> 0
  begin
  set @returnValue = 0
  ROLLBACK TRAN
  end
  ELSE 
  begin
  COMMIT TRAN
  end
  SET NOCOUNT OFF
END


-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,修改>
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- =============================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_Modify_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_Modify_Proc]
GO

CREATE PROC  Common_Modify_Proc
 @tableName    varchar(100),   --表名
    @fieldsValue  varchar(2000),  --修改字段值
 @modifyCondition varchar(1000), --修改记录条件
 @returnValue   int output  --返回值
AS
declare @SQLStr varchar(4000)
    set @SQLStr = 'UPDATE 
'+@tableName
begin
  SET NOCOUNT ON;
  BEGIN TRAN
     set @SQLStr = @SQLStr +'SET '
+@fieldsValue +' WHERE ' + @modifyCondition
     EXEC(@SQLStr)
  IF @@ERROR <> 0
   BEGIN
  set @returnValue = 0
     ROLLBACK TRAN
   END
  ELSE
  BEGIN
   set @returnValue = 1
   COMMIT TRAN
  END
  SET NOCOUNT OFF
end

 

-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,分页查询>
-- 分页查询
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- =============================================
/*
SELECT top 10 * FROM topic WHERE id > (SELECT MAX(id) FROM
  (SELECT TOP 10 id FROM topic ORDER BY ID) T ) ORDER BY ID

SELECT top 10 * FROM topic WHERE id NOT IN(SELECT TOP  ((2 - 1) * 10)
      id FROM topic ORDER BY ID) ORDER BY ID

*/


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_PageQuery_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_PageQuery_Proc]
GO

CREATE PROC Common_PageQuery_Proc
 @tableName       varchar(100),   --表名
 @isKey       varchar(100),   --id
 @fieldName       varchar(2000),  --字段名
 @queryCondition  varchar(2000) , --查询条件不含where关键字
 @orderByParam  varchar(50) ,   --按照哪个字段排序
 @descOrAsc   varchar(20),  --降序 or 升序
 @pageSizes   int ,    --页显示多少条
 @currPage        int ,    --当前页
 @totalPage       int output,     --总页数
 @totalCount      int output      --总记录
AS
declare @pageSQL  nvarchar(2000) ,@countSQL nvarchar(2000)
BEGIN
SET NOCOUNT ON

--查询总记录
SET @countSQL = 'SELECT @totalCount = COUNT(*) from
'+@tableName
if(@queryCondition <> 'NULLS')
SET @countSQL = @countSQL + ' WHERE
'+@queryCondition
exec sp_executesql @countSQL,N'@totalCount int output' , @totalCount output

--总页数
if( @totalCount % @pageSizes <> 0)
 SET @totalPage = (@totalCount / @pageSizes) + 1
else
 SET @totalPage = @totalCount / @pageSizes

SET @pageSQL = 'SELECT TOP '+ CAST(@pageSizes AS varchar)
if(@fieldName <> 'NULLS')
 SET @pageSQL = @pageSQL + @fieldName
ELSE
 SET @pageSQL = @pageSQL + ' * '

SET @pageSQL = @pageSQL +' FROM ' +@tableName

SET @pageSQL = @pageSQL + ' WHERE '+@isKey +' NOT IN '

SET @pageSQL = @pageSQL + '(SELECT TOP '+CAST((@currPage - 1)*@pageSizes AS varchar) + ' ' + @isKey

SET @pageSQL = @pageSQL + ' FROM ' + @tableName + ' ORDER BY ' + @isKey

 if(@descOrAsc <> 'NULLS')
 SET @pageSQL = @pageSQL  + @descOrAsc + ')'
 else
 SET @pageSQL = @pageSQL + ')'


 if(@queryCondition <> 'NULLS')
 SET @pageSQL = @pageSQL  + @queryCondition

SET @pageSQL = @pageSQL +  ' ORDER BY '

 if(@orderByParam <> 'NULLS')
 SET @pageSQL = @pageSQL + @orderByParam
 ELSE
    SET @pageSQL = @pageSQL + @isKey

 if(@descOrAsc <> 'NULLS')
 SET @pageSQL = @pageSQL + @descOrAsc

 --print 'sql = ' + @pageSQL
 EXEC(@pageSQL)

 --EXEC sp_executesql @pageSQL

 SET NOCOUNT OFF
END


--exec Common_PageQuery_Proc 'Table_A','id','name','NULLS','NULLS','NULLS',5,1,0,0

-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,普通列表查询>
-- 列表查询 查询几条数据 top
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- =============================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_List_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_List_Proc]
GO
CREATE PROC Common_List_Proc
 @tableName       varchar(100), 
 @fields    varchar(2000),
 @topCount   int ,
 @selectCondition varchar(2000)
AS
 declare @SQLStr Nvarchar(4000)
BEGIN
 SET @SQLStr = 'SELECT TOP '
 IF(@fields <> 'NULLS')
  SET @SQLStr = @SQLStr + '' + CAST(@topCount AS nvarchar) + @fields
 ELSE
  SET @SQLStr = @SQLStr + '' + CAST(@topCount AS nvarchar) + ' * '
 
 SET @SQLStr = @SQLStr + +' FROM ' +  @tableName

 IF(@selectCondition <> 'NULLS')
  SET @SQLStr = @SQLStr + 'WHERE' + @selectCondition

 EXEC sp_executesql @SQLStr
END

--EXEC Common_List_Proc 'Table_A','name', 2 ,'NULLS'

-- =============================================
-- Author:  <Author,,yongqiu_xie>
-- Create date: <Create Date,,2010-6-27>
-- Description: <Description,,查询记录数>
-- 查询记录数,最大值
-- 规定条件为空情况下 的值为 = 'NULLS' 
-- =============================================

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Common_Count_Proc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Common_Count_Proc]
GO
CREATE PROC Common_Count_Proc
 @tableName       varchar(100), 
 @outCount   int output,
 @selectCondition varchar(2000)
AS
declare @SQLStr Nvarchar(4000)
BEGIN
  SET NOCOUNT ON
  SET @SQLStr = 'SELECT @outCount= COUNT(*) FROM ' + @tableName

  IF(@selectCondition <> 'NULLS')
  SET @SQLStr = @SQLStr +' WHERE '+ @selectCondition
 
  EXEC sp_executesql @SQLStr,
N'@outCount int output', @outCount output
  
  SET NOCOUNT OFF
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值