公司业务需要,需要创建一个触发器,当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
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
解决方案 »
- 送分40分:请问ORACLE中的SID是什么?
- Oracle 11g,企业管理器登不上去。。。。。。。。
- 请问该如何修改Oracle的会话时间长度?谢谢。【高分】
- 我从别的机子复制了一TT.DMP文件,导入ORACLE时,总是说找不到文件
- vista下装不上oracle 9i?
- 向SQL高手请教--要实现这样的查询功能SQL语句该怎样写?
- ORACLE的数据类型问题。
- 购买一套正版ORACLE数据库服务器后,在程序中发布ORACLE中的若干文件是否合法?
- 导ACCESS数据进ORALCE时有两个表不能导,并出现下列对话框,怎么办?(回复者有分)
- 菜鸟问题。关闭数据库时,无任何反应。
- impdp table 最多能指定多少张表
- oracle 游标循环插入数据
select any table
以及
create public synonym
权限