怎样动态执行存储函数

「已注销」 2003-12-30 02:49:01
请问:我要在存储函数中执行另一个存储函数,但函数名和返回类型都是存在表FUNC的FN和FR中。这样的SQL执行语句该怎么写?
...全文
27 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lianhg 2003-12-31
  • 打赏
  • 举报
回复
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
OK

PL/SQL 过程已成功完成。
lianhg 2003-12-31
  • 打赏
  • 举报
回复
f2函数 是过程还是函数
「已注销」 2003-12-30
  • 打赏
  • 举报
回复
看来CSDN 没高人了
「已注销」 2003-12-30
  • 打赏
  • 举报
回复
实现不了吗?
「已注销」 2003-12-30
  • 打赏
  • 举报
回复
可能我没说清楚,我要说的是:在函数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;
beckhambobo 2003-12-30
  • 打赏
  • 举报
回复
动态确定返回类型比较困难
create function get
return varchar2
as
a varchar2(10);
begin
select fn into a from func where fn='...';
return a;
end;
/
「已注销」 2003-12-30
  • 打赏
  • 举报
回复
没人知道吗?

17,078

社区成员

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

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