stored procedures - PLS-00103: Encountered the symbol “end-of-file” when expecting one of the following: :=(@%; -
i'm trying execute stored procedure dynamically since got alof of them based on simple number, created procedure this, keep getting erro on title of question, here procedure:
procedure p_exec_reg(p_register in varchar2, p_linebuff in varchar2, p_user in varchar2) l_procedure varchar2(50); l_sentence varchar2(500); begin l_procedure := 'p_reg_' || trim(p_register); l_sentence := 'begin cts.pk_integrate_manifesto.' || l_procedure || '(:a, :b); end;'; execute immediate l_sentence using in p_linebuff, p_user; end; since have hundreds of procedures, pain if statements, hope can me out on this, also, show how calling this:
procedure p_load_file(p_linebuff in varchar2, p_user in varchar2) l_register varchar2(3); begin begin select substr(p_linebuff,1,3) l_register dual; exception when no_data_found --p_result := false; null; end; cts.pk_integrate_manifesto.p_exec_reg(l_register, p_linebuff, p_user); exception when others null; end;
thank guys, found answer issue @john heller's comment, command notice in fact executing, when sending dynamic parameter, isl_register, wasnt checking null values, went straight execute immediate procedure null parameter @ end. looks this:
procedure p_load_file(p_linebuff in varchar2, p_user in varchar2, p_error out boolean, p_message out varchar2) l_messagelevel number(1); l_register varchar2(3); l_command varchar2(50); l_procedure varchar2(4000); l_error number(1); begin if p_linebuff not null or p_linebuff <> '' begin select substr(p_linebuff,1,3) l_register dual; if length(trim(l_register)) = 3 p_exec_reg(l_register, p_linebuff, p_user, l_error, p_message); end if; exception when no_data_found null; end; end if; exception when others p_error := true; p_message := 'sucedio un error al procesar el archivo.'; end; thanks help, , sorry if dumb question :)
Comments
Post a Comment