Erstellen einer in Oracle Gespeicherten Prozedur und Ausführung aus .sql-Datei
Habe ich zwei .sql-Dateien sind gespeicherte Oracle-Prozeduren, die beide in der input-Parameter. Ich möchte zuerst eine Verbindung zu einer remote-oracle-Datenbank mit sqlplus in die Befehlszeile ein und wollen, verwenden Sie zuerst beide Dateien zu erstellen, die Ihren jeweiligen gespeicherten Prozeduren, so sehe ich Sie unter Verfahren für die Verbindung in Oracle SQL Developer.
Danach habe ich noch zwei weitere .sql-Dateien, die so Aussehen und sind darauf ausgelegt, input-Parametern und ausführen der gespeicherten Prozeduren. Dies ist eine der Dateien gemeint ist, die zum ausführen der gespeicherten Prozedur "BERICHT".
DECLARE
NAME VARCHAR2(200);
VERSION VARCHAR2(200);
STARTDATE DATE;
ENDDATE DATE;
BEGIN
NAME := '&1';
VERSION := '&2';
STARTDATE := '&3';
ENDDATE := '&4';
exec REPORT(NAME, VERSION, STARTDATE, ENDDATE);
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20101,SQLERRM);
END;
/
In der Eingabeaufforderung, die ich zuerst versuchen, erstellen Sie die gespeicherte Prozedur in der Datenbank:
C:\Benutzer\Desktop - >sqlplus Benutzername/Passwort @report_setup.sql
Wenn ich versuche, diese die Ausgabe ist nur leere Zeilen, die nummeriert sind, beginnend bei der Zahl 1 größer ist dann die Letzte Zeile meiner .sql-Datei. Meine report_setup.sql-Datei 81 Zeilen lang und der Ausgang der sqlplus-Befehl leer ist numerierten Zeilen, beginnend bei 83.
Bitte lassen Sie mich wissen, wie kann ich erstellen und diese gespeicherten Prozeduren ausführen richtig durch sqlplus.
Vielen Dank im Voraus,
InformationsquelleAutor javakid1993 | 2013-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie haben zu entfernen, die 'exec'-Wort, und es ist entscheidend, um den Schrägstrich unten am Anfang der Zeile, ohne Leerzeichen davor:
startdate
undenddate
(und es scheint nicht viel Sinn zu deklarieren/festlegen diese sowieso), das wird wahrscheinlich scheitern eines Tages.InformationsquelleAutor Njal
Wäre es sinnvoller gewesen zu zeigen, die
report_setup.sql
als das Skript, das die Prozedur aufruft, die es schafft... aber von den Symptomen die Sie beschreiben, diereport_setup.sql
nicht ein/
am Ende der Prozedur-Deklaration.Hat es vermutlich so etwas wie:
Muss es haben
Da Sie bist, läuft es von der Kommandozeile aus mit
@
es sollte auch eineEXIT
am Ende; aber ohne die/
behandelt werden als Teil des Verfahrens, das sich noch nie kompiliert.Können Sie unterdrücken die Nummer der Zeile angezeigt, übrigens durch Aufruf von SQL*Plus mit der
-s
flag - obwohl im moment, Sie sind nützlich, da Sie zeigen etwa, was das problem ist.InformationsquelleAutor Alex Poole
Hatte ich ein ähnliches Problem. Das problem war die Codierung verwendet,
sqlplus
erwartetUTF-8
standard-enconding, wo andere Codierung verursachen seltsame Verhalten.InformationsquelleAutor user10951635