请注意,本文编写于 612 天前,最后修改于 612 天前,其中某些信息可能已经过时。
一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常处理。
存储过程基本结构:
CREATE [ OR REPLACE ] PROCEDURE 存储过程名称
(参数名 in 类型, 参数名 in 类型, 参数名 out 类型)
IS|AS
变量声明部分;
BEGIN
逻辑部分
[EXCEPTION
异常处理部分]
END;
注意事项:
1、存储过程参数不带取值范围,in表示传入,out表示输出 ,in out 输入输出,类型类型可以使用任意Oracle中的合法类型;
2、变量声明部分的变量带取值范围,每个变量一行,后面接分号;
3、变量声明部分在begin end 语句处理块之前;
4、变量赋值语句为 变量 := 值;还有一种从表里赋值的为 select columnname into 变量;select into 必须保证有符合条件的值,否则报错;
5、字段别名和表的别名 直接在字段或者表后 空格加别名,不需要 as等关键字;
6、存储过程需要通过定义out sys_refcursor类型的输出游标参数,来返回结果集。
存储过程的调用:
exec proc_emp('参数1','参数2');//无返回值过程调用
有输出参数的,先定义输出参数,再调用
var varparm number ;
exec proc_emp ('参数1',:varparm);// 有返回值过程调用
exec 与call等效。