Re: [oracle_br] Ainda o UTL_FILE...

2005-11-17 Por tôpico Allyson - Listas
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...

2005-11-17 Por tôpico rflribeiro
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