Re: [oracle_br] Ainda o UTL_FILE...
Até onde sei o Oracle cria apenas o arquivo caso este não exista através do modo de abertura do utl_file.fopen. Porém como vc sabe o UTL_FILE_DIR necessita de um reboot para ter validade. A partir do Oracle 9i surgiu o conceito de directory, que é uma forma mais flexível de trabalhar com o pacote utl_file, veja um exemplo... create or replace directory EXPORTS as 'c:\exports'--- cria um objeto no banco do tipo diretorio depois de criado o diretorio vc deve dar privilegios de read ou write pro usuario... grant read,write on directory exports to usuario No meu exemplo fiz tudo como system por preguiça :) Veja um código PL/SQL bem simples... create or replace procedure stp_cria_arquivo(diretorio in varchar2, arquivo in varchar2) is arquivo_saida utl_file.file_type; begin arquivo_saida := utl_file.fopen(location = diretorio,filename = arquivo,open_mode = 'w'); utl_file.put_line(arquivo_saida,'teste123'); utl_file.fclose(arquivo_saida); end stp_cria_arquivo; Agora veja a flexibilidade SQL exec stp_cria_arquivo('EXPORTS', 'teste1.txt') ; SQL ho type c:\exports\teste1.txt teste123 Vamos mudar o diretorio exports para c:\abc create or replace directory EXPORTS as 'c:\abc' ; Agora vamos executar novamente a procedure SQL exec stp_cria_arquivo('EXPORTS', 'teste1.txt') ; SQL ho type c:\abc\teste1.txt teste123 Veja que alterei apenas o destino do objeto directory e nao foi necessário reboot do servidor :) []'s [EMAIL PROTECTED] wrote: Quando defino o caminho do arquivo texto gerado pelo UTL_FILE, o banco cria a pasta, se ela não existir? Caso ele crie a pasta, posso criar uma pasta central e dar permissão de leitura p/ todos na rede. O banco criaria uma pasta p/ cada procedimento de exportação dentro dela, utilizando o horario como nome, por exemplo. Ao final de cada procedimento de exportação dos dados p/ os arquivos texto eu faria o VB6 abrir via shell um explorer exibindo o conteúdo desta pasta compartilhada na máquina do cliente mesmo... Será que vira? -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos -- Allyson A. Brito MSN: [EMAIL PROTECTED] SKYPE: allysonbrito RHCE / LPI-1 / SCSA OCP DBA 9i / OCA PL/SQL 9i -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Ainda o UTL_FILE...
Alysson, é exatamente isto que estou procurando. Queria que o Oracle criasse uma pasta com o nome do usuário p/ receber os arquivos texto. Só que meu banco é 8i. Não existe algum jeito de fazê-lo no 8i? Desde já, obrigado. rflribeiro msn:[EMAIL PROTECTED] Allyson - Listas wrote: Até onde sei o Oracle cria apenas o arquivo caso este não exista através do modo de abertura do utl_file.fopen. Porém como vc sabe o UTL_FILE_DIR necessita de um reboot para ter validade. A partir do Oracle 9i surgiu o conceito de directory, que é uma forma mais flexível de trabalhar com o pacote utl_file, veja um exemplo... create or replace directory EXPORTS as 'c:\exports'--- cria um objeto no banco do tipo diretorio depois de criado o diretorio vc deve dar privilegios de read ou write pro usuario... grant read,write on directory exports to usuario No meu exemplo fiz tudo como system por preguiça :) Veja um código PL/SQL bem simples... create or replace procedure stp_cria_arquivo(diretorio in varchar2, arquivo in varchar2) is arquivo_saida utl_file.file_type; begin arquivo_saida := utl_file.fopen(location = diretorio,filename = arquivo,open_mode = 'w'); utl_file.put_line(arquivo_saida,'teste123'); utl_file.fclose(arquivo_saida); end stp_cria_arquivo; Agora veja a flexibilidade SQL exec stp_cria_arquivo('EXPORTS', 'teste1.txt') ; SQL ho type c:\exports\teste1.txt teste123 Vamos mudar o diretorio exports para c:\abc create or replace directory EXPORTS as 'c:\abc' ; Agora vamos executar novamente a procedure SQL exec stp_cria_arquivo('EXPORTS', 'teste1.txt') ; SQL ho type c:\abc\teste1.txt teste123 Veja que alterei apenas o destino do objeto directory e nao foi necessário reboot do servidor :) []'s [EMAIL PROTECTED] wrote: Quando defino o caminho do arquivo texto gerado pelo UTL_FILE, o banco cria a pasta, se ela não existir? Caso ele crie a pasta, posso criar uma pasta central e dar permissão de leitura p/ todos na rede. O banco criaria uma pasta p/ cada procedimento de exportação dentro dela, utilizando o horario como nome, por exemplo. Ao final de cada procedimento de exportação dos dados p/ os arquivos texto eu faria o VB6 abrir via shell um explorer exibindo o conteúdo desta pasta compartilhada na máquina do cliente mesmo... Será que vira? -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html