2016-12-09 14 views
0
create or replace procedure para_cursor_exe as 
cursor c_p_det(tar_val number) is select name, salary from fees where salary < tar_val; 
nname varchar2(30); 
ssalary number(5); 

begin 
<<block_exe>> 
begin 
Open c_p_det(&tar_val); 
LOOP 
FETCH c_p_det into nname, ssalary; 
DBMS_OUTPUT.PUT_LINE('NAME : ' || NNAME || ' :::: SALARY : ' || SSALARY); 
EXIT WHEN C_P_DET%NOTFOUND; 
END LOOP; 
CLOSE C_P_DET; 
end; 

execute immediate ' block_exe ' ; 
dbms_output.put_line('done processing !!'); 

end; 
/ 

SQL> @para_cursor_exe.sql; 
Enter value for tar_val: 1000 
old 9: Open c_p_det(&tar_val); 
new 9: Open c_p_det(1000); 

Procedure created. 

Die Prozedur kompiliert ausgeführt wird, aber auf Abruf gibt einen Fehler wieVerfahren erstellt, aber nicht

folgt
SQL> call para_cursor_exe; 
call para_cursor_exe 
* 
ERROR at line 1: 
ORA-06576: not a valid function or procedure name 

ich will Prozess das Verfahren dynamisch für verschiedene Zielwerte, die an den Cursor übergeben werden sollen bei Laufzeit. Wie rufe ich es an oder ist die Logik falsch?

+0

Bitte nicht ignorieren den Vorschlag, den Sie bekommen Fügen Sie ein bestimmtes DBMS-Tag hinzu, wenn Sie das SQL-Tag verwenden. Zu wissen, welche Datenbank Sie verwenden, ist notwendig, weil die Syntax und Funktionalität zwischen ihnen sehr unterschiedlich ist. –

+0

@Ken White .. Ich benutze Oracle und Ausführen von der Eingabeaufforderung. – codepoetly

+1

Ja, ich weiß. Ich habe das Oracle-Tag für Sie hinzugefügt. Sie sollten es selbst hinzugefügt haben, wenn Sie dazu aufgefordert wurden, wenn Sie Ihre Frage stellen, anstatt das rote Kästchen zu ignorieren, das besagt, dass Sie es hinzufügen sollten. –

Antwort

1

Der Fehler besagt, dass Aufruf ist keine gültige Funktion oder Prozedurname.

create or replace procedure p as begin null; end; 
/

Verwenden Anruf mit Klammern - ()

call p(); 

oder verwenden Sie keine Anruf bei allen

begin 
    p; 
end; 
+0

hatte beide Optionen ausprobiert, bevor hier gefragt und erneut versucht, aber nicht gehen ... Fehler besteht .. erhalten Sie einen neuen Fehler 'ungültige SQL-Anweisung' – codepoetly

+0

Dies ist wahrscheinlich, weil Ihr Code ungültig ist. 'select * from all_errors;' –

+0

Wenn der Code ungültig ist, wie kompiliert er dann? Was soll ich tun, damit es funktioniert? – codepoetly

Verwandte Themen