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.
Процедура компилируется, но по вызову дает ошибку следующим образомпроцедура создана, но не выполняет
SQL> call para_cursor_exe;
call para_cursor_exe
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name
я хочу процесс описанную процедуру динамически для различных целевых значений, которые, как предполагается, должны быть переданы курсора на во время выполнения. Как я называю это или логика ошибочна?
Пожалуйста, не игнорируйте предложение вы получите в добавьте конкретный тег СУБД при использовании тега SQL. Знание того, какая база данных вы используете, необходима, потому что синтаксис и функциональность значительно отличаются между собой. –
@Ken White .. Я использую oracle и запускаю из командной строки. – codepoetly
Да, я знаю. Я добавил тэг Oracle для вас. Вы должны были добавить его сами, когда было предложено сделать это, когда задавали свой вопрос, вместо того, чтобы игнорировать появившееся красное поле, в котором вы должны добавить его. –