oracle+out的使用,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,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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值