SQL Server存储过程的创建

SQL Server存储过程的创建

概念

存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户调用存储过程并传递参数来执行它。

作用

优势:响应时间上来说有优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定
缺点:维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难

存储过程和触发器的区别

触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关

案例

先在数据库创建了两张表


1.不带参数的存储过程

语句

--1.不带参数的存储过程
--创建存储根据名称查询数据(create创建,alter修改,drop删除)
create proc cp_select_book_bybook --创建存储过程
as
select * from Books --查询book表

再进行调用

--调用
exec cp_select_book_bybook

调用后执行结果

2.带输入参数的存储过程

语句

--2.带输入参数的存储过程
--根据名称查询
go
create proc cp_select_book_ByName
(
   @name varchar(50)
)
as
select * from Books where name like '%'+@name+'%'

再进行调用

--调用
exec cp_select_book_ByName '红楼'

调用后执行结果

3.带输出参数的存储过程

语句

--3.带输出参数的存储过程
--根据名称查询,返回记录,同时返回记录数
go
create proc cp_select_books_ByNameExt
(
  @name varchar(50), --多个参数用分号隔开
  @recordRows int output --输出类型
)
as
select * from Books where name like '%'+@name+'%'
select @recordRows=count(*) from Books

再进行调用

--调用
--调用
--定义一个变量,接收返回参数@recordRows的值
declare @rs int
exec cp_select_books_ByNameExt '西游',@rs out
print '查询的记录数是:'+convert(varchar(5),@rs)

调用后执行结果

4.分页的存储过程

语句

--4.分页的存储过程
--根据名称,页码,每页显示条数 --输入参数
--返回查询条件的总记录数 --输出参数
--显示查询结果
go
create proc cp_select_books_ByPage
(
  @name varchar(50), --多个参数用分号隔开
  @pageIndex int out, --页码
  @pageSize int out, --每页显示条数
  @recordRows int out --总记录数
)
as
select top (@pageSize) * from Books
where id not in(
select top (@pageSize*(@pageIndex-1)) id 
from Books 
where name like '%西游%'
order by id
)
and name like '%西游%' order by id
select @recordRows=count(*) from Books

再进行调用

--调用
--定义一个变量,接收返回参数@recordRows的值
declare @rs int
exec cp_select_books_ByPage '西游','1','5',@rs out
print @rs

调用后执行结果

猜你喜欢

转载自blog.csdn.net/ITpmin/article/details/106254641
今日推荐