У меня есть процедура, которая вызывается на стороне сервера, и мне нужно сделать ее асинхронной.
Итак, я создал еще один процесс, в котором я создам Oracle'Job, и он будет вызывать этот процесс в его job_action.
Процесс это:
PROCEDURE upload_csv_file_data(a_what_to_do IN VARCHAR2,
a_logon_user IN VARCHAR2,
a_csv_data IN CLOB)
IS
v_job_action VARCHAR2(32676);
/*v_log_error VARCHAR2(32676);*/
v_job_name VARCHAR2(100);
BEGIN
v_job_action := 'process_csv_file_data(''' || a_what_to_do || ''',''' || a_logon_user || ''',' || a_csv_data || ');';
v_job_name := 'UPLOAD_CSV_FILE_DATA';
sys.dbms_scheduler.create_job(
job_name => v_job_name,
job_type => 'PLSQL_BLOCK',
job_action => 'begin ' || v_job_action || ' EXCEPTION WHEN OTHERS THEN NULL; end;',
start_date => SYSTIMESTAMP,
job_class => 'BATCH_CLASS',
comments => 'Start uplaoding CSV file data.',
auto_drop => TRUE,
enabled => TRUE);
END;
Proc, который нужно назвать IN JOB:
CREATE OR REPLACE PROCEDURE process_csv_file_data(a_what_to_do IN VARCHAR2,
a_logon_user IN VARCHAR2,
a_csv_data IN CLOB)
IS
.
/*STEPS*/
.
END;
Но так как одним из параметров передачи для этого PROC является CLOB, следовательно, всякий раз, когда я пытаюсь вызвать это использование PROC в JOB, выдается ошибка «ORA-06502: PL / SQL: ошибка числового значения или значения».
Поскольку тип данных job_action имеет тип VARCHAR2 (4000); и, следовательно, в тот момент, когда тип данных CLOB динамически передается при вызове proc в действии Job, он выдает ошибку «ORA-06502: PL / SQL: ошибка числа или значения»
Просьба предложить по этому вопросу.
(можем ли мы передать параметры, используя переменные связывания?)