【问题标题】:Batch file stops after SQL statement is completed and doesn't continue to exitSQL语句完成后批处理文件停止并且不会继续退出
【发布时间】:2019-04-19 20:04:39
【问题描述】:

我正在运行一个简单的批处理文件来执行一条 SQL 语句。

批处理文件:

cd /D C:\sqlcl\bin

sql username/password@host:port:SID @C:\scripts\statement.sql

exit

SQL 语句运行完美。它将查询结果假脱机到一个 CSV 文件并返回到SQL> 提示符。

问题是批处理文件没有转到下一行以退出 SQL 和 CMD 窗口。无论我测试什么命令,批处理文件都不会转到第 3 行。

我需要在*.sql 文件中添加什么来强制它结束吗?使用退出我错过了什么吗?我试过QUITHOST 返回 CMD,ECHO 打印一些东西,但不管命令,它永远不会去那一行,而是返回 SQL 提示符。

【问题讨论】:

  • echo exit|sql username/password@host:port:SID @C:\scripts\statement.sql ?
  • 编辑你的statement.sql,最后一行是:exit;
  • sql语句的最后一行是“exit;”它仍然在批处理文件中的退出命令之前停止并返回到 SQL> 提示符。 sql 脚本如下: set sqlformat csv;设定航向;关闭反馈;假脱机“C:\输出\文件.csv”;选择 *...;脱线;退出;

标签: batch-file cmd sqlcl


【解决方案1】:

调整您的 .sql 文件以在末尾添加一个出口,例如这样。

set feedback off
set head off
set sqlformat csv
spool emp.csv
select * from emp;
exit

像往常一样运行

$ sql klrice/klrice @spool

结果文件是预期的 csv。

$ more emp.csv
7369,"SMITH","CLERK",7902,17-DEC-80,800,,20,5555555555554444
7499,"ALLEN","SALESMAN",7698,20-FEB-81,1600,300,30,4929043445510803
7521,"WARD","SALESMAN",7698,22-FEB-81,1250,500,30,6011823599867990
7566,"JONES","MANAGER",7839,02-APR-81,2975,,20,375055626849864
7654,"MARTIN","SALESMAN",7698,28-SEP-81,1250,1400,30,4929727676353442
7698,"BLAKE","MANAGER",7839,01-MAY-81,2850,,30,5262511577814781
7782,"CLARK","MANAGER",7839,09-JUN-81,2450,,10,6011983140249807
7788,"SCOTT","ANALYST",7566,09-DEC-82,3000,,20,343764091280047
7839,"KING","PRESIDENT",,17-NOV-81,5000,,10,5186144047197497
7844,"TURNER","SALESMAN",7698,08-SEP-81,1500,0,30,6011331487563093
7876,"ADAMS","CLERK",7788,12-JAN-83,1100,,20,378775397941460
7900,"JAMES","CLERK",7698,03-DEC-81,950,,30,4916225758678451
7902,"FORD","ANALYST",7566,03-DEC-81,3000,,20,378355660338882
7934,"MILLER","CLERK",7782,23-JAN-82,1300,,10,34567
$ 

【讨论】:

    【解决方案2】:

    一个有趣的问题导致了这个问题。

    在我从 SQL Developer 导出的原始 SQL 文件中,我没有在末尾包含“exit”。我在记事本中打开它并添加了“退出”。每次,我都会查看 SQL 文件,在记事本中打开它,然后“退出”就在那里。

    我刚刚在 Notepad+ 中打开了 SQL 文件,但没有“exit”。我添加了它,批处理文件现在可以正常工作了。

    我不知道为什么会出现这个问题。

    【讨论】:

    • 在我看来,您的解决方案似乎正是@KrisRice 几天前提供的3。完全无视他们的回答,自己重复一遍,似乎有点苛刻。请先阅读this,然后再考虑您的行为,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多