Oracle 如何做动态滑阀';s通过批处理文件使用sqlplus

Oracle 如何做动态滑阀';s通过批处理文件使用sqlplus,oracle,batch-file,archive,spool,Oracle,Batch File,Archive,Spool,我正在尝试使用批处理文件调用的单个.sql存档来使用querye result保存多个txt存档,以实现自动化工作。 我的批处理文件: set d=%location%result.txt set f=%location%result2.txt echo exit | sqlplus GOVMANPATCHORACLE/GOVMANPATCHORACLE@%SERVER%/%SERVICE% @C:\Users\enrique.erbs\Desktop\JOB\Tools\extrato

我正在尝试使用批处理文件调用的单个.sql存档来使用querye result保存多个txt存档,以实现自动化工作。

我的批处理文件:

set d=%location%result.txt
set f=%location%result2.txt    
echo exit | sqlplus GOVMANPATCHORACLE/GOVMANPATCHORACLE@%SERVER%/%SERVICE% @C:\Users\enrique.erbs\Desktop\JOB\Tools\extrator_parametros\queryoracle.sql '%d%' '%f%'
*“%d%”包含要假脱机的保存区域设置

My archive.sql(queryoracle.sql):

我尝试了一些选项,最接近于获得结果的方法是在sqlplus调用结束时使用“>>%location%\result.txt”


有人能帮我吗?

你一点也不远。实际上,当执行SQLPLUS并向他传递一个要执行的文件和参数时,它将用第一个参数替换出现的每一个&1,用第二个参数替换出现的每一个&2,等等

这应该起作用:

    SET PAGESIZE 50000
    SET LINESIZE   800
    SET VERIFY    OFF
    SET ECHO      ON
    SET HEAD      ON
    SET SERVEROUTPUT ON;
    SET PAGES     0
    SET DEFINE ON;

    COLUMN COD_PARAMETRO FORMAT a100 HEADING COD_PARAMETRO;
    COLUMN DES_PARAMETRO FORMAT a100 HEADING DES_PARAMETRO;
    COLUMN DES_VALOR FORMAT a100 HEADING DES_VALOR;

    SPOOL '&1'

    SELECT  TDFE_PARAMETRO_APLICACAO.COD_PARAMETRO AS COD_PARAMETRO, TDFE_PARAMETRO.DES_PARAMETRO AS DES_PARAMETRO, TDFE_PARAMETRO_APLICACAO.DES_VALOR AS DES_VALOR FROM TDFE_PARAMETRO_APLICACAO INNER JOIN TDFE_PARAMETRO ON(TDFE_PARAMETRO_APLICACAO.COD_PARAMETRO=TDFE_PARAMETRO.COD_PARAMETRO);

    SPOOL OFF
    SPOOL '&2'

    SELECT  * FROM TDFE_PARAMETRO_APLICACAO;

    SPOOL OFF
供参考:

    SET PAGESIZE 50000
    SET LINESIZE   800
    SET VERIFY    OFF
    SET ECHO      ON
    SET HEAD      ON
    SET SERVEROUTPUT ON;
    SET PAGES     0
    SET DEFINE ON;

    COLUMN COD_PARAMETRO FORMAT a100 HEADING COD_PARAMETRO;
    COLUMN DES_PARAMETRO FORMAT a100 HEADING DES_PARAMETRO;
    COLUMN DES_VALOR FORMAT a100 HEADING DES_VALOR;

    SPOOL '&1'

    SELECT  TDFE_PARAMETRO_APLICACAO.COD_PARAMETRO AS COD_PARAMETRO, TDFE_PARAMETRO.DES_PARAMETRO AS DES_PARAMETRO, TDFE_PARAMETRO_APLICACAO.DES_VALOR AS DES_VALOR FROM TDFE_PARAMETRO_APLICACAO INNER JOIN TDFE_PARAMETRO ON(TDFE_PARAMETRO_APLICACAO.COD_PARAMETRO=TDFE_PARAMETRO.COD_PARAMETRO);

    SPOOL OFF
    SPOOL '&2'

    SELECT  * FROM TDFE_PARAMETRO_APLICACAO;

    SPOOL OFF