maio 222016
 

No último artigo falamos das facilidades de usar o comando host dentro do SQL*Plus.

Mas vez por outro temos usamos facilidades com o spool, que captura o output do nosso script. Mas o que acontece se dentro desse script tivermos comandos a serem executado no SO ?

Infelizmente o Spool não captura os resultados dos comandos dentro do host. Vejam o seguinte script:

SQL> spool resultado.log
SQL> select 1 from dual;

	 1
----------
	 1

SQL> host ls -ltr|wc -l
10

SQL> select 'Depois do spool' from dual;

'DEPOISDOSPOOL'
---------------
Depois do spool

SQL> spoo off;

Notem o output dele:

SQL> host cat resultado.log
SQL> select 1 from dual;

         1                                                                      
----------                                                                      
         1                                                                      

SQL> host ls -ltr|wc -l

ELE TROUXE O COMANDO DO SO,
 MAS NÃO TROUXE O RESULTADO


SQL> select 'Depois do spool' from dual;

'DEPOISDOSPOOL'                                                                 
---------------                                                                 
Depois do spool                                                                 

SQL> spoo off;

O que fazer então para captura o spool desses comandos ?

A técnica mais fácil é a seguinte:

SQL> spool resultado.log
SQL> select 1 from dual;

	 1
----------
	 1

SQL> prompt host ls -ltr|wc -l
host ls -ltr|wc -l
SQL> spool off
SQL> host ls -ltr|wc -l >>resultado.log

SQL> spool resultado.log append
SQL> select 'Depois do spool' from dual;

'DEPOISDOSPOOL'
---------------
Depois do spool

SQL> spool off;

Foi preciso parar o spool no meio, rodar o comando no SO enviando o stdout para o arquivo de spool , e reiniciar o spool com append, para não criar arquivo novo mas sim continuar no arquivo existente.
Notem o resultado:

SQL> host cat resultado.log
SQL> select 1 from dual;

         1                                                                      
----------                                                                      
         1                                                                      

SQL> prompt host ls -ltr|wc -l
host ls -ltr|wc -l
SQL> spool off
10

 O RESULTADO APARECEU 

SQL> select 'Depois do spool' from dual;

'DEPOISDOSPOOL'                                                                 
---------------                                                                 
Depois do spool                                                                 

SQL> spool off;

SQL> 

Espero que tenham gostado !

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)