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
folgtSQL> 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?
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. –
@Ken White .. Ich benutze Oracle und Ausführen von der Eingabeaufforderung. – codepoetly
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. –