Oracle:Вызов нескольких процедур в пакетном режиме

StackOverflow https://stackoverflow.com/questions/923389

  •  06-09-2019
  •  | 
  •  

Вопрос

Мне нужно последовательно вызвать несколько различных процедур в пакете 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.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top