Командный файл останавливается после завершения SQL-инструкции и не продолжает завершаться

#batch-file #cmd #sqlcl

#пакетный файл #cmd #sqlcl

Вопрос:

Я запускаю простой пакетный файл для выполнения инструкции SQL.

Командный файл:

 cd /D C:sqlclbin

sql username/password@host:port:SID @C:scriptsstatement.sql

exit
 

Инструкция SQL выполняется отлично. Он преобразует результаты запроса в файл CSV и возвращается к SQL> приглашению.

Проблема в том, что пакетный файл не переходит к следующей строке для выхода из SQL и окна CMD. Независимо от того, какую команду я тестирую, командный файл не переходит на 3-ю строку.

Есть ли что-то, что мне нужно добавить в *.sql файл, чтобы принудительно завершить его? Я что-то упускаю при использовании exit? Я пытался QUIT HOST вернуться в CMD, ECHO чтобы напечатать что-то, но независимо от команды, она никогда не переходит к этой строке, а возвращается в SQL-приглашение.

Комментарии:

1. echo exit|sql username/password@host:port:SID @C:scriptsstatement.sql ?

2. отредактируйте свой statement.sql и сделайте так, чтобы последняя строка была: exit;

3. Последняя строка инструкции sql — это «exit;», и она по-прежнему останавливается перед командой exit в пакетном файле и возвращается к командной строке SQL>. Сценарий sql приведен ниже: set sqlformat csv; set heading on; set feedback off; spool «C:outputfile.csv «; выберите *…; выкл.; выход;

Ответ №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, который я экспортировал из SQL Developer, я не включил «exit» в конце. Я открыл его в блокноте и добавил «выход». Каждый раз, когда я просматривал файл SQL, я открывал его в Блокноте, и там было «exit».

Я только что открыл SQL-файл в Notepad , и «выхода» там НЕ было. Я добавил его, и теперь пакетный файл работает нормально.

Я понятия не имею, почему возникает эта проблема.