???ORACLE 中的触发器中,为什么不能使用:NEW,:OLD值???(80分)

  • 主题发起人 powersite
  • 开始时间
P

powersite

Unregistered / Unconfirmed
GUEST, unregistred user!
很奇怪,
create or replace trigger TRIG_C_BASETABLE
after insert on c_basetable
declare
n number;
begin
n := :new.case_no;
end;
我在编程中,发现,ORACLE8.16,居然连这样的一个触发器也不能正常编译,报错说:“ORA-04082:NEW或OLD引用不允许在表层触发器中”?
我查阅了资料,应该是可以在程序体中直接使用:NEW,:OLD值啊!?
这是甚么道理?
 
急!
烦请帮我顶一下,
谢谢!
 
n number;
该为
n c_basetable%RowType
试试
 
可以使用,你定义触发器时,加入For each row就可以了,如:
create or replace trigger TRIG_C_BASETABLE
after insert on c_basetable
for each row
--在下面的语句就可以使用:new ,:eek:dl
 
哈哈,是啊,可以了,谢谢!
另外,
我想再请教一个问题(嘿嘿,是不是有点儿贪心,这个问题很困扰我,想趁机再向大侠请教):
游标可以用动态,如
TYPE QUERY IS REF CURSOR;
c QUERY;
但是,我又怎么定义一个该ROWTYPE的行呢?
因为很明显,当定义行时,该CURSOR的行类型还没有确定,,,,,??
 
你可以定义以下类型:
record_type
record_variable%TYPE
cursor%ROWTYPE
table%ROWTYPE
具体的,我也没有做过,所以很抱歉不能给你一完整的例子。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
733
DelphiTeacher的专栏
D
顶部