前端之家收集整理的这篇文章主要介绍了
Oracle 使用OUT参数创建/调用存储过程,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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,1200);
- 5 end;
- 6 /
- search_employee(7499,1200);
- *
- 第 4 行出现错误:
- ORA-06550: 第 4 行,第 29 列:
- PLS-00363: 表达式 '1200' 不能用作赋值目标
- ORA-06550: 第 4 行,第 3 列:
- PL/sql: Statement ignored