求助-存储过程中调用存储过程

luoboqingcai 2007-09-24 07:25:48
现在有这样一个要求。
我有两个包,a和b
a中的代码:
PROCEDURE aaa(xxx in varchar2, yyy out varchar2)
is
begin
yyy := xxx;
end;

现在我在b中有一个存储过程,功能是这样的,
我要做一个检索,比如c表中的所有字段,但是其中有一个字段要通过调用a中的aaa存储过程来取得。
总体的感觉是这样的
PROCEDURE bbb(cur out CURSOR)
is
begin
open cur for
select c.*, a.aaa(c.field) from c;
end;
请教高手如何实现?其中a.aaa为调用a中的存储过程aaa。
...全文
290 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksrs 2007-10-19
  • 打赏
  • 举报
回复
4楼正确,5楼不明白OUT参数的实质是传送的是地址。
yuxl_why 2007-10-17
  • 打赏
  • 举报
回复
a.aaa(c.field)是什么意思呀?是不是指在a中和c中都有的字段呢?
zhonghuabao 2007-10-11
  • 打赏
  • 举报
回复
create or replace function aaa(xxx in varchar2) return varchar2
is
begin
yyy := xxx;
return yyy;
end;

这样就可以用以下方法调用了
PROCEDURE bbb(cur out CURSOR)
is
begin
open cur for
select c.*, a.aaa(c.field) from c;
end;
zhonghuabao 2007-10-11
  • 打赏
  • 举报
回复
你要返回一个值~!
47522341 2007-10-04
  • 打赏
  • 举报
回复
PROCEDURE bbb(cur out CURSOR)
is
yyy varchar2(10);
begin
a.aaa(c.field,yyy);
open cur for
select c.*, yyy from c;
end;
chenkejun 2007-10-01
  • 打赏
  • 举报
回复
是,俺通常也这么用
kinglht 2007-09-24
  • 打赏
  • 举报
回复
create or replace function aaa(xxx in varchar2) return varchar2
is
begin
yyy := xxx;
return yyy;
end;

这样就可以用以下方法调用了
PROCEDURE bbb(cur out CURSOR)
is
begin
open cur for
select c.*, a.aaa(c.field) from c;
end;
kinglht 2007-09-24
  • 打赏
  • 举报
回复
存储过程这样是不行的,把你的存储过程改成函数就可以了,因为函数有返回值。

17,086

社区成员

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

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