Tigger代码在Oracle 11G中无法正常工作 [英] Tigger code not working properly in Oracle 11G

查看:54
本文介绍了Tigger代码在Oracle 11G中无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我试图创建以下触发器,但它给了我警告:

触发器创建时出现编译错误< b>选择object_name,user into name,p_us from user_objects where object_type ='TABLE';  





 创建  track_cr_dr 

userid varchar 20 ),
ob_name varchar (< span class =code-digit> 50 ),
action varchar 8 ),
ac_time varchar 50 ),
ac_date 日期
);

创建 替换触发器创建 后, track_create
数据库
声明
ac varchar 8 );
name varchar 50 );
p_date 日期;
p_time varchar 50 );
p_us varchar 20 );
开始
选择 sysdate into p_date 来自 dual;
select to_char(sysdate,' HH: MM:SS'进入 p_time 来自 dual;
选择 object_name,用户 进入 name,p_us 来自 user_objects 其中 object_type = ' TABLE';

如果 ' Creating' 然后
ac:= ' CREATE';
else
ac:= ' DROP';
end if ;

插入 进入 track_cr_dr (p_us,名称,AC,p_time,p_date);
end ;



提前致谢。

解决方案

user 是Oracle中的保留关键字。

尝试更改此行

 选择 object_name,用户 进入 name,p_us 来自 user_objects 其中 object_type = '   TABLE'; 



到此

 选择 object_name,  user 进入名称,p_us 来自 user_objects 其中 object_type = '  TABLE'; 


Hi,
I was trying to create the following trigger but it's giving me warning :

Trigger created with compilation error on select object_name ,user into name,p_us from user_objects where object_type='TABLE';



create table track_cr_dr
(
userid varchar(20),
ob_name varchar(50),
action varchar(8),
ac_time varchar(50),
ac_date date 
);

create or replace trigger track_create 
after create or drop on DATABASE
declare
	ac varchar(8);
	name varchar(50);
	p_date date;
	p_time varchar(50);
	p_us varchar(20);
begin
	select sysdate into p_date from dual;
	select to_char(sysdate,'HH:MM:SS') into p_time from dual;
	select object_name ,user into name,p_us from user_objects where object_type='TABLE'; 
	
	if 'creating' then
            ac:='CREATE';
	else
            ac:='DROP';
	end if;
	
	insert into track_cr_dr values(p_us,name,ac,p_time,p_date);
end;


Thanks in advance.

解决方案

user is a reserved keyword in Oracle.
Try to change this line

select object_name ,user into name,p_us from user_objects where object_type='TABLE';


to this

select object_name, "user" into name, p_us from user_objects where object_type = 'TABLE'; 


这篇关于Tigger代码在Oracle 11G中无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆