2015-01-28 1 views
0

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; 

하지만 이것은 작동하지 않습니다. 그래서 함수에 변수를 할당하는 방법을 알지 못합니다.

답변

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; 
+0

덕분에 @pablomatico. – SNC

관련 문제