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

前端之家收集整理的这篇文章主要介绍了Oracle 使用OUT参数创建/调用存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

  1. sql> variable name varchar2(10);
  2. sql> variable sal number;
  3. sql> exec search_employee(7499,:name,:sal);
  4.  
  5. PL/sql 过程已成功完成。

#使用print命令显示变量值

  1. sql> print name
  2.  
  3. NAME
  4. --------------------------------
  5. ALLEN
  6.  
  7. sql> print sal
  8.  
  9. SAL
  10. ----------
  11. 1600

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

  1. sql> select :name,:sal
  2. 2 from dual;
  3.  
  4. :NAME :SAL
  5. -------------------------------- ----------
  6. ALLEN 1600

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

  1. sql> set serverout on
  2. sql> declare
  3. 2 name emp.ename%type;
  4. 3 sal emp.sal%type;
  5. 4 begin
  6. 5 search_employee(7499,name,sal);
  7. 6 dbms_output.put('姓名:' || name);
  8. 7 dbms_output.put_line('薪金:' || sal);
  9. 8 end;
  10. 9 /
  11. 姓名:ALLEN薪金:1600
  12.  
  13. PL/sql 过程已成功完成。

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

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

猜你在找的Oracle相关文章