公司业务需要,需要创建一个触发器,当scott用户建表时创建一个同义词。就在本论坛找到一个相关帖子,编写了下面代码:SQL code:
create or replace trigger tri_scott
after create on scott.schema
declare
sqlstr varchar2(4000);
v_job number;
begin
if sys.sysevent = 'CREATE' then
if Sys.dictionary_obj_type ='TABLE' then
sqlstr:='create or replace public synonym '||sys.dictionary_obj_name||
         ' for scott.'||sys.dictionary_obj_name;
dbms_output.put_line(sqlstr);
dbms_job.submit(v_job,'begin execute immediate '''||sqlstr||'''; end;',sysdate,null);
--execute immediate sqlstr;
end if;
end if;
end;
这个语句执行成功了,但是在创建表的时候也没报错,但同义词却没创建成功。查看user_jobs,发现job执行出错。跪求大侠出手援救。SQL> select job, next_date, next_sec, failures, broken from user_jobs ORDER BY 1 DESC;
       JOB NEXT_DATE   NEXT_SEC                           FAILURES BROKEN
----------     -----------        --------------------------------         ----------    ------
        3   2015/11/20    19:50:03                              1           N