我正在研究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;
但这不起作用。所以我没有得到如何将函数赋值给变量。
答案 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;