I am trying to get an OUT parameter calling a procedure dynamically using bind parameters. The procedure has some IN parameters and an OUT parameter. The IN parameters are fetched from a single column containing all the parameters separated with comma. I am adding the bind parameter after that. But its giving an error. How to resolve this issue? I am returning 'S' for successful execution of the procedure being called and 'R' for unsuccessful execution. I need this returning data to process some further coding.
CREATE OR REPLACE PROCEDURE PROC_TEST (P_SL_NO VARCHAR2,
P_DATA VARCHAR2, /*P_DATA = A,B,C,D (COMES FROM A COLUMN IN A TABLE)*/
P_MSG OUT NUMBER)
IS
V_PROC VARCHAR2(250) := 'PKG_PROC.PROC_INTER@DBLINK';--PROCEDURE TO BE CALLED DYNAMICALLY
V_VAR2 VARCHAR2(4000);
V_BEGIN VARCHAR2(10) := 'BEGIN ';
V_END VARCHAR2(10) := ' END';
PARAM_MSG CHAR(1);
BEGIN
V_VAR2 := V_BEGIN||V_PROC||'('||P_DATA||','||':X'||')'||';'||V_END||';'; --:X IS AN OUT PARAMETER HERE RETURNS 'S' FOR SUCCESS OR 'R' IF UNSUCCESSFUL
EXECUTE IMMEDIATE V_VAR2 USING OUT PARAM_MSG;
DBMS_OUTPUT.PUT_LINE(PARAM_MSG);
P_MSG := 1;
EXCEPTION WHEN OTHERS THEN
P_MSG := 0;
END;
/