Configurando SPOOL ORACLE

01/06/2017

0

Galera.. Preciso de uma ajuda, acredito que talvez seja simples, mas infelizmente nao achei na internet.. Enfim..

Estou gerando um comando spool para criar um arquivo txt.. Entao esta desta maneira:

set echo off        
set feedback off 
set heading off   

spool 'C:\\TESTE\\TXT\\testespool.txt'

SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;

spool off


O arquivo gera normal, porem apresenta o select executado no arquivo, como abaixo.

SQL> SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;

    563163
    563166
    567968
    567984
    563094
    567974
    563161
    563164
    567971
    567989
    567991
    567973
    567969

    567979
    567970
    561783
    563165
    567972
SQL> spool off



Alguem tem uma lista no qual eu vejo os tipos de set's q posso dar para tirar essas linhas de comando???

Obrigado!!!!
Felipe

Felipe

Responder

Post mais votado

01/06/2017

Felipe,

Salva este scripit no arquivo x.sql (ou qualquer nome) e depois executa
Só pra testar, depois troca a query pela sua.


accept v_arquivo prompt "Informe o nome do arquivo com extensão: "
accept v_separador prompt "Informe o separador: "

set feedback off
set heading off
set termout off
Set echo off
set verify off
Set Pagesize 0
Set linesize 1000
Set Trimspool on


spool &v_arquivo

with x as(
select 1 col1, 2 col2, 3 col3, 4 col4 from dual
union
select 5 col1, 6 col2, 7 col3, 8 col4 from dual
union
select 9 col1, 10 col2, 11 col3, 12 col4 from dual)
Select col1||'&v_separador'||col2||'&v_separador'||col3||'&v_separador'||col4
from x;

spool off

Roberto Spernega

Roberto Spernega
Responder

Mais Posts

01/06/2017

Roberto Spernega

Cria um arquivo com o conteúdo da sua query

set echo off
set feedback off
set heading off
spool 'C:\\\\TESTE\\\\TXT\\\\testespool.txt'
SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;
spool off

salva como, por exemplo, c:\\teste\\x.sql

Daí no SqlPlus você executa @c:\\teste\\x.sql
Responder

01/06/2017

Felipe

Obrigado a ajuda.. A ideia realmente funciona, porem ele passa a ignorar os sets que eu dei anteriormente. Na verdade, eu acho que essa ideia, por mais que funcione, não vai me ajudar pois a ideia é criar uma procedure de acordo com oque um cliente solicitou.. Porem não estou conseguindo tirar aquelas linhas de comando do arquivo.
Responder

01/06/2017

Roberto Spernega

Você não conseguiu nada ainda com o UTL_FILE?
Responder

01/06/2017

Felipe

Não =(

Com o UTL_FILE eu consegui criar a Procedure e aparentemente esta tudo correto, porem quando eu executo a procedure, aparece "Operação inválida no arquivo." .. Eu procurei na internet sobre o assunto, mas todas as formas que tentei olhando os foruns, não deu certo.

Por isso estou tentando pelo Spool.

No Spool estou conseguindo gerar o arquivo, ao menos, porem não estou conseguindo formata-lo de uma maneira melhor.
Responder

01/06/2017

Roberto Spernega

Quer tentar passar exatamente como você quer a saída do Arquivo?
Dai eu tento ver se consigo.
Responder

01/06/2017

Felipe

Preciso criar uma procedure no qual ira gerar um txt a partir de 2 variáveis, sendo var1 para endereço de onde sera salvo (ate por esse motivo eu achei melhor o spool, pois no utl_file eu teria que ficar criando ou alterando o diretorio), var2 seria o separador entre campos..

Entao seria algo tipo..

var1 varchar2(200) := 'C:\\Teste';
var2 varchar2(1) := ';';

set feedback off
set heading off

spool var1

select campo1||var2||campo2||var2||campo3 from tabela

spool off
Responder

01/06/2017

Felipe

No arquivo txt.. eu so preciso do resultado da query.. nao preciso de titulo nem nada.. apenas os resultados
Responder

01/06/2017

Felipe

Perfeito!!! Ficou certinho =)

O único jeito de não aparecer a query seria chamando o arquivo como .sql? Não tem nenhum jeito de deixar uma procedure pronta com a query para executar?
Responder

01/06/2017

Roberto Spernega

Felipe,

Pra colocar tudo numa procedure precisaria do UTL_FILE e o UTL_FILE não gera num disco local, só num diretório definido no banco.
Fiz uns testes aqui e não consegui fazer via procedure sem ter um script pra definir as variáveis e os SETs e chamar a execução dela.
Responder

01/06/2017

Roberto Spernega

Não sei como será o processo de execução da geração desse, mas você poderia criar uma BAT e um ícone para o usuário executar.

call C:\\oracle\\product\\10.2.0\\client_1\\bin\\sqlplusw.exe usuario/senha @c:\\temp\\sp_gera_Arquivo.sql

o problema é que teria que ter o usuário e senha nesta BAT.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar