在pl / sql中使用函数名称变量

时间:2015-01-28 06:34:37

标签: function plsql

我正在研究PL / SQL代码,我的目的是用定义声明函数然后将其分配给变量然后使用该变量调用它。

 declare
 func varchar2(50);
 function add(a NUMBER,b NUMBER)
 return BOOLEAN is
 c NUMBER; 
 begin
 c := a+b;
 dbms_output.put_line(c);
 end add;
 begin
 func :='add'; or func :=add;
 if (func(10,20)=false) then
     dbms_output.put_line('false statement');
 else
    dbms_output.put_line('true statement');
 end if;
end;

但这不起作用。所以我没有得到如何将函数赋值给变量。

1 个答案:

答案 0 :(得分:1)

您应该使用所需的函数调用构建一个匿名块,然后使用EXECUTE IMMEDIATE调用它。你应该知道函数有多少参数。

这样的事情:

DECLARE
  func VARCHAR2(20);
  value1 NUMBER := 10;
  value2 NUMBER := 20;
  plsql_block VARCHAR2(500);
  out_value NUMBER;  
BEGIN
  func := 'add';

  plsql_block := 'BEGIN  :v := ' || func || '(:v1,:v2); END;';      

  EXECUTE IMMEDIATE plsql_block USING OUT out_value, IN value1, value2;

 IF out_value > 0 THEN
   dbms_output.put_line('TRUE statement');
 ELSE
   dbms_output.put_line('FALSE statement');
 END IF;
END;