Configurando SPOOL ORACLE
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:
O arquivo gera normal, porem apresenta o select executado no arquivo, como abaixo.
Alguem tem uma lista no qual eu vejo os tipos de set's q posso dar para tirar essas linhas de comando???
Obrigado!!!!
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
Curtidas 0
Melhor post

Roberto Spernega
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
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
GOSTEI 1
Mais Respostas

Roberto Spernega
01/06/2017
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
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
GOSTEI 0

Felipe
01/06/2017
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.
GOSTEI 0

Roberto Spernega
01/06/2017
Você não conseguiu nada ainda com o UTL_FILE?
GOSTEI 0

Felipe
01/06/2017
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.
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.
GOSTEI 0

Roberto Spernega
01/06/2017
Quer tentar passar exatamente como você quer a saída do Arquivo?
Dai eu tento ver se consigo.
Dai eu tento ver se consigo.
GOSTEI 0

Felipe
01/06/2017
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..
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
GOSTEI 0

Felipe
01/06/2017
No arquivo txt.. eu so preciso do resultado da query.. nao preciso de titulo nem nada.. apenas os resultados
GOSTEI 0

Felipe
01/06/2017
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?
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?
GOSTEI 0

Roberto Spernega
01/06/2017
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.
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.
GOSTEI 0

Roberto Spernega
01/06/2017
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.
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.
GOSTEI 0