2017-12-06 3 views
1

erwartet Ich habe unten Prozedur, bei der ich Fehler als 'PLS-00103: Encountered the symbol "." when expecting one of the following:;' bekomme. Dieser Fehler tritt in der Zeile nach der COMMIT-Anweisung auf.Treffen Sie das Symbol, wenn eines der folgenden in Orakel-Verfahren

Ich bin ziemlich neu zu schreiben Verfahren, so dass ich nicht wirklich verstehe, wo das Problem auftritt. Es kann auch ein Problem in der Einfügung mit der Select-Abfrage geben, wenn ich Daten von einem Cursor ausgabe, und ich verwende auch eine Select-Abfrage.

CREATE OR REPLACE PROCEDURE TEST 
IS 
TST VARCHAR2(4000):= NULL; 
IN_SEQ_NO NUMBER; 

CURSOR C_DB IS 
SELECT NAME, ID 
    from REC_PROC; 

BEGIN 

select IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 

COMMIT; 

END LOOP; 

END TEST; 
+0

Es nicht aa Raum sollte zwischen: und = in 'IN_NESS_DB_LINK: = NESSOFT_DB.DATABASE_LINK' . Tatsächlich gibt es mehrere Stellen, an denen Sie es korrigieren müssen. –

+0

danke Ich habe unerwünschten Speicherplatz nicht entfernen, aber ich bekomme Fehler msg jetzt nach Commit-Anweisung als Fehler (83,17): PLS-00103: Hat das Symbol "." wenn einer der folgenden erwartet:; – Andrew

+2

Ich nehme an, dass Sie einen Kompilierzeitfehler erhalten. Wenn ja, dann beobachte ich wenige Dinge. 1. Variable NESS_QUERY ist nicht deklariert. 2. In Cursor werden mehrere Aliasnamen verwendet - D.SYS_DB_NAME, D.ENTITY_ID, T.DAY_ID, DB.DATABASE_LINK. Aber der Cursor wählt nur aus einer Tabelle, die auch ohne Alias ​​ist –

Antwort

1

hinzufügen FOR rec IN C_DB LOOP Anweisung der Prozedur:

CREATE OR REPLACE PROCEDURE TEST 
IS 
    TST  VARCHAR2(4000):= NULL; 
    IN_SEQ_NO NUMBER; 

    CURSOR C_DB IS 
    SELECT NAME, 
      ID 
     FROM REC_PROC; 

BEGIN 
    FOR rec IN C_DB 
    LOOP 
     SELECT IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 
     COMMIT; 
    END LOOP; 
END TEST; 

oder entfernen END LOOP;:

CREATE OR REPLACE PROCEDURE TEST 
IS 
    TST  VARCHAR2(4000):= NULL; 
    IN_SEQ_NO NUMBER; 

    CURSOR C_DB IS 
    SELECT NAME, 
      ID 
     FROM REC_PROC; 

BEGIN 
    SELECT IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 
    COMMIT; 
END TEST; 
Verwandte Themen