1、基本语法
创建存储过程,需要有CREATEPROCEDURE或CREATE ANY PROCEDURE的系统权限。该权限可由系统管理员授予。创建一个存储过程的基本语句如下: CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] {AS|IS}
[说明部分:参数定义、变量定义、游标定义] BEGIN 可执行部分
[EXCEPTION 错误处理部分] END [过程名]; 其中:
可选关键字OR REPLACE 表示如果存储过程已经存在,则用新的存储过程覆盖,通常用于存储过程的重建。
参数部分用于定义多个参数(如果没有参数,就可以省略)。参数有三种形式:IN、OUT和IN OUT;如果没有指明参数的形式,则默认为IN。 IN 定义一个输入参数变量,用于传递参数给存储过程 OUT 定义一个输出参数变量,用于从存储过程获取数据 IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
例1,创建带输入输出参数的存储过程:
create or replace procedure test_procedure(a in number, x out varchar2)
is begin
if a >= 90 then begin x := 'A'; end; end if; if a < 90 then begin x := 'B'; end; end if; if a < 80 then begin x := 'C'; end; end if; if a < 70 then begin x := 'D'; end; end if;
if a < 60 then begin x := 'E'; end; end if;
end test_procedure; 执行结果:
例2、创建 参数为 IN OUT 的存储过程
create table EMP (EMPNO number , ENAME varchar2(32) );
insert into EMP (EMPNO ,ENAME) values (10,'张三');
insert into EMP (EMPNO ,ENAME) values (20,'小马');
insert into EMP (EMPNO ,ENAME) values (30,'小米');
insert into EMP (EMPNO ,ENAME) values (40,'小明');
CREATE OR REPLACE FUNCTION GET_EMP_NAME(P_EMPNO NUMBER DEFAULT 10)