Oracle 使用OUT参数创建/调用存储过程

本文介绍了一个Oracle PL/SQL存储过程示例,演示如何使用OUT参数从SCOTT.EMP表中检索特定雇员的信息,并展示了如何通过不同方式调用此存储过程及展示输出结果。

 1.OUT类型的参数由存储过程传入值,然后由用户接受参数值。下面通过SCOTT.EMP表创建一个搜索过程,该过程将根据所提供的EMPNO列的值检索雇员的ENAME和SAL

SQL> create or replace procedure search_employee(
  2  empno_param in number,
  3  name_param out emp.ename%type,
  4  salary_param out emp.ename%type) is
  5  begin
  6    select ename,sal
  7    into name_param,salary_param
  8    from scott.emp
  9    where empno=empno_param;
 10  exception
 11    when no_data_found then
 12    name_param:='NULL';
 13    salary_param:=-1;
 14    dbms_output.put_line('未找到指定编号的员工信息!');
 15  end search_employee;
 16  /

过程已创建。

#使用VARIABLE命令绑定参数值,并调用存储过程SEARCH_EMPLOYEE

SQL> variable name varchar2(10);
SQL> variable sal number;
SQL> exec search_employee(7499,:name,:sal);

PL/SQL 过程已成功完成。

# 使用print命令显示变量值

SQL> print name

NAME
--------------------------------
ALLEN

SQL> print sal

       SAL
----------
      1600

# 使用SELECT语句检索绑定的变量值

SQL> select :name,:sal
  2  from dual;

:NAME                                  :SAL
-------------------------------- ----------
ALLEN                                  1600

# 在匿名程序块中调用存储过程SEARCH_EMPLOYEE

SQL> set serverout on
SQL> declare
  2  name emp.ename%type;
  3  sal emp.sal%type;
  4  begin
  5    search_employee(7499,name,sal);
  6     dbms_output.put('姓名:' || name);
  7     dbms_output.put_line('薪金:' || sal);
  8   end;
  9   /
姓名:ALLEN薪金:1600

PL/SQL 过程已成功完成。

# 调用具有OUT参数过程中,未对OUT参数提供变量

SQL> set serverout on
SQL> declare
  2  name emp.ename%type;
  3  begin
  4    search_employee(7499,name,1200);
  5  end;
  6  /
  search_employee(7499,name,1200);
                            *
第 4 行出现错误:
ORA-06550: 第 4 行, 第 29 列:
PLS-00363: 表达式 '1200' 不能用作赋值目标
ORA-06550: 第 4 行, 第 3 列:
PL/SQL: Statement ignored


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇潇雨歇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值