sql >> Databasteknik >  >> RDS >> Oracle

Importera filer i Oracle Apex med wwv_flow_files

Anta att du vill importera en csv-filinnehåll med anpassad databasprocedur i Oracle Apex med hjälp av filbläddringssida. Följ dessa steg:Skapa fil bläddra sidobjekt i Apex och välj alternativet wwv_flow_files för att lagra filen.Skapa sedan sidprocessen och välj efter inlämning och exekvering av valideringsalternativ och plsql-kodalternativ för processen. Skriv följande kod i plsql-området att exportera csv-fil från databasen (wwv_flow_files view) till serverenheten och sedan anropa din anpassade procedur för att importera filens innehåll till en tabell.DECLARE
v_upl_blob BLOB;
vstart Number :=1;
bytelen Number :=32000;
len Number;
my_vr Raw (32000);
x Number;
l_output Utl_file.file_type;
erout varchar2(1000);
BEGIN
VÄLJ blob_content
INTO v_upl_blob
FRÅN wwv_flow_files
WHERE name =:P25_FB;
-- :p25_fb är filbläddringsobjektet på sidan
LEN :=Dbms_lob.getlength(V_UPL_BLOB);
l_output :=Utl_File.fopen ('MY_FILES', :P25_FB, 'wb', 32760);
vstart :=1;
bytelen :=32000;
IF len <32760
Sedan
Utl_File.put_raw (l_output, V_UPL_BLOB);
Utl_File.fflush (l_output);
Annars -- skriv i bitar
vstart :=1;

WHILE vstart 0
LOOP
Dbms_lob.Read (V_UPL_BLOB, bytelen, vstart, my_vr);
Utl_File.put_raw (l_output, my_vr);
Utl_File.fflush (l_output);
-- ställ in startpositionen för nästa klipp
vstart :=vstart + bytelen;
-- ställ in slutpositionen om mindre än 32000 byte
x :=x - bytelen;

IF x <32000
Sedan
bytelen :=x;
END IF;
END LOOP;
END IF;

Utl_File.fclose (l_output);

DELETE FROM wwv_flow_files
WHERE name =:P25_FB;
COMMIT;
--- anropa din anpassade databasprocedur för att importera...
yourcustomprocedure(:P25_FB);
UNDANTAG När Andra

IF Utl_File.is_Open(l_output) Then
Utl_File.fclose (L_OUTPUT);
END IF;
höja;
END;

  1. Hur många användare har tillgång till support?

  2. PDO med INSERT INTO genom upprättade utlåtanden

  3. Antal rader som påverkas av en UPPDATERING i PL/SQL

  4. Hur man lägger till sekvensnummer för varje element i en grupp med hjälp av en SQL-fråga utan temporära tabeller