存储过程简称过程,是为了完成某种功能而编写的程序段,相当于C语言中的函数或java中的方法
存储过程存放在数据库的“可编程性”组件中,属于数据库,和表、视图级别相同。存储过程允许用户声明变量,可以调用系统函数,经过编译后存储在数据库服务器中。存储过程可以接收输入参数,也可以将运行结果带出过程,还可以嵌套调用。
存储过程有以下4个功能:
1.减少网络流量
存储过程直接在服务器端运行,减少了与客户机的交互
2.增强了代码的重用性和共享性
3.加快系统运行速度
4.使用灵活
存储过程分类
1.系统存储过程。系统存储过程均以sp_开头
2.自定义存储过程
3.扩展存储过程
建立存储过程的命令格式
create procedure 存储过程名
[with encryption]
[@参数名 类型[= 默认值][output][,…n]]
as sql 语句
建立无参数存储过程
create procedure p1_all
as
begin
select *
from bookinfo
where publish=‘清华大学出版社’
执行后,可以在ssms管理器中找到这个存储过程
调用存储过程的时候,只需要在查询窗口输入存储过程名即可
如果存储过程不是处理的第一条语句,那么必须采用以下的格式:
execute 存储过程名[参数值]
例如调用p1_all的命令是
execute pa_all
其中execute可以简写为exec
建立有参数存储过程
参数包括形参和实参,定义参数时,需要明确规定是输入参数还是输出参数,参数后面加output就是输出参数,没加就是输入参数。
例:创建存储过程p3_writer,显示bookinfo中指定作者编写的全部图书
这里指定作者是一个形参,具体指需要在调用这个存储过程时输入。形参的类型还有长度必须与作者这个字段的类型和长度保持一致。假设参数名为editor。
create proc p3_writer
@editor varchar(8)
as
begin
select *
from BookInfo
where Writer=@editor
end
查询
exec p3_writer ‘胡伏湘’
查询结果如下