@marselabdullin

Как скачать json через pl/sql процедуру в Oracle-apex?

У меня есть кнопка с dynamic action и типом - execute js, js запускает процесс, который запускает процедуру

Процедура грузит данные - выбранные из базы данных и преобразованные в clob, а затем в blob.
Но файл не загружается, при нажатии на кнопку
P.S. решение для аналогичной задачи, но у меня не работает
https://community.oracle.com/tech/developers/discu...

Procedure Code

create or replace procedure "CREATE_CODOGEN_JSON"
(target_table_param IN VARCHAR2)
is
l_blob_content blob;
lol clob;
v_dest_offset integer := 1;
v_src_offset integer := 1;
v_lang_context  integer := DBMS_LOB.DEFAULT_LANG_CTX;
v_warning       integer := DBMS_LOB.WARN_INCONVERTIBLE_CHAR;
BEGIN
SELECT 
to_clob(
    json_object(
'task_id' VALUE TARGET_TABLE))
into lol 
from UKDA.CODOGEN_META_TABLES
WHERE TARGET_TABLE = 'rv_lol';

dbms_lob.createtemporary(l_blob_content, true, DBMS_LOB.CALL);
sys.htp.init;
sys.OWA_UTIL.mime_header('application/json', FALSE, 'UTF-8');
sys.HTP.p('Content-Length: ' || DBMS_LOB.getlength(lol));
sys.HTP.p('Content-Disposition: attachment; filename="'||'FILE_NAME.json'||'"');
dbms_lob.converttoblob(
    dest_lob    => l_blob_content,
    src_clob    => lol,
    amount      => DBMS_LOB.LOBMAXSIZE,
    dest_offset => v_dest_offset,
    src_offset  => v_src_offset,
    blob_csid   => DBMS_LOB.DEFAULT_CSID,
    lang_context=> v_lang_context,
    warning     => v_warning
);
sys.WPG_DOCLOAD.download_file(l_blob_content);
DBMS_LOB.FREETEMPORARY (l_blob_content);
apex_application.stop_apex_engine;
end;
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы