PLS-00357-Sequenz.nextval nicht erlaubt

Ich versuche, einen trigger erstellen und erhalte den Fehler "[Fehler] PLS-00357: PLS-00357: Tabelle, Sicht Oder Sequenz-Referenz 'table_data_seq.nextval' in diesem Kontext nicht zulässig"

Ich habe gelesen, eine Menge von Informationen über den Fehler und nicht finden können, den Unterschied zwischen dem PL/SQL, dass die Leute sagen, funktioniert und mein. Unten ist mein code für die Erstellung der Auslöser ( halten Sie es so einfach wie möglich zu bekommen, es funktioniert ):

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 10.2.0.5

Wie gewünscht hier das Skript für die Folge:

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;
Dass Fehler normalerweise bedeutet, Sie sind mit einer Sequenz in einem PL/SQL-Kontext. Zum Beispiel seq_value := table_data_sq.nextval; würde nicht funktionieren in 10g, aber in 11g. Aber dein code ist mit dem altmodischen Weg, eine Sequenz, ich bin nicht sicher, warum es ausfällt. Hast du vielleicht fügen Sie die falsche version von dem code?
Das ist die Aussage sitzen in meinem toad for oracle-sql-editor-Bildschirm. Ich versuche, führen Sie es und ich bekomme den oben genannten Fehler.
Was passiert, wenn Sie es ausführen in SQL*Plus? Dieser code funktioniert gut für mich auf 11g oder 12c, aber leider habe ich keinen Zugriff auf einen 10g-Instanz.
Bitte, zeigen die Reihenfolge der DDL als auch.
Das kann der code in deiner Kröte Fenster, aber wenn Sie schon mehrere versuche in diesem es könnte immer noch versuchen, zu kompilieren, eine alte version - an dem Punkt zu tun, einen Einsatz. Macht es zu verändern create or replace trigger ... ändern (oder loswerden) der Fehler???

InformationsquelleAutor user1567453 | 2014-03-18

Schreibe einen Kommentar