Avatar billede jacobve Nybegynder
16. april 2001 - 21:35 Der er 13 kommentarer og
2 løsninger

lave en .txt fil i oracle??

Jeg arbejder pt. med et projekt hvor det skal være muligt at kunne brevflette med word på baggrund af poster i en tabel.

Da jeg ved det er muligt for word at brevflette fra en .txt fil (bare indholdet har det rigtige format), vil jeg høre om der er nogen der ved om det er muligt - vha. PL/SQL at lave sådan en .txt fil og gemme den på disken? eller der er andre måder at lave en tekstfil vha oracle?

oracle vers. 7.3.2.1.1
PL/SQL vers. 2.3.2.0.0
Avatar billede holdam Nybegynder
16. april 2001 - 22:22 #1
Du kan benytte den package, der hedder utl_file. Den indeholder C-lignende funktioner til at åbne, skrive i og læse fra filer (og lukke dem igen efter brug). Suffix angiver man selv, så det kan f.eks. være .txt.

Bemærk, at der findes en initialiseringsparameter (utl_file_dir), som angiver tilladte kataloger - altså kataloger, hvor Oracle må skrive filer. Hvis du ikke har problemer med rettigheder, kan du lade parameteren have værdien *, da det angiver hele filsystemet (i hvert fald for Unix).
Avatar billede jacobve Nybegynder
16. april 2001 - 22:32 #2
Skal jeg importere den package på nogen måde eller kan jeg bare bruge de forskellige funktioner? (kommer fra java og har ikke så meget kendskab til oracle)

Hvor kan jeg se hvilke funktioner der ligge i den package?
Avatar billede jacobve Nybegynder
16. april 2001 - 23:03 #3
Jeg har kigget lidt i forms 4.5 som jeg bruger og der er en package der hedder text_io... skulle den ikke kunne klare problemerne?
Avatar billede Slettet bruger
16. april 2001 - 23:45 #4
Som holdam skriver, kan du benytte UTL_FILE.

Men desværre, UTL_FILE kan kun skrive filer til steder, som *serveren* kan se...

Hvis du har adgang til Forms, er TEXT_IO udmærket, men man kunne også bare bruge SQL*Plus.

Hvis du bruger SQL*Plus, kan du køre den fra kommandolinien a la:

> sqlplus scott/tiger@zoo @script

Din fil script.sql skal så indledes med diverse kommandoer, der kan undertrykke det output, du vil have filtreret fra.

Se dokumentation: http://technet.oracle.com/docs/products/oracle7/doc_index.htm (du skal først registrere dig, gratis).

Fx kunne man returnere en fil med en række med to tabulator-separerede værdier, hvis indeholde script.sql indeholdt følgende:

SET TRIMSPOOL ON
SET HEADING OFF
SET FEEDBACK OFF
SPOOL en_fil.txt
SELECT \'TEST 1\'||CHR(9)||\'TEST 2\'
FROM DUAL;
SPOOL OFF
EXIT

Leg lidt med parametrene til SET. Man kan meget, hvis man lige bruger tiden til det.
Avatar billede Slettet bruger
16. april 2001 - 23:47 #5
Hov! Linket var ikke godt nok. Her er det: http://technet.oracle.com/doc/server73x/SP33/toc.htm
Avatar billede pnielsen Nybegynder
17. april 2001 - 02:23 #6
Og så skal databasen lige have rettigheder på i os\'en/disksystemet!

Sæt f.eks.:
Utl_file_dir=c:\\temp

Skal sættes i din init.ora fil!
Har du flere directories, kan du vist nok bare adskille med komma!

Godnat
Avatar billede holdam Nybegynder
17. april 2001 - 09:00 #7
utl_file er (bør være) en del af standard-installationen, dvs. den bør være umiddelbart tilgængelig for dig.

Du kan finde en beskrivelse samme sted som joern_h henviser til, nemlig ved at følge linket http://technet.oracle.com/doc/server73x/ADG73/ch8.htm#toc089

En anden mulighed er at kigge i filen $ORACLE_HOME/rdbms/admin/utlfile.sql (hvis du har adgang til databaseserveren og Oracle-programmellet).

Lige en kommentar til pnielsen: Hvis man har brug for flere utl_file_dir indgange i init.ora-filen, skal de stå på hver sin linie.

Avatar billede Slettet bruger
17. april 2001 - 09:10 #8
Hvis du har adgang til VBA, burde du måske overveje at bruge Oracle Objects For OLE i stedet for. Du får da håndtag til databasen fra Visual Basic via ODBC:

http://technet.oracle.com/tech/nt/ole/listing.htm

Download via

http://technet.oracle.com/software/tech/nt/ole/software_index.htm
Avatar billede Slettet bruger
17. april 2001 - 09:11 #9
Ups: Endnu en bommert: OO4O (Oracle Objects for OLE) bruger ikke ODBC.
Avatar billede pnielsen Nybegynder
17. april 2001 - 12:30 #10
Hej Holdam.
Nu har jeg lige slået den op, så jeg var sikker! Du har ret i at man kan sætte den på flere linier, men pas på med det!
HVIS dine utl_file_dir ikke står efter hinanden i din init.ora, vil i nogle tilfælde
kun den sidste angivne virke!
Det ser ud som om at det kan give problemer, hvis du har andre værdier sat, imellem 2
utl_file_dir !
Hvis du har adgang til metalink, så prøv lige at tage et kig på 108506.1!

.... dokumentationen:
Another option is to include all propagated directories in one utl_file_dir
parameter\'s value, separated by a comma and space similar to the following:
utl_file_dir=/tmp, /usr

 
Avatar billede holdam Nybegynder
17. april 2001 - 12:36 #11
Hej PNielsen

Jeg tog udgangspunkt i Oracle8i-dokumentationen, hvor man kan læse følgende under utl_file_dir:

\"UTL_FILE_DIR lets you specify one or more directories that Oracle should use for PL/SQL file I/O. If you are specifying multiple directories, you must repeat the UTL_FILE_DIR parameter for each directory on separate lines of the initialization parameter file. 

...

Note: If you list multiple values, all entries of this parameter must be on contiguous lines of the parameter file. If you separate them with other parameters, Oracle will read only the last (contiguous) lines\"

Der bliver man advaret om, at man ikke må sætte andre parametre undervejs, som du skriver. Men jeg var faktisk ikke klar over, at man kunne skrive flere kataloger på samme linie.
Avatar billede pnielsen Nybegynder
17. april 2001 - 12:47 #12
Godt :)

Ja, det er jo også en måde at fortælle at der er en Bug på. Simplethen
bare fortælle i dokumentationen, at de SKAL stå efter hinanden :)

Avatar billede jacobve Nybegynder
17. april 2001 - 16:59 #13
wow.. der er sku virkelig kommet gang i sagerne her :-)

Jeg kigger lige på det og vender tilbage senere i aften... så skal jeg nok accepter svar.

Hvad angår OLE objekter, ville det være den mest elegante løsning hvad jeg kan forstå, men jeg synes den hjælp man kan finde i selve forms designer er lidt tynd (eller jeg kan i hvertfald ikke finde hoved eller hale i OLE objekter), er der et sted på nettet hvor jeg kan læse mere om dette?
Avatar billede Slettet bruger
18. april 2001 - 08:15 #14
jacobve --> Hvis du med \'OLE objekter\' tænker på Oracle Objects for OLE, så har det ikke noget med Forms Developer at gøre. Det er en pakke, du bruger fra fx. Word. Se et eksempel med ASP på http://www.vbip.com/books/1861003927/chapter_3927_08.asp
Avatar billede jacobve Nybegynder
18. april 2001 - 16:31 #15
takker... jeg kigger på det, men jeg har fundet ud af at man via DDE packagen i forms, kan sende kommandoer til andre windowsprogrammer fx. excel og word (som jeg skal bruge). Jeg tror jeg kan sende en kommando til word, der så brevfletter på baggrund af nogle data jeg sender med, eller fra en txt fil jeg selv har genereret... men det kigger jeg lidt på... Jeg takker for alle indlæg der har været og så lærte jeg også noget denne gang :-)
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