存储过程
1.什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个“execute 存储过程名 参数”命令来调用存储过程。
2.存储过程的作用是什么?
1.存储过程具有对数据库立即访问的功能。
2.使用存储过程可以加快程序的运行速度。
3.使用存储过程可以减少网络流量。
4.使用存储过程可以提高数据库的安全性。
3.存储过程及其优缺点。
存储过程是一个预编译的sql语句 ,编译后可多次使用
优势:响应时间上来说有优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定
缺点:维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难。
4.存储过程的使用
首先创建一个测试表
ID | Name | Remark |
1 | JavaScript | 无 |
2 | 斗罗大陆 | 无 |
3 | 三国演义 | 无 |
4 | 水浒传 | 无 |
5 | 红楼梦 | 无 |
6 | 斗破苍穹 | 无 |
1.不带参数的存储过程的创建和调用
需求:利用存储过程查询表
1)语法
------存储过程的创建方法
create proc --创建存储过程
proc_Name --存储过程名称
as
select * from Table_Name --相关sql语句代码
------存储过程的调用方法
exec(调用方法) proc_Name(存储过程)
2)使用代码
create proc cp_select_book
as
select * from Books
--调用
exec cp_select_book
3)执行结果
2.带输入参数的存储过程的创建和调用
需求:利用存储过程通过书本名称查询表
1)语法
------存储过程的创建方法
create proc --创建存储过程
proc_Name --存储过程名称
(
@parameter_Name varchar(50) --参数名
)
as
select * from Table_Name like '%'+@name+'%' --相关sql语句代码
------存储过程的调用方法
exec(调用方法) proc_Name(存储过程) parameter_Name.value(输入参数的值)
2)使用代码
create proc cp_select_book_ByName(
@name nvarchar(50)
)
as
select * from Books where Name like '%'+@name+'%'
--调用
exec cp_select_book_ByName '大陆'
3)执行结果
3.带输出参数的存储过程的创建和调用
需求:利用存储过程通过书本名称查询表,并显示总数据数量
1)语法
------存储过程的创建方法
create proc --创建存储过程
proc_Name --存储过程名称
(
@parameter_Name varchar(50) --参数名
@parameter_Name int out --参数名 out为输出关键字
)
as
select * from Table_Name like '%'+@name+'%' --相关sql语句代码
------存储过程的调用方法
exec(调用方法) proc_Name(存储过程) parameter_Name.value(输入参数的值) @parameter_Name.value(输出参数的值)
2)使用代码
create proc cp_select_book_ByNameExt(
@Name varchar(50),
@recordRows int out
)
as
select * from Books where Name like '%'+@name+'%'
select @recordRows=COUNT(*) from Books
--调用
declare @row int --定义一个变量,接收返回的值
exec cp_select_book_ByNameExt '大陆',@row out
print '查询的数量:'+convert(varchar(50),@row)
3)执行结果
4.简单的分页的存储过程的创建和调用
需求:利用存储过程通过分页查询书本表
1)语法
------存储过程的创建方法
create proc --创建存储过程
proc_Name --存储过程名称
(
@parameter_Name varchar(50) --参数名
@parameter_Name int out --参数名 out为输出关键字
)
as
select * from Table_Name like '%'+@name+'%' --相关sql语句代码
------存储过程的调用方法
exec(调用方法) proc_Name(存储过程) parameter_Name.value(输入参数的值) @parameter_Name.value(输出参数的值)
2)使用代码
create proc cp_select_book_Pages(
@pageCount int out, --定义接收总个数的参数
@pageIndex int, --定义第几页的参数
@pageSize int --定义一页多少条数据的参数
)
as
select @pageCount=COUNT(*) from Books
select top (@pageSize) * from Books
where id not in (select top ((@pageIndex-1)*@pageSize) ID from Books order by ID)
declare @row int --定义一个变量,接收返回的值
exec cp_select_book_Pages @row out,2,3 --查询第二页的三条数据
print '查询的数量:'+convert(varchar(50),@row)
3)执行结果