----------------------
Windows Phone 7手机开发、
ASP.Net培训、期待与您交流! ----------------------
存储过程其实非常类似平常写的方法,定义存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 = 默认值 OUTPUT,
@参数n 数据类型 = 默认值 OUTPUT
AS
SQL语句
参数说明:
参数可选
参数分为输入参数、输出参数
输入参数允许有默认值
EXEC 过程名 [参数]
假设有以下一张Category表如下:
我们接下来要通过创建一个存储过程来实现分页的过程,分页就是比如一页要显示几行,然后从第几页开始显示。
--编写分页存储过程
--通过row_number() 来实现分页过程
alter proc proGetPageData
@pageIndex int=1, --默认的页码为1,定义和初始化同时进行
@pageSize int=5 --默认的页容量为5
as
select * from
(
select ROW_NUMBER() over(order by c_addtime) as ri, * from Category
) as e
where e.ri>(@pageIndex-1)*@pageSize and e.ri<=@pageIndex*@pageSize
下面执行存储过程,根据以上的存储过程定义的语法,我们可以如下分别传递不同的参数来实现:
1)--传入第一个参数,第二个参数用默认值
exec proGetPageData1 1 --页容量按默认的传参数
2) --传入两个参数(按照传入参数的顺序先后赋值)
exec proGetPageData1 1,5 --隐式传参数
3)--显示传入第二个参数(和顺序无关)
exec proGetPageData1 @pageSize=3,@pageIndex=1 --显示传参数
4) --显示传入第二个参数(第一个参数使用默认值)
exec proGetPageData1 @pageSize=3
执行第三种的语句,其结果如下所示:
正如从结果可以看出,因为执行了
exec proGetPageData1 @pageSize=3,@pageIndex=1
表明从第一页开始,然后每页的容量为3.