【SQL Server】之如何创建存储过程

本文详细介绍了如何在SQL中创建各种类型的存储过程,包括简单存储过程、带参数的存储过程、带默认值的存储过程及带输出参数的存储过程。同时,还讲解了如何使用存储过程实现分页功能,提供了具体实例与执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 创建存储过程

  1.1 创建简单的存储过程

   创建语句:

create proc usp_helloworld
as
begin
    print 'Hello World'
end

  创建完后,调用语句格式 exec + 存储过程名:exec usp_helloworld

执行结果:

  

  1.2 创建带参数的存储过程

   语句:

​​​​​​​create proc usp_book @name nvarchar(50), @author nvarchar(50) 
as 
    begin 
        select * from book where name=@name and author=@author 
    end

  表中的数据:

  调用存储过程,因为定义两个参数,在调用的时候需要给参数赋值。下面两种方法都行:

(1)exec usp_book "神雕侠侣","金庸"   

(2)exec usp_book @name="神雕侠侣",@author="金庸"

  执行结果:

  1.3  带默认值的存储过程

  创建语句:

create proc usp_select_hero1
@heroname nvarchar(50)  = '温青青'
as
begin
    select * from hero where hero=@heroname
end

  表中数据:

  因为参数已经给了默认值,在调用存储过程的时候,可以不指定参数。

  如:直接调用:exec usp_select_hero1 结果如下:

  也可以重新给参数赋值如:exec usp_select_hero1 @heroname='无尘' 结果如下:

  1.4 创建带输出参数的存储过程output关键字

   创建语句:

create proc usp_output
@bookname nvarchar(50),
@recordCount int output --关键字代表输出参数
as
begin
    select * from hero where bookname=@bookname
    --把查询的记录条数赋值给变量@recordCount
    set @recordCount = (select count(*) from hero where bookname=@bookname)
end 

  调用带有参数的存储过程,需要定义变量,并把变量传递给参数,如下:

declare @num int
exec usp_output @bookname='书剑恩仇录',@recordCount=@num output
select @num as 记录条数

  结果:

 

 

2 使用存储过程实现分页

语句:

create proc usp_fenye
@pagesize int=3, --每页记录的条数
@index int=1,    --当前查看第几页的内容
@recordcount int output, --总的条数
@pagecount int output --总的页数
as
begin
    --分页
    select
        t.id,
        t.bookname,
        t.hero
    from (select *,rn=row_number() over(order by id asc) from hero) as t
    where t.rn between (@index-1) * @pagesize + 1 and @pagesize * @index
    --计算总的条数
    set @recordcount =( select count(*) from hero)
    --计算总的页数
    set @pagecount=ceiling(@recordcount * 1.0 / @pagesize)  --ceiling向上取整
end

执行:

declare @tiaoshu int
declare @yeshu int
exec usp_fenye @pagesize=5,@index =3,@recordcount=@tiaoshu output,@pagecount=@yeshu output
select @tiaoshu as 总的条数
select @yeshu as 总的页数

结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉逍遥_祥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值