--创建用户自定义 的储存过程
--之创建带输入参数的储存参数
use MySchool
--检测是否存在usp_studentinfo储存过程
if exists(select * from sysobjects where name='usp_studentinfo')
drop procedure usp_studentinfo
go
--创建储存过程
--如果储存过程的参数后面有'output'关键字,则表示此参数为输出参数
create procedure usp_studentinfo
@sorce int--创建输入参数
as
if(@sorce<0 or @sorce>100)
begin
raiserror('被驴踢了',16,1)--处理错误信息(16,1)一般固定
end
else
begin
select studentname,studentresult from
Student,result
where Student.studentno=Result.StudentNo
and StudentResult>@sorce
end
--执行带参数的储存过程
exec usp_studentinfo 90--输入参数具体赋值且查看
go
--带out参数的储存过程
use MySchool
go
--检测是否存在usp_studentinfo储存过程
if exists(select * from sysobjects where name='usp_getpagelist')
drop procedure usp_getpagelist
go
create procedure usp_getpagelist
@pageindex int, --第几页(输入参数)
@pagesize int ,--页大小(输入参数)
@totalrecords int out,--总计录数(输出参数)
@totalpages int out--总页面(输出参数)
as
select @totalrecords=COUNT(1) from Student--记录学生总数
set @totalpage=CEILING(@totalrecords*1.0/@pagesize)--记录总页数
--分页操作
select * from
(
-- 生成带序号的集合
select *,ROW_NUMBER() over(order by studentno)as myid
from Student
)as temp
--开始序号 --结束序号
where myid between @pageindex*@pagesize-(@pagesize-1) and @pageindex*@pagesize
--创建输出变量
declare @records int
declare @pages int
--执行带参数的存储过程和输出带参数的存储过程
exec usp_getpagelist 2,3,@records out,@pages out
select @records--输出总序号
select @pages--输出总页数