sql >> Database >  >> RDS >> Oracle

APEX:BLOB downloaden van tijdelijke tabel

Probeer apex_application.stop_apex_engine na de wpg_docload telefoongesprek. Dit voorkomt verdere uitvoer van HTTP-headers, waardoor uw download mogelijk wordt verpest omdat er meer apex-code wordt gegenereerd.

  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;

Verder, om uit te leggen:

Ja. Maar niet noodzakelijk in jouw geval. Het is belangrijk om te onthouden hoe apex werkt met betrekking tot databasesessies. Apex is state-less en werkt met pooling van verbindingen. Een apex-sessie komt over het algemeen niet overeen met 1 databasesessie, en je bent nooit zeker dat bijvoorbeeld dezelfde databasesessie wordt gebruikt tussen render en verwerking. Dit wordt ook kort vermeld in de documentatie op Sessiestatusbeheer begrijpen , voor het gemak gekopieerd:

In het geval van een globale tijdelijke tabel betekent dit dat het in veel gevallen zinloos is om deze te gebruiken omdat de gegevens alleen in die huidige databasesessie zullen bestaan. Een voorbeeld hiervan is waar men gegevens in een GTT ergens in de onload zou laden en betekent om deze te gebruiken in de after-submit-processen of een ajax-oproep. Grote kans dat de tafel leeg is.
Apex biedt echter een alternatief in de vorm van apex_collection , die tijdelijk gegevens vasthoudt binnen een bepaalde apex-sessie.



  1. SQL-verzoek om te zien of een periode volledig is gedekt

  2. Meer over de introductie van tijdzones in langlevende projecten

  3. Fix Msg 529 "Expliciete conversie van gegevenstype int naar xml is niet toegestaan" in SQL Server

  4. MySQL Hoe een nieuw record invoegen of een veld bijwerken, afhankelijk van of het bestaat?