Fórum Configurando SPOOL ORACLE #582025

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:

1
2
3
4
5
6
7
8
9
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

Gostei + 1

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

Gostei + 0

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

Gostei + 0

01/06/2017

Roberto Spernega

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

Gostei + 0

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

Gostei + 0

01/06/2017

Roberto Spernega

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

Gostei + 0

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..

1
2
3
4
5
6
7
8
9
10
11
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

Gostei + 0

01/06/2017

Felipe

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

Gostei + 0

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

Gostei + 0

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

Gostei + 0

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

Gostei + 0

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

Aceitar