2009-12-06 4 views
35

Ich benutze Orakel 10g Express Edition. Es hat eine nette UI für db Entwickler. Aber ich habe einige Probleme beim Ausführen von gespeicherten Prozeduren.Wie führe ich eine gespeicherte Orakel-Prozedur aus?

Vorgehen:

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end 

es erfolgreich erstellt wurde. Aber wenn ich ausführen:

execute temp_proc;

es zeigt ORA-00900: ungültige SQL-Anweisung

Also hier Hilfe benötigt

+1

Das ist für SQLPlus gültig ist - wie werden Sie es zu laufen versuchen? –

+0

Zuerst gehe ich auf "Zur Datenbank Home Page", dann Home> SQL> SQL Commands. Dann erstellen Sie die Prozedur und führen Sie sie aus. – FlintOff

+0

Welche Software verwenden Sie? –

Antwort

51

Execute ist SQL * Plus Syntax .. versuchen, Ihren Anruf beginnen .. enden wie diese Verpackung:

begin 
    temp_proc; 
end; 

(Obwohl Jeffrey sagt, dass dies nicht in APEX funktioniert .. aber Sie versuchen, Holen Sie dies in SQLDeveloper ausführen .. versuchen Sie das "Ausführen" -Menü dort.)

+2

Dies funktioniert vollständig in APEX. Ich habe es gerade überprüft. – InamTaj

-1

Haben Sie versucht, die Syntax zu korrigieren, wie dies ?:

create or replace procedure temp_proc AS 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 
+4

'IS' sollte korrekt sein. – Thorsten

+1

Was ich sehe, ist, dass Sie gerade IS zu AS geändert haben und ein Semikolon am Ende des Schlüsselwortes 'end' hinzugefügt haben. Obwohl das Hinzufügen von Semikolon in Ordnung ist, sagt OP, dass die Kompilation erfolgreich war, so dass das nicht das Problem sein kann. Das Problem ist, dass OP nicht wusste, wie proc ausgeführt wird, die in der akzeptierten Antwort bereits korrekt adressiert wurden. Diese Antwort ist falsch. – nanosoft

3

Oracle 10g Express Edition wird mit Oracle Application Express (Apex) ausgeliefert. Sie führen dies in seinem SQL-Befehlsfenster aus, das die SQL * Plus-Syntax nicht unterstützt.

Das ist egal, weil (wie Sie entdeckt haben) die BEGIN ... END-Syntax in Apex funktioniert.

2

Sowohl "ist" und "als" sind gültige Syntax. Die Ausgabe ist deaktiviert standardmäßig. Versuchen Sie, ein Verfahren, das auch die Ausgabe ermöglicht ...

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.ENABLE(1000000); 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 

... und nennen es in einem PLSQL Block ...

begin 
    temp_proc; 
end; 

... als SQL nicht-prozedurale ist.

0
begin 
    temp_proc; 
end; 

Ich muss euch daran erinnern, dass „temp_proc“ muss das Synonym sein ...