oracle调用带in out参数的存储过程

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 06:23   553   0
定义了一个存储过程;
create or replace procedure FindBaseInfo(
v_id in out number,
v_name out varchar2,
v_title out varchar2
)

is
temp integer(2);
begin

select count(*) into temp from employee where id=v_id;
if temp>0 then
select id,name,title into v_id,v_name,v_title from employee where id=v_id;
dbms_output.put_line('succeed!');
else
v_id:=0;
dbms_output.put_line('failed!');
end if;

end;


调用过程如下:

DECLARE
a number ;
b varchar2(10);
c varchar2(10);
begin
a:=&a;
FindBaseInfo(a,b,c);
end;


这里不能直接这样调用: FindBaseInfo(1,b,c);因为存储过程的第一个参数设为in out类型的。所以需要传一个变量当做参数,否则整形的话没法赋值输出。!!IN OUT具有前两种模式的特性,即调用时,实参的值总是传递给形参,结束时,形参的值传递给实参。调用时,对于IN模式的实参可以是常量或变量,但对于OUT和IN OUT模式的实参必须是变量。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP