A存储过程调用B存储过程,要得到B存储过程的某个指定输出参数,怎么做?

捷哥1999 2010-09-09 11:23:35
如题,B存储过程输出参数有两个,第一个是RetCode表示是否执行成功,Result表示结果,我怎么在A存储过程中调用B,然后得到第二个输出参数,怎么调用我知道,关键我不知道怎么指定,然后获取第二个输出参数,请各位高手帮忙看看,谢啦!
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-09-09
  • 打赏
  • 举报
回复
这么说吧,我的表记录有三列
accno,ccy,accnobalance

我要查询出
accno,ccy,accnobalance,todaybalance
其中的todaybalance=calc(accno,ccy,date,retcode,result);

就是说,我希望选择出所有的列,但是要多一列计算列,是根据当天的日期和每一列的accno和ccy,调用一个calc的存储过程来计算出来的,这样要怎么写呢?
xmanliming 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hyl04 的回复:]

create or replace procedure A as
v_retCode char(1);
v_result varchar2(100);
begin
--调用B存储过程
B(v_retCode,v_result);
dbms_output.put_line('v_result:' || v_result);
end;
[/Quote]顶
minitoy 2010-09-09
  • 打赏
  • 举报
回复
没看明白.调用存储过程2的时候参数是存储过程1里定义的,调用后结果就返回到存储过程1的变量里.怎么处理都可以啊.
hyl04 2010-09-09
  • 打赏
  • 举报
回复

create or replace procedure A as
v_retCode char(1);
v_result varchar2(100);
begin
--调用B存储过程
B(v_retCode,v_result);
dbms_output.put_line('v_result:' || v_result);
end;
心中的彩虹 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 computerfox 的回复:]
如题,B存储过程输出参数有两个,第一个是RetCode表示是否执行成功,Result表示结果,我怎么在A存储过程中调用B,然后得到第二个输出参数,怎么调用我知道,关键我不知道怎么指定,然后获取第二个输出参数,请各位高手帮忙看看,谢啦!
[/Quote]
跟匿名块一样的

declare
v number;
t number --1 ,ok ;o no
k varchar2(100):='xxx'; --传入参数
begin

p1(k,t,v);
if t=1 then
....
end if;
end;
捷哥1999 2010-09-09
  • 打赏
  • 举报
回复
这么早,就都去吃饭了,不是吧?
捷哥1999 2010-09-09
  • 打赏
  • 举报
回复
我知道怎么做了,谢谢!我先去试试看,
ngx20080110 2010-09-09
  • 打赏
  • 举报
回复
你希望在哪個存儲過程中返回包含4列的游標?4列是accno,ccy,accnobalance,todaybalance嗎?
還有,todaybalance是不是calc中返回的result值?
捷哥1999 2010-09-09
  • 打赏
  • 举报
回复
谢谢nGX,我希望返回的是一个包含了四列的游标,这样要再定义一个游标的

我的date就是系统日期,yyyy-mm-dd格式的。

calc是一个过程。不是函数。

帮忙再看下,谢谢!
ngx20080110 2010-09-09
  • 打赏
  • 举报
回复

create or replace procedure your_proc
is
v_accno your_table.accno%type;
v_ccy your_table.ccy%type;
v_accnobalance your_table.accnobalance%type;

v_retcode your_type; -- 不知道你calc過程中的參數類型
v_result your_type; -- 不知道你calc過程中的參數類型

cursor cur is
select accno,ccy,accnobalance from your_table;
begin
for c in cur loop
v_accno := c.accno;
v_ccy := c.ccy;
v_accnobalance := c.accnobalance;

-- 你的calc是過程還是函數呀?怎麼你寫成
-- todaybalance=calc(accno,ccy,date,retcode,result);
calc(v_accno, v_ccy, date, v_retcode, v_result); -- 不知道你的date是什麼

-- 我猜result就是你要的結果todaybalance吧
dbms_output.put_line('retcode=' || v_retcode || ', result=' || v_result);
end loop;
end;
捷哥1999 2010-09-09
  • 打赏
  • 举报
回复
有没有高手帮忙答复一下呀。

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧