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

 


Responder a