SQL Server存储过程模糊查询及分页
-
概念
SQLServer提供了一种方法,它可以将一–些固定的操作集中起来由SQLServer数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
在SQLServer中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。 -
优点
可以在单个存储过程中执行一系列SQL语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,而且减少网络通信的负担。安全性更高。 -
实例
-
模糊查询
–进行模糊查询,返回记录数,还要返回记录
go
create proc cp_select_book_byName
(
@name nvarchar(50),
@rowCount int output
)
as
select * from Books where Name like ‘%’+@name+’%’
select @rowCount=COUNT(*) from Books where Name like ‘%’+@name+’%’
–调用
go
–定义一个变量,来接受返回值@rowCount
declare @rows int
exec cp_select_book_byName ‘建筑’,@rows out
print @rows -
分页
–创建一个存储过程,根据名称,第几页,每页显示多少条。查询满足条件的记录和记录数。
go
create proc cp_page
(
@name nvarchar(50),–名称
@pageIndex int, --页码
@pageSize int, --每页显示多少条
@pageRows 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 @pageRows=count(*)
from Books where name like ‘%’+@name+’%’
–调用
declare @prows int
exec cp_page ‘测’,3,5,@prows out
print @prows