sql >> Databasteknik >  >> RDS >> Oracle

APEX:Ladda ner BLOB från den tillfälliga tabellen

Försök att lägga till apex_application.stop_apex_engine efter wpg_docload ringa upp. Detta kommer att undvika ytterligare utmatning av HTTP-rubriker, vilket potentiellt försämrar din nedladdning eftersom ytterligare apex-kod genereras.

  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;

Dessutom, för att utveckla :

Ja. Men inte nödvändigtvis i ditt fall. Det är viktigt att komma ihåg hur apex fungerar med avseende på databassessioner. Apex är tillståndslöst och fungerar med anslutningspoolning. En apex-session stämmer i allmänhet inte överens med 1 databassession, och du är aldrig garanterad att till exempel samma databassession används mellan rendering och bearbetning. Detta nämns också kort i dokumentationen på Förstå Session State Management , kopierad för enkelhetens skull:

I fallet med en global temporär tabell betyder detta att den är meningslös att använda i många fall eftersom data endast kommer att finnas i den aktuella databassessionen. Ett exempel på detta är där man skulle ladda data i en GTT någonstans i onloaden och innebär att använda den i processerna efter att skicka in eller ett ajax-samtal. Stor chans att tabellen blir tom.
Apex erbjuder dock ett alternativ i form av apex_collection , som tillfälligt kommer att hålla data inom en given apex-session.



  1. Hur man förhindrar PostgreSQL från att ändra mina snyggt formaterade SQL-definitioner

  2. Välj poster stegvis i MySQL och spara till csv i Python

  3. Säkra MySQL - Använda dataåtkomsträttigheter för en säker installation

  4. hur kan påverka prestanda när jag använder UUID som mina primära nycklar i MySQL