sql >> Databáze >  >> RDS >> Oracle

APEX:Stáhněte BLOB z dočasné tabulky

Zkuste přidat apex_application.stop_apex_engine po wpg_docload volání. Vyhnete se tak dalšímu výstupu HTTP hlaviček, což by mohlo zkazit stahování, protože se generuje další apex kód.

  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;

Dále k upřesnění:

Ano. Ale ne nutně ve vašem případě. Je důležité si pamatovat, jak funguje apex s ohledem na databázové relace. Apex je bezstavový a pracuje s poolingem připojení. Relace vrcholu se obecně neshoduje s 1 relací databáze a nikdy nemáte zaručeno, že například mezi vykreslením a zpracováním bude použita stejná relace databáze. Toto je také krátce zmíněno v dokumentaci na Pochopení správy stavu relace , pro usnadnění zkopírováno:

V případě globální dočasné tabulky to znamená, že je v mnoha případech zbytečné, protože data budou existovat pouze v této aktuální databázové relaci. Příkladem je situace, kdy by člověk načítal data v GTT někde v onload a chtěl je použít v procesech po odeslání nebo volání ajax. Velká šance, že stůl bude prázdný.
Apex však poskytuje alternativu ve formě apex_collection , který bude dočasně uchovávat data v rámci dané vrcholové relace.



  1. SQL Transponujte řádky jako sloupce

  2. Formát čísla data z databáze

  3. Vkládání hodnot do databáze mysql nefunguje podle očekávání

  4. Jak zobrazit obsah tabulky v GUI Mysql Workbench?