PLS-00357 sequence.nextval不允许

时间:2014-03-18 01:53:17

标签: triggers oracle10g sequence

我试图创建一个触发器并收到错误" [错误] PLS-00357:PLS-00357:表,视图或序列参考' table_data_seq.nextval'在此背景下不允许"

我已经阅读了很多关于错误的信息,但是找不到人们说的和我的PL / SQL之间的区别。下面是我创建触发器的代码(尽可能使其保持基本运行状态):

create or replace trigger tr_tabData 
before insert on table_data
for each row
DECLARE
seq_value int;
begin
       select table_data_sq.nextval into seq_value from dual;
end;

Oracle版本是10.2.0.5

按照此处的要求,序列的脚本为:

DROP SEQUENCE DATA_ADMIN.TABLE_DATA_SQ;

CREATE SEQUENCE DATA_ADMIN.TABLE_DATA_SQ
  START WITH 1000
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;

2 个答案:

答案 0 :(得分:3)

在11g之前这是不可能的。您可以在11g之前的常规作业中使用sequence_name.NEXTVAL,以及以下内容:

 select TABLE_DATA_SQ.NEXTVAL into :NEW.YourID from   dual;

答案 1 :(得分:0)

事实证明,这是TOAD版本和我的Oracle数据库版本的错误。 SQL * Plus和SQL Developer中的相同代码按预期工作。