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

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;

执行结果:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值