Batch file SQL语句完成后,批处理文件停止,并且不会';我不能继续退出

Batch file SQL语句完成后,批处理文件停止,并且不会';我不能继续退出,batch-file,cmd,sqlcl,Batch File,Cmd,Sqlcl,我正在运行一个简单的批处理文件来执行SQL语句 批处理文件: cd /D C:\sqlcl\bin sql username/password@host:port:SID @C:\scripts\statement.sql exit SQL语句运行良好。它将查询结果假脱机到CSV文件,并返回到SQL>提示符 问题是批处理文件没有转到下一行以退出SQL和CMD窗口。无论我测试什么命令,批处理文件都不会转到第3行 是否需要向*.sql文件中添加一些内容来强制结束它?我在使用出口时遗漏了什么吗?

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

批处理文件:

cd /D C:\sqlcl\bin

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

exit
SQL语句运行良好。它将查询结果假脱机到CSV文件,并返回到
SQL>
提示符

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


是否需要向
*.sql
文件中添加一些内容来强制结束它?我在使用出口时遗漏了什么吗?我尝试了退出,主机返回CMD,ECHO,打印一些东西,但不管命令如何,它不会返回到那一行,而是返回到SQL提示符。

调整你的.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
$ 

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

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

我刚刚在Notepad+中打开了SQL文件,但“退出”不在那里。我添加了它,批处理文件现在可以正常工作了


我不知道为什么会发生这个问题

echo退出| sql用户名/password@host:port:SID@C:\scripts\statement.sql
?编辑statement.sql,最后一行为:exit;sql语句的最后一行是“exit;”,它仍然在批处理文件中的exit命令之前停止,并返回sql>提示符。sql脚本如下:设置sqlformat csv;设置航向;设置反馈;假脱机“C:\output\file.csv”;选择*。。。;关闭;出口在我看来,你的解决方案似乎正是@KrisRice几天前提供的
3
。完全无视他们的回答,自己重复一遍,这似乎有点苛刻。在考虑你的行动之前,请先阅读一下,谢谢。