Sql Server 存储过程

@pageSize 表示每页显示的行数
@pageIndex 表示第几页显示

1: 单独的一个分页查询基本格式为:

select top @pageSize * from Table where Id not in 
(select top @pageSize*(@pageIndex-1) Id from Table order by Id ) 
order by Id

2: 带where条件的分页查询的存储过程的建立

create proc proc_Page
@pageSize int=10,  -- 默认每页显示十条信息
@pageIndex int=1,  -- 默认显示第一页
@where varchar(50) ='1=2'  --默认where条件不成立
as
set nocount on  -- 关掉受影响的行数,以提升性能
declare @sql varchar(300) 
set @sql= 'select top '+convert(varchar,@pageSize)+' * from Table where Id not in (select top '+
          convert(varchar,@pageSize*(@pageIndex-1))+' Id from Table where '+
          @where +' order by Id ) and '+ @where +' order by Id '
exec (@sql) 
go

调用存储过程:
exec proc_Page 5,3,'1=1' --每页5条,
第3页

 

3:带输出参数的存储过程(新增,插入时使用)

  a: 输出类型为uniqueidentifier,并且是作为主键,默认值是newid() 的输出的存储过程

create procedure proc_TableInsert
@Id uniqueidentifier output,
@Name varchar(50)
as
set nocount on
set @Id=newid()
Insert into table (Id,Name) values (@Id,@Name)
@@error
go


     b: 输出类型为int ,并且是作为主键,默认值自动增长列 的输出的存储过

create procedure proc_TableInsert
@Id int output,
@Name varchar(50)
as
set nocount on
Insert into table (Name) values (@Name)
set @Id=scope_identity()
@@error
go


4: 带输出聚合函数的存储过程

 

create procedure proc_TableCount
@recordCount int output
as
set nocount on 
declare @sql nvarchar(200)
set @sql=N'select @count=count(-1) from table'
exec sp_executesql @sql , N'@count int output', @recordCount output
return @@error
go

 

转载于:https://www.cnblogs.com/jeffqing/archive/2012/10/22/2733228.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值