Oracle 使用OUT参数创建/调用存储过程 一时失言乱红尘 2022-06-16 01:53 412阅读 0赞 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
还没有评论,来说两句吧...