Gostaria de passar o caminho da máquina do cliente e o UTL_FILE escrever direto no caminho indicado.
rflribeiro msn: [EMAIL PROTECTED] Marcio Portes wrote: >Complementando a resposta, voce pode usar o smb também para criar arquivos no >seu client. >No exemplo que fiz: do linux vou mountar um diretório através do samba client >(SMB) mapeando um diretório compartilhado >e gerar um arquivo vazio no meu Windows XP (que poderia ser o client da >aplicação). > >[EMAIL PROTECTED]> !su -c "mount -t smbfs -o >username=marcio,uid=oracle,gid=dba //anakin/r2d2_backup /mnt/winxp/" >Password: ****** >Password: > >Note que a primeira Password é do su (root) e o segundo do username=marcio > >[EMAIL PROTECTED]> create or replace directory winxp_dir as >'/mnt/winxp/utl_dir'; > >Directory created. > >Para não precisar utilizar o utl_file_dir, criamos um directory. > >[EMAIL PROTECTED]> declare > 2 l_output utl_file.file_type; > 3 begin > 4 l_output := utl_file.fopen( 'WINXP_DIR', 'teste.txt', 'w' ); > 5 dbms_output.put_line( 'Sucesso! Arquivo criado ! ' ); > 6 utl_file.fclose( l_output ); > 7 exception > 8 when others then > 9 dbms_output.put_line( 'Falha! Arquivo NAO criado! ' ); > 10 end; > 11 / >Sucesso! Arquivo criado ! > >PL/SQL procedure successfully completed. > >Agora abro uma janelinha DOS: Start -> Run -> cmd >vou para o diretório mapeado e vejo se o arquivo teste.txt foi criado. > >Microsoft Windows XP [Version 5.1.2600] >(C) Copyright 1985-2001 Microsoft Corp. > >C:\Documents and Settings\Marcio>e: > >E:\>cd r2d2_backup\utl_dir > >E:\r2d2_backup\utl_dir>dir > Volume in drive E is New Volume > Volume Serial Number is 0C49-8771 > > Directory of E:\r2d2_backup\utl_dir > >11/17/2005 09:10 AM <DIR> . >11/17/2005 09:10 AM <DIR> .. >11/16/2005 02:50 PM 0 teste.txt > 1 File(s) 0 bytes > 1 Dir(s) 37,731,811,328 bytes free > >E:\r2d2_backup\utl_dir> > >Essa pode ser outra idéia para gerar arquivos no client usando pl/sql. > >jlchiappa wrote: > > >>Pessoal, vamos colocar os pingos nos Is, aí : o PL/SQL é uma >>linguagem de back-end, que roda NO SERVIDOR APENAS, é absolutamente >>documentado que por si só ela é capaz de manipular apenas itens >>acessíveis AO SERVIDOR, ponto. Assim sendo, SE vc quiser fazer I/O em >>PL/SQL num local fora do servisor, vc ** TEM QUE **, via algum >>software/recurso do SO, "mapear", tornar disponível AO SERVIDOR o >>local externo, isso pode ser feito instalando-se um software de NFS, >>ou mapeando-se o local remoto, http://asktom.oracle.com/pls/ask/f? >>p=4950:8:::::F4950_P8_DISPLAYID:4069950506780 e >>http://asktom.oracle.com/pls/ask/f? >>p=4950:8:::::F4950_P8_DISPLAYID:241814624807 tem longas discussões e >>dicas a respeito. >> Caso não seja viável/possível isso, a solução óbvia é, para gravar >>um arquivo na máquina-cliente, colocar a rotina na linguagem cliente >>onde vc faz o front-end (VB no caso do colega q perguntou), e NÂO no >>banco. Caso REALMENTE, por qquer motivo, vc TENHA QUE fazer o I/O em >>PL/SQL e não seja possível nfs/mapeamento, aí em PL/SQL puro vai ser >>IMPOSSÍVEL, vc teria que escrever uma rotina numa linguagem que o >>PL/SQL suporte e que não tenha a restrição e chamar essa rotina , >>pode ser em Java (via java procedure ou simulando-se um HOST), ou C >>(via external procedures). >> >> []s >> >> Chiappa >> >>--- Em oracle_br@yahoogrupos.com.br, Elis Azevedo Nery >><[EMAIL PROTECTED]> escreveu >> >> >> >>>Olá! >>> >>> Eu também estou precisando desta solução e ainda pesquisando. O >>> >>> >>que encontrei foi um pacote chamado WEBUTIL, mas ainda não consegui >>fazer funcionar. >> >> >> >>> Se alguém tiver experiência com isto, aceito sugestões. >>> >>> Obrigada >>> Elis >>> >>>rflribeiro01 <[EMAIL PROTECTED]> escreveu: >>> >>> É possível fazer com que uma procedure que utiliza o UTL_FILE >>> >>> >>escreva >> >> >> >>>na máquina do cliente, onde está rodando a aplicação? Tenho uma >>>aplicação VB que executa algumas procedures, mas não está >>>funcionando... No init já foi adicionada a linha: utl_file_dir = * , >>>mas não está funcionando. Abaixo, segue a proc mais simples, que não >>>funciona também... Desde já, obrigado. >>> >>>rflribeiro >>>msn: [EMAIL PROTECTED] >>> >>>CREATE OR REPLACE PROCEDURE P_CADEMPRESA (P_CODEMPRESA >>>CADEMPRESA.CODEMPRESA%TYPE) IS >>> TEXTO UTL_FILE.FILE_TYPE; >>> VAR VARCHAR2(1022); >>> CURSOR C1 IS SELECT CODEMPRESA, NOME FROM CADEMPRESA WHERE >>>CODEMPRESA = P_CODEMPRESA ORDER BY CODEMPRESA; >>>BEGIN >>> TEXTO := UTL_FILE.FOPEN('D:\','CADEMPRESA.TXT','A'); >>> FOR R1 IN C1 LOOP >>> >>>UTL_FILE.PUT_LINE(TEXTO,RPAD(TRIM(R1.CODEMPRESA),4)||'|'||RPAD(TRIM >>> >>> >>(R1.NOME),100)); >> >> >> >>> UTL_FILE.FFLUSH(TEXTO); >>> END LOOP; >>> UTL_FILE.FCLOSE(TEXTO); >>> DBMS_OUTPUT.PUT_LINE('Arquivo gerado com sucesso!'); >>>EXCEPTION >>> WHEN OTHERS THEN >>> DBMS_OUTPUT.PUT_LINE('* EXCEPTION (0) *'); >>> DBMS_OUTPUT.PUT_LINE('ERRO DESCRICAO.....: '||SQLERRM); >>> DBMS_OUTPUT.PUT_LINE('ERRO NUMERO........: '||SQLCODE); >>>END; >>>/ >>> >>> -------------------------------------------------------------------------------------------------------------------------- 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