Neca, colega, veja no manual do sqlplus e do pl/sql que SPOOL é um
comando nativo DO SQLPLUS, portanto funciona NO SQLPLUS apenas, não
tem como vc o usar dentro de um bloco PL/SQL, ok ? Na mesma fonte,
porém, vc vai ver que :

a) uma variável criada no sqlplus PODE ser usada/referenciada num
bloco pl/sql e depois no sqlplus de novo

b) o sqlplus em si não tem IFs, mas aceita comandos SQL de decisão,
como CASE ou decode

c) o comando @, que starta um script externo, ACEITA argumento
dinâmico via & (defined-variable)

d) vc PODE misturar blocos PL/SQL com trechos de sintaxe sqlplus no
mesmo script, mas em locais separados do script

juntando tudo, o teu script .SQL poderia ser + ou - tipo :


variable var_teste number;
column c_teste new_value vdef_nome_spool
BEGIN
  -- ... rotina que popula var_teste...
  :var_teste := 1;
END;
/
select case 
   when :var_teste = 0 then 'C:\a.txt'
   when :var_teste = 1 then 'C:\b.txt'
       end AS c_teste from dual;
spool &vdef_nome_spool
select 'teste do spool!' from dual;
spool off
exit


==> escrevo DE CABEÇA aqui, confira a sintaxe exata, mas é algo muito
próximo, ok ?

[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "francisco porfirio"
<[EMAIL PROTECTED]> escreveu
>
> Boa tarde a todos...
> 
> Pessoal, eu estou precisando gerar vários arquivos com spool, fiz um
script
> único que gera todos estes arquivos, o problema é que alguns deles serão
> executados apenas caso uma cond. seja satisfeita.
> 
> Ex.:
> 
> declare
> var_teste number;
> begin
> 
> if(var_teste=0)then
>    spool a.txt
>    spool off;
> else
>    spool b.txt
>     spool off;
> end if;
> end;
> 
> Seria algo mais ou menos desta forma, alguem tem algum sugestão a fazer?
> 
> -- 
> Atenciosamente
> Francisco Porfirio Ribeiro Neto
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a