动态确定返回类型比较困难
create function get
return varchar2
as
a varchar2(10);
begin
select fn into a from func where fn='...';
return a;
end;
/

解决方案 »

  1.   

    可能我没说清楚,我要说的是:在函数f1中要调用f2,f2函数的函数名字是不知道的,要通过表FUNC知道函数名和返回类型。动态SQL能实现吗?
    类似下面的写法!create function get
    return varchar2
    as
    a varchar2(10);
    begin
    select fn into a from func where id='1';
    execute immdiate a into b;
    return b;
    end;
      

  2.   

    SQL> CREATE OR REPLACE PROCEDURE TOKU.MYPR
      2  (av out number)
      3  IS
      4  BEGIN
      5    av:= 99;
      6  END;
      7  /过程已创建。SQL> CREATE OR REPLACE PROCEDURE TOKU.MYPR2
      2  (av out varchar2)
      3  IS
      4     lvr  number(3);
      5      lvn  varchar2(10);
      6      lvsql  varchar2(100);
      7      lvtblnm  varchar2(10);
      8  BEGIN
      9    select 'mypr(:a)' into lvtblnm from dual;  -- 使用你自己的表
     10    execute immediate 'begin ' || lvtblnm || '; end;' using out  lvr;
     11    dbms_output.put_line(lvr);
     12    av:='OK';
     13  END;
     14  /过程已创建。SQL> declare
      2   lvok varchar2(10);
      3  begin
      4    mypr2(lvok);
      5    dbms_output.put_line(lvok);
      6  end;
      7  /
    99
    OKPL/SQL 过程已成功完成。