Question

I'm trying to create a trigger and am getting the error "[Error] PLS-00357: PLS-00357: Table, View Or Sequence reference 'table_data_seq.nextval' not allowed in this context"

I have read a lot of information on the error and cannot find the difference between the PL/SQL that people say works and mine. Below is my code for creating the trigger ( keeping it as basic as possible to get it working ):

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 version is 10.2.0.5

As requested here it the script for the sequence:

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;
Was it helpful?

Solution 2

It turned out that this was a bug with the TOAD version and my Oracle database version. The same code in SQL*Plus and SQL Developer worked as expected.

OTHER TIPS

This is not possible before 11g. You can use sequence_name.NEXTVAL in regular assignments from 11g not before that, and that by the following:

 select TABLE_DATA_SQ.NEXTVAL into :NEW.YourID from   dual;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top