Oracle : stießen auf das symbol "end-of-file"
Ich stehe vor einem seltsamen problem. Es zeigt mir:
FEHLER in Zeile 28: PLS-00103: stießen auf das symbol "end-of-file", wenn Sie erwarten eine der folgenden Optionen:
den code ist unten:
CREATE OR REPLACE FUNCTION st_atten_up(stu_id IN student_info.id%type,app_mon IN student_attendence.month%type)
RETURN NUMBER
IS
PRAGMA AUTONOMOUS_TRANSACTION;
att1 NUMBER;
CURSOR c1(sid IN student_info.id%type, pmon IN student_attendence.month%type) IS
SELECT ATTENDANCE
FROM STUDENT_ATTENDENCE
WHERE id = sid and month = pmon;
-- You may want a smaller variable if you know the result will be smaller
BEGIN
open c1;
fetch c1(stu_id,app_mon) into att1;
c1;
att1 :=att1 + 1;
UPDATE STUDENT_ATTENDENCE
SET STUDENT_ATTENDENCE.ATTENDANCE = att1
where STUDENT_ATTENDENCE.ID = stu_id and STUDENT_ATTENDENCE.month = app_mon;
COMMIT;
return att1;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;
Verstehe ich nicht, was ist hier falsch.
Ist, dass
nicht nur in der code-block @Grau
Ah, ok, und ist das die gesamte Fehlermeldung? Es scheint, wie es über die Liste etwas. "erwartet Sie eine der folgenden..."?
Nein, es ist wie FEHLER in Zeile 28: PLS-00103: stießen auf das symbol "end-of-file", wenn Sie erwarten eine der folgenden Optionen: Ende nicht pragma final instantiable, um überschreiben von statischen member-Konstruktor Karte 1. CREATE or REPLACE-FUNKTION st_atten_up(stu_id IN student_info.id%type,app_mon IN student_attendence.Monat% - Typ) 2. RÜCKKEHR NUMMER 3. 4. PRAGMA AUTONOMOUS_TRANSACTION;
Ändern Sie Ihre update-Anweisung eine einzige Zeile statt 3 Linien, und schließen Sie den cursor ein (Ersetzen Sie c1; Zeile mit " close c1;). Sehen, ob dies hilft
/
am Ende in die eigentliche Datei, oder einfach nur Ihre code-block? Ursache wie es aussieht, ist das problem.nicht nur in der code-block @Grau
Ah, ok, und ist das die gesamte Fehlermeldung? Es scheint, wie es über die Liste etwas. "erwartet Sie eine der folgenden..."?
Nein, es ist wie FEHLER in Zeile 28: PLS-00103: stießen auf das symbol "end-of-file", wenn Sie erwarten eine der folgenden Optionen: Ende nicht pragma final instantiable, um überschreiben von statischen member-Konstruktor Karte 1. CREATE or REPLACE-FUNKTION st_atten_up(stu_id IN student_info.id%type,app_mon IN student_attendence.Monat% - Typ) 2. RÜCKKEHR NUMMER 3. 4. PRAGMA AUTONOMOUS_TRANSACTION;
Ändern Sie Ihre update-Anweisung eine einzige Zeile statt 3 Linien, und schließen Sie den cursor ein (Ersetzen Sie c1; Zeile mit " close c1;). Sehen, ob dies hilft
InformationsquelleAutor nixon1333 | 2013-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entfernen Sie die C1-Formular der Mitte der code und schauen Sie, ich habe getan, das gleiche im folgenden code bitte überprüfen Sie und lassen Sie mich wissen.
InformationsquelleAutor Harshit
Ich glaube, wir haben Konsens darüber erzielt, dass das problem ist die Linie, die liest
c1;
- das sollte wohlclose c1;
. Ich werde vorschlagen, eine etwas andere Lösung, das ist, verwenden Sie eine cursor-FOR-Schleife anstelle einer standalone-cursor, und beenden Sie die Schleife nach einer einzigen iteration. Dies beseitigt vollständig die Notwendigkeit zu prüfen, für die keine Daten abgerufen (was nicht im original gemacht) und IMO ist der code leichter zu Lesen und zu verstehen:Teilen und genießen.
InformationsquelleAutor Bob Jarvis