Опитайте да добавите apex_application.stop_apex_engine след wpg_docload
повикване. Това ще избегне по-нататъшно извеждане на HTTP заглавки, което потенциално ще прецака вашето изтегляне, тъй като се генерира допълнителен apex код.
owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );
htp.p('Content-length: ' || v_length);
htp.p('Content-Disposition: attachment; filename="'||replace(replace(substr(v_file_name,instr(v_file_name,'/')+1),chr(10),null),chr(13),null)|| '"');
owa_util.http_header_close;
wpg_docload.download_file( Lob_loc );
apex_application.stop_apex_engine;
Освен това, за да уточним:
да Но не е задължително във вашия случай. Важно е да запомните как работи apex по отношение на сесиите на базата данни. Apex е без състояние и работи с групиране на връзки. Апекс сесията обикновено не съвпада с 1 сесия на базата данни и никога не сте гарантирани, че например една и съща сесия на базата данни се използва между изобразяване и обработка. Това също е споменато накратко в документацията на Разбиране на управлението на състоянието на сесията , копирано за удобство:
В случай на глобална временна таблица това означава, че е безсмислено да се използва в много случаи, тъй като данните ще съществуват само в тази текуща сесия на базата данни. Пример за това е, когато човек би заредил данни в GTT някъде в onload и означава да ги използва в процесите след изпращане или ajax повикване. Голям шанс таблицата да е празна.
Apex обаче предоставя алтернатива под формата на apex_collection
, който временно ще съхранява данни в дадена апекс сесия.