存储过程

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)执行结果

SQL Server Management Studio 存储过程修改后保存_sql语句

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)执行结果

SQL Server Management Studio 存储过程修改后保存_sql语句_02

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)执行结果

SQL Server Management Studio 存储过程修改后保存_sql语句_03


SQL Server Management Studio 存储过程修改后保存_存储过程_04

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)执行结果

SQL Server Management Studio 存储过程修改后保存_sql_05


SQL Server Management Studio 存储过程修改后保存_调用方法_06