我有一个存贮过程P,里面调用了创建了同义词的一个存储过程C,将过程P作为JOB执行时,说权限不够,但该过程在PL/SQL语句中执行是可以的。
简单示例如下:
CREATE OR REPLACE Procedure C(P_DbLink varchar2) authid current_user AS
begin
execute immediate 'create or replace synonym TD_DEVICE for TD_DEVICE@||p_dblink;
end;CREATE OR REPLACE Procedure P(P_DbLink varchar2) authid current_user AS
begin
C(p_dbLink);
end;--Job调度脚本,执行后,JOB已经创建JOb1已经返回,但执行JOB出现权限不够的错误:
declare
job1 number;
begin
dbms_job.submit(job1,'P(''LS'');',sysdate,'sysdate+120/1440');
dbms_Output.put_line(job1);
dbms_job.run(Job1);
end;
简单示例如下:
CREATE OR REPLACE Procedure C(P_DbLink varchar2) authid current_user AS
begin
execute immediate 'create or replace synonym TD_DEVICE for TD_DEVICE@||p_dblink;
end;CREATE OR REPLACE Procedure P(P_DbLink varchar2) authid current_user AS
begin
C(p_dbLink);
end;--Job调度脚本,执行后,JOB已经创建JOb1已经返回,但执行JOB出现权限不够的错误:
declare
job1 number;
begin
dbms_job.submit(job1,'P(''LS'');',sysdate,'sysdate+120/1440');
dbms_Output.put_line(job1);
dbms_job.run(Job1);
end;
grant connect,resource,select any table to Current_user;
要对调度job的用户进行一次grant即可.grant create any synonym to user_name;