Tja! Använd en cursor så kan du loopa igenom ett record och skriva till filen rad för rad. På detta sätt blir du inte begränsad av buffertens storlek (förutom om du vill ha mer än 1000000 tecken per rad i textfilen förstås). Skulle kunna se ut ungefär som nedan (OBS. Har inte testkört koden så den kan eventuellt innehålla fel som jag inte upptäckt):[PL/SQL Oracle] Skriva till fil?
Kanske inte är rätt forum men jag slänger iväg frågan trots allt. Är de någon som har erfarenhet av PL/SQL och att loopa över ett resultatsett och sedan skriva detta till fil? Jag har kört med dbms_ouput.put_line men då resultatsettet är stort och dbms_output endast klarar av 1000000 bytes så får jag ett buffer-owerflow exception. Någon som kan hjälpa mig?
// NickeSv: [PL/SQL Oracle] Skriva till fil?
<code>
DECLARE
output_file utl_file.file_type;
a t1.e%TYPE;
b t1.f%TYPE;
CURSOR t1_cursor IS
select e, f
from t1;
BEGIN
output_file := utl_file.fopen( '/tmp', 'test.txt', 'w' );
OPEN t1_cursor;
LOOP
FETCH t1_cursor INTO a, b;
EXIT WHEN t1_cursor%NOTFOUND;
utl_file.put_line(output_file, a || b);
END LOOP;
CLOSE t1_cursor;
utl_file.fclose(output_file);
END;
</code>