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

Using function name by variable in pl/sql

我正在编写 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;

但这不起作用。所以我不知道如何将函数分配给变量。

您应该使用您需要的函数调用构建一个匿名块,然后使用 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;