不能在一个 .bat 文件中 运行 两个 .sql

Can't run two .sql in a single .bat file

我有一个带有 .bat 文件的计划任务,每天早上从 Web 服务器下载一些文件,然后处理数据并更新数据库。然后它触发另一个 .bat 文件到 SELECT 数据并导出到 .xls 文件。

第二个.bat文件是这样的:

set a=%date:/=-%
del /q F:\file_path\file1_%a%.xls
del /q F:\file_path\file2_%a%.xls
echo %time%_%date%

cd /D D:\oracle\product.2.0\db_1\BIN
sqlplus usrname/psswd@ORCL @F:\select_path\select1.sql
timeout /t 30 /nobreak > nul
ren F:\file_path\file1.xls file1_%a%.xls

sqlplus usrname/psswd@ORCL @F:\select_path\select2.sql
timeout /t 30 /nobreak > nul
ren F:\file_path\file2.xls file2_%a%.xls


cd /D F:\KMB-SP\TI\Scripts\script_select

::Command to send file1 and file2 via e-mail.

但是当我到达办公室查看进度时,只完成了第一个.xls。所以我必须手动 运行 第二个 .bat 并且它 运行 非常完美。

可能是什么原因造成的?

备注:

  1. 我将超时设置在两个 SELECT 之间,因为在过去,代码在 INSERT 之后停止并且没有触发第二个 .bat 。我同事说可能是执行异常。设置超时时间可以正确结束 INSERT。
  2. 以前,它用于制作两个 SELECTs,然后重命名两个文件。这样做,有时有效,有时无效,然后我尝试更改顺序:select1, rename1, select2, rename2.
  3. 当我们每天下载文件时,我们会将数据连接到一个名为 DT-date 的文件中。第一个代码是这样的:
rem The data is downloaded and the files are organized in their files
if exist F:\path\DT-date (
    Data_consolidation.exe
    timeout /t 300 /nobreak > nul
    F:\path\second_bat.bat
) else (exit)
  1. 正如@William Robertson 所说,我在第一个 SELECT 之后尝试了 echo exit ,但同样,它只提取了第一个文件而不是第二个文件。

正如@WilliamRobertson 所建议的,在 sqlplus 命令之前写 echo exit | 解决了问题。