HOME> 在线世界杯> 【SQL Server】之如何创建存储过程

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

2025-10-02 21:55:59

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 总的页数

结果:

网络电视怎么选择和使用?全面指南与技巧分享
梦幻西游在哪点修炼最划算2025