概述
概念:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,存储过程可包含程序流,逻辑以及对数据库的查询。
为什么使用:
1、存储过程与其他应用程序共享应用程序逻辑
2、具有安全性和所有权连接,以及可以附加到他们的证书
3、提供安全机制
4、允许模块化程序设计
5、可以减少网络通信流量
种类:
1、用户自定义存储过程
2、系统存储过程、
3、扩展存储过程
创建存储过程
语法格式:
CREATE PROC 存储过程名称
参数
Varying=default
With
Recompile
As
Sql_statement[…n]
举例:创建存储过程查看所有男同学的信息
create procedure proc_student
@sex varchar(10)
as
select * from 学生信息
where 性别=@sex
exec proc_student @sex='男'
使用带默认值的参数
create proc p_employee
@departmentid varchar(10),
@zhiwei varchar(20)=’职员’
as
select A.员工姓名,a.所任职位,a. 联系电话,b.部门名称
from 员工信息 A,部门信息 B
on a.所在部门编号=b.部门编号 and b.部门编号=departmentid and a.所任职位=@zhiwei
修改存储过程
语法格式:
ALTER PROCEDURE procedure_name
参数
VARYING=default
With
删除存储过程
语法格式:
DROP PROCEDUER
设计存储过程的规则
规则:
1、可以引用在同一存储过程中创建的对象,只要引用时已经创建了该对象即可
2、可以在存储过程内引用临时表
3、如果执行的存储过程将调用另一个存储过程,则被=调用的存储过程可以访问由第一个存储过程创建的所有对象,包括临时表在内
4、如果执行远程SQL实例进行更远的远程存储过程,则不但能回滚这些更改。远程存储过程不参与事务处理
5、存储过程中的参数的最大数目为2100
6、存储过程中的局部变量的最大数目仅受可用内存的限制
7、根据可用内存的不同,存储过程最大可达125mb
临时存储过程:
举例:
create procedure #get_info
as
select a.成绩,b.姓名 from 成绩信息 A,学生信息 b where a.学生编号=b.学号
order by b.姓名