sql - ORACLe PROCEDURE - AUTHID allowed only in schema level -
while trying create table via procedure, facing error
error(73,9): pls-00157: authid allowed on schema-level programs
procedure bckup authid current_user statusmsg varchar2(400); begin --backup records execute immediate 'create table schemaname.tabname select pgm.* xyz pgm, ijk prf prf.col1=pgm.col1 , prf.id in(select id tab2)'; commit; exception when others statusmsg :='sql errror code ' || sqlcode|| ' -error- ' ||sqlerrm; dbms_output.put_line('error : ' || statusmsg); end bckup;
your procedure seems part of package. in package, can set invoker rights (authid current_user
) @ package level. cannot set each individual procedure.
either move invoker rights package level:
create or replace package pkg authid current_user procedure bckup; -- more types, procedures , functions end pkg; create or replace package body pkg procedure bckup statusmsg varchar2(400); begin --backup records execute immediate 'create table schemaname.tabname select pgm.* xyz pgm, ijk prf prf.col1=pgm.col1 , prf.id in(select id tab2)'; commit; exception when others statusmsg :='sql errror code ' || sqlcode|| ' -error- ' ||sqlerrm; dbms_output.put_line('error : ' || statusmsg); end bckup; end pkg;
or create global procedure (i.e. @ schema level , not @ package level):
create or replace procedure bckup authid current_user statusmsg varchar2(400); begin --backup records execute immediate 'create table schemaname.tabname select pgm.* xyz pgm, ijk prf prf.col1=pgm.col1 , prf.id in(select id tab2)'; commit; exception when others statusmsg :='sql errror code ' || sqlcode|| ' -error- ' ||sqlerrm; dbms_output.put_line('error : ' || statusmsg); end bckup;
Comments
Post a Comment