Mam kod uruchamiany na przycisk. Program wczytuje najpierw plik, mieli dane w tabelach a na koniec wypluwa go za pomocą poniższego kodu. Przy pliku wejściowym podawane jest kodowanie pliku, w tym samym kodowaniu plik powinien zostać wydrukowany. Domyślne kodowanie bazy to ISO 8859-2. Plik się generuje ale powstają krzaki. Próbowałem pobierać plik bez convertów przy htp.ptn. Potem już wraz z konwertowaniem. Na razie za każdym razem kodowanie pliku jest niepoprawne.
Plik wchodził z kodowaniem windows 1250 więc pod zmienną l_kodowanie znajduje się EE8MSWIN1250. Wiecie czemu taka konstrukcja nie działa?
DECLARE
l_sep VARCHAR2(1) := ';';-- znak separatora
l_endl VARCHAR2(5) := chr(13)||chr(10); -- koniec linii w systemie windows
l_nazwa_pliku VARCHAR2(100);
l_naglowek VARCHAR2(200);
l_kodowanie VARCHAR2(20);
l_kodowanie_base VARCHAR2(20) :='EE8ISO8859P2';
BEGIN
SELECT nazwa_pliku
INTO l_nazwa_pliku
FROM repozytorium
WHERE id = (SELECT max(id) FROM repozytorium);
SELECT naglowek, kodowanie INTO l_naglowek, l_kodowanie FROM clob_przechowalnia_pliku;
owa_util.mime_header('application/octet', FALSE);
htp.p('Content-Disposition: attachment; filename='||l_nazwa_pliku);
owa_util.http_header_close;
htp.prn(convert(l_naglowek||l_sep||l_endl,l_kodowanie,l_kodowanie_base));
FOR x IN (SELECT liczba_porzadkowa,
imie,
nazwisko
FROM klient
ORDER BY id)
LOOP
htp.prn(convert(x.liczba_porzadkowa||l_sep||
x.imie||l_sep||
x.nazwisko||l_sep||l_endl,l_kodowanie, l_kodowanie_base));
END LOOP;
htmldb_application.g_unrecoverable_error := true;
END;