2017-07-28 1 views
-1

Wenn ich versuche, einige Tabellenwerte basierend auf einem anderen Tabellenspaltenwert zu aktualisieren, stehe ich vor dem folgenden Problem.Problem beim Ausführen der bedingten PL/SQL-Anweisungen

PL/SQL-Abfrage:

DECLARE 
    buildVal NUMBER; 
BEGIN 
    SELECT BUILDVERSION 
    INTO buildVal 
    FROM WCSDBA.BUILDDETAILS 
    WHERE BUILDID =1; 
    IF (buildVal = 0) THEN 
     UPDATE WCSDBA.BUILDDETAILS 
      set BUILDVERSION = 1, 
       BUILDDESCRIPTION = 'FirstVersion' 
      WHERE BUILDID =1; 
     commit; 
    END IF; 
END; 

Ausnahme:

Query failed because: 
ORA-06550: line 9, column 3: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: ; The symbol ";" was substituted for "end-of-file" to continue. 

Jede Hilfe oder Anregungen auf dem gleichen

+0

Ich denke, dass verschiedene Revisionen und Änderungen den ursprünglichen Fehler und seine Zeilennummer verloren haben. Sie haben ursprünglich syntaktische Fehler für das streunende "AND" in der Mitte des zweiten Updates und das fehlende ';' nach 'END IF '. Beide sind jetzt weg und Zeile 9 ist das "UPDATE". Können Sie die aktuelle Fehlermeldung und Zeilennummer bestätigen? –

Antwort

1
DECLARE 
    buildVal NUMBER; 
BEGIN 
    SELECT BUILDVERSION INTO buildVal FROM WCSDBA.BUILDDETAILS WHERE BUILDID =1; 
    IF (buildVal = 0) THEN 
     UPDATE WCSDBA.student set stVersion =1; 
     UPDATE WCSDBA.BUILDDETAILS set BUILDVERSION = 1, BUILDDESCRIPTION = 'FirstVersion' WHERE BUILDID =1; --in this line 
     commit; 
    END IF; -- here 
END; 

versuchen diese bitte, können Sie das Semikolon vergessen haben, nach END IF und getrennte Update-Spalten von and anstelle von Komma

+0

Versuchte Ihre Vorschläge und trotzdem bekomme ich ein Problem. Die Abfrage und die Ausnahme wurden in der Frage ebenfalls aktualisiert. Habe ich etwas anderes vermisst? –

+0

@SQLLearner Sind Sie sicher, dass Sie korrekt mit der Datenbank verbunden sind? denn wenn ich dieses Skript in meiner db ausführe, bekomme ich keine Ausnahmen von der Syntax, nur die, die besagt, dass ich diese Tabellen nicht habe, was bedeutet, dass die Syntax in Ordnung ist – Hatik