create or replace trigger login_off_info
after logon on database
Begin
create table trigger_test(test int);
END;
就这一个语句,SHOW ERRORS:LINE/COL ERROR
-------- -----------------------------------------------------------
2/4 PLS-00103: 出现符号 "CREATE"在需要下列之一时:
begindeclareexitforgoto
ifloopmodnullpragmaraisereturnselectupdatewhile
<an identifier><a double-quoted delimited-identifier>
<a bind variable><<closecurrentdeletefetchlockinsertopen
rollbacksavepointsetsqlexecutecommitforall
<a single-quoted SQL string>
after logon on database
Begin
create table trigger_test(test int);
END;
就这一个语句,SHOW ERRORS:LINE/COL ERROR
-------- -----------------------------------------------------------
2/4 PLS-00103: 出现符号 "CREATE"在需要下列之一时:
begindeclareexitforgoto
ifloopmodnullpragmaraisereturnselectupdatewhile
<an identifier><a double-quoted delimited-identifier>
<a bind variable><<closecurrentdeletefetchlockinsertopen
rollbacksavepointsetsqlexecutecommitforall
<a single-quoted SQL string>
2 declare
3 default_schema varchar2(30);
4 begin
5 select schema_name into default_schema from system.default_schema where user_name = user;
6 execute immediate 'alter session set current_schema = ' || default_schema;
7 end;
8 / Trigger created.
after logon on database
Begin
execute immediate 'create table trigger_test(test int)';--grant create any table to new_user;
END;
请问什么原因?
但每次登陆的时候都建立一个表???不如使用临时表好了。
但触发器中不能有commit
declare
pragma autonomous_transaction; // 有这个就ok
begin
execute immediate 'create table trigger_test(test int)';
end;
'create table trigger_test(test int)’,里面好象要加“;”'create table trigger_test(test int);’
1 create or replace trigger lg after logon on database
2 begin
3 execute immediate 'create table trigger_test(test int)';
4* end;
SQL> /触发器已创建SQL> connect lgone // 我的用户 有dba的权限 trigger也是用它建的
请输入口令:
已连接。
SQL> select object_name,object_type from user_objects;
未选定行 // 建表失败SQL> grant create table to lgone; // 一定要有这句***************
授权成功。SQL> connect lgone
请输入口令:
已连接。SQL> select object_name,object_type from user_objects;
OBJECT_NAME OBJECT_TYP
-------------------- ----------
TRIGGER_TEST TABLE // 成功pragma autonomous_transaction; 可以不要 上次这里讲错了 数据库触发器一般是自动提交的 不过加上 触发器也可运行啊
good luck for you