2016-12-09 9 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. 

Процедура компилируется, но по вызову дает ошибку следующим образомпроцедура создана, но не выполняет

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

я хочу процесс описанную процедуру динамически для различных целевых значений, которые, как предполагается, должны быть переданы курсора на во время выполнения. Как я называю это или логика ошибочна?

+0

Пожалуйста, не игнорируйте предложение вы получите в добавьте конкретный тег СУБД при использовании тега SQL. Знание того, какая база данных вы используете, необходима, потому что синтаксис и функциональность значительно отличаются между собой. –

+0

@Ken White .. Я использую oracle и запускаю из командной строки. – codepoetly

+1

Да, я знаю. Я добавил тэг Oracle для вас. Вы должны были добавить его сами, когда было предложено сделать это, когда задавали свой вопрос, вместо того, чтобы игнорировать появившееся красное поле, в котором вы должны добавить его. –

ответ

1

Ошибка указывает, что звонок не является допустимым именем функции или процедуры.

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

Использование вызова с скобкой - ()

call p(); 

или не использовать вызов на всех

begin 
    p; 
end; 
+0

попробовал оба варианта даже перед тем, как спросить здесь и попробовал еще раз, но не пошел ... ошибка сохраняется .. получить новую ошибку 'invalid sql statement' – codepoetly

+0

Возможно, это связано с тем, что ваш код недействителен. 'select * from all_errors;' –

+0

Если код недействителен, то как он компилируется правильно? n что я должен сделать, чтобы заставить его работать? – codepoetly

Смежные вопросы