Oracle 在Windows批处理文件中使用查询日志或假脱机从多个文件运行sqlplus命令

Oracle 在Windows批处理文件中使用查询日志或假脱机从多个文件运行sqlplus命令,oracle,batch-file,sqlplus,Oracle,Batch File,Sqlplus,我对批处理脚本非常陌生,我正在尝试运行多个sql文件,这些文件可能包含来自bat文件的多个sql DML/DDL查询。输出文件必须包含正在执行的所有查询和查询输出。与此不同,我的sql文件中没有spool命令,并且我无法编辑输入的sql文件。以下命令适用于ksh文件中的我(感谢此处的文档): 以下逻辑执行我的脚本,但不记录正在执行的查询。另外,我不想连接两次数据库 echo select name from v$database; | sqlplus -s username/pwd@DBName

我对批处理脚本非常陌生,我正在尝试运行多个sql文件,这些文件可能包含来自bat文件的多个sql DML/DDL查询。输出文件必须包含正在执行的所有查询和查询输出。与此不同,我的sql文件中没有spool命令,并且我无法编辑输入的sql文件。以下命令适用于ksh文件中的我(感谢此处的文档):

以下逻辑执行我的脚本,但不记录正在执行的查询。另外,我不想连接两次数据库

echo select name from v$database; | sqlplus -s username/pwd@DBName >> sqlLogs.lst
echo quit | sqlplus -s username/pwd@DBName @%SCRIPTRUNFILE%>> %SCRIPTRUNFILE_SPOOL%.lst

这里有没有人可以帮我转到一个文件,在这个文件中我可以记录查询,同时保持一个数据库连接

通过stdout将您的即时SQL*Plus命令传递给您的sqlplus,并按Windows的
符号分组

(
    echo.set echo on timing on
    echo.spool %SCRIPTRUNFILE_SPOOL%
    echo.select name from v$database;
    echo.@%SCRIPTRUNFILE%
    echo.spool off
    echo.exit
) | sqlplus -s %USERNAME%/%PASSWORD%@%DBNAME% >> sqlLogs.lst

谢谢上面的代码能够记录我正在运行的查询的输出。它没有记录查询。我尝试了
echo.set serveroutput on
,但没有成功。你能帮忙吗?别客气。我可以通过使用/nolog启动sqlplus,然后作为批量命令连接到内部来实现这一点<代码>(echo.connect用户名/pwd@dbname..)| sqlplus/nolog@shrutisingh,
设置echo on
应该能实现您所要求的精确技巧。我不知道为什么对你来说没有。
echo select name from v$database; | sqlplus -s username/pwd@DBName >> sqlLogs.lst
echo quit | sqlplus -s username/pwd@DBName @%SCRIPTRUNFILE%>> %SCRIPTRUNFILE_SPOOL%.lst
(
    echo.set echo on timing on
    echo.spool %SCRIPTRUNFILE_SPOOL%
    echo.select name from v$database;
    echo.@%SCRIPTRUNFILE%
    echo.spool off
    echo.exit
) | sqlplus -s %USERNAME%/%PASSWORD%@%DBNAME% >> sqlLogs.lst