SQL server存储过程
什么是存储过程
存储过程是一个预编译的sql语句 ,编译后可多次使用
优势:
优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次
响应时间上来说有优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定
缺点:
维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难
调用:
用一个“execute 存储过程名 参数”命令来调用存储过程
实例:
创建不带参数存储过程
--存储过程
--不带参数存储过程
select * from Books
go
create proc cp_select_books
as
select * from Books
--调用存储过程
exec cp_select_books
带输入参数的存储过程
--带输入参数的存储过程
go
create proc cp_select_Books_ByName
(
@name nvarchar(50)
)
as
select * from Books where Name like '%'+@name+'%'
--调用存储过程
exec cp_select_Books_ByName 'm'
创建带输入,输出参数,进行模糊查询
--带输入,输出参数
--进行模糊查询,返回记录数,还要返回记录
go
create proc cp_select_books_byNameEx
(
@name nvarchar(50),
@rowCount int out
)
as
select * from Books where name like '%'+@name+'%'
select @rowCount=count(*) from Books where name like '%'+@name+'%'
--调用
--定义一个变量,接收返回值@rowcount
declare @rows int
exec cp_select_books_byNameEx 'boot',@rows out
print @rows
创建一个存储过程,根据名称,第几页,每页显示多少条
--创建一个存储过程,根据名称,第几页,每页显示多少条
--查询满足条件的记录和记录数
go
create proc cp_select_books_fenye
(
@name nvarchar(50),
@pageIndex int,
@pageSize int,
@pageRow int out --输出参数满足条件的行数
)
as
--查询名称是"" 查询第多少页,每页显示多少条
select top (@pageSize) * from Books where id not in
(select top (@pageSize*(@pageIndex-1)) id from Books where name like '%'+@name+'%' order by id)
and name like '%'+@name+'%' order by id
--满足条件共多少条
select @pageRow=count(*) from Books where name like '%'+@name+'%'
go
declare @Rows int;
exec cp_select_books_fenye '建筑',1,6,@Rows out
print @Rows