您的位置:首页 > 数据库 > Oracle

Oracle存储过程之带有返回参数

2015-12-24 17:15 471 查看
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)

  RETURN VARCHAR2 AS

  V_ENAME VARCHAR2(32);

BEGIN

  SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO = P_EMPNO;

  RETURN(V_ENAME);

EXCEPTION

  WHEN NO_DATA_FOUND THEN

   -- DBMS_OUTPUT.PUT_LINE('没有该编号雇员!');

    RETURN('没有该编号雇员!');

  WHEN TOO_MANY_ROWS THEN

   -- DBMS_OUTPUT.PUT_LINE('有重复雇员编号!');

    RETURN('有重复雇员编号!');

  WHEN OTHERS THEN

  ---  DBMS_OUTPUT.PUT_LINE('发生其他错误!');

    RETURN('发生其他错误!');

END;

执行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息