Oracle:Вызов нескольких процедур в пакетном режиме
Вопрос
Мне нужно последовательно вызвать несколько различных процедур в пакете Oracle в рамках транзакции.На самом деле, мне нужно позвонить им около 5000 раз.Мне было интересно, какой синтаксис я мог бы использовать для пакетной отправки этих вызовов в Oracle, поэтому мне нужен только один переход туда и обратно.Я пытался
PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5;
но я получаю ответ ORA00900:недопустимый оператор SQL.
Есть какие-нибудь указания?Я знаю о передаче массивов параметров процедурам, но, к сожалению, в данном случае это не сильно поможет.
Решение
Самый простой - это анонимный блок PL / SQL.НАПРИМЕР:
DECLARE
v_file_loc varchar2(100) := '....';
v_file_name varchar2(100) := '....';
v_text varchar2(4000);
BEGIN
dbms_output.put_line('Starting file read');
fp := UTL_FILE.FOPEN(v_file_loc,v_file_name,'r');
LOOP
utl_file.GET_LINE(fp,v_text);
dbms_output.put_line(v_text);
END LOOP;
UTL_FILE.FCLOSE(fp);
END;
/
Затем вы можете выполнить дополнительный шаг и фактически создать это как процедуру в базе данных и просто вызвать процедуру.PS.Косая черта в конце указывает SQL* Plus или SQL Developer на выполнение кода.Это зависит от того, что вы используете для запуска SQL.
Другие советы
И оплачивать поездку по сети туда и обратно за каждый звонок?Звучит как смерть для представления.Возможно, было бы лучше переписать сохраненную процедуру, чтобы вы могли сократить сетевой трафик.