Avatar billede kronsj Nybegynder
12. august 2009 - 16:09 Der er 4 kommentarer

utl_file.put indsætter ekstra Cr

Jeg sidder med en opgave, hvor der skal spooles noget tekst til en fil fra en Oracle DB, og jeg bruger utl_file.put funktionen.
I teksten indgår der bl.a. CrLf. Men hver gang Lf (LineFeed - char(10)) indgår, bliver der tilføjet et ekstra char(13).
Hvilket betyder:
Char(10) bliver til Char(13)+Char(10)
Char(13)+Char(10) bliver til Char(13)+Char(13)+Char(10)

Jeg bruger Oracle 9 som kører på et windows server 2003 miljø.

.. nogen der kender noget til det

Pft
Avatar billede arne_v Ekspert
12. august 2009 - 18:19 #1
Ikke nogen elegant loesning men: kunne du erstatte CRLF med LF inden du skriver saaledes at CRLF--(replace)-->LF--(put)-->CRLF ?
Avatar billede steber Nybegynder
13. august 2009 - 08:10 #2
Jeg kan dårligt huske det ... men er det ikke noget med at et linieskift i unix-verdenen er LF - chr(10) - mens det er CRLF i windows. Det afspejles i utl_file.put.
Måske kan du bruge utl_file.fopen( ..., ..., 'wb');
hvor wb = write byte mode, og så bruge
utl_file.put_raw( ..., utl_raw.cast_to_raw( ...));
Avatar billede kronsj Nybegynder
13. august 2009 - 09:39 #3
Det kan tyde på at det er en Oraclefejl, da både utl_file og spool kommandoerne umiddelbart skaber samme output-fejl; og situationen er vidst kendt i nogle kredse:
hvor wb = write byte mode, og så bruge

http://dbaspot.com/forums/oracle-server/4388-utl_file-replaces-0a-0d-0a.html
Avatar billede kronsj Nybegynder
13. august 2009 - 09:40 #4
.. wb parameteren kom vidst ikke før Oracle 10...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester