现在有这样一个要求。
我有两个包,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。

解决方案 »

  1.   

    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;
      

  2.   

    PROCEDURE   bbb(cur   out   CURSOR) 
    is   
      yyy varchar2(10);
    begin 
      a.aaa(c.field,yyy);
      open   cur   for   
      select   c.*,   yyy   from   c; 
    end;
      

  3.   

    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; 
      

  4.   

    a.aaa(c.field)是什么意思呀?是不是指在a中和c中都有的字段呢?
      

  5.   

    4楼正确,5楼不明白OUT参数的实质是传送的是地址。