Скрипт оболочки (дважды выполнение одного запроса) - PullRequest
0 голосов
/ 28 января 2019

Я написал сценарий .sql в среде Linux и выполняю его в SQL * Plus, но один запрос в нем выполняется дважды.

Script:

cat s2.sql

/* Global Name of DB */

 select * from global_name;

/*Database Status */

SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

Вывод:

SQL> @ s2.sql

GLOBAL_NAME
--------------------------------------------------------------------------------
xyz


GLOBAL_NAME
--------------------------------------------------------------------------------
xyz


INSTANCE_NAME    STATUS       DATABASE_STATUS
---------------- ------------ -----------------
xyz           OPEN         ACTIVE

Я пробовал это как с расширением .sql, так и .txt, хотя получаю одинаковые результаты.

Почему это происходит, и как я могу это остановить

1 Ответ

0 голосов
/ 28 января 2019

Проблема в втором комментарии.Строка:

/*Database Status */

интерпретируется как отправка в буфер /, а не как комментарий.Если вы добавите пробел, соответствующий другому:

/* Database Status */

, тогда он будет корректно восприниматься как комментарий и не будет вызывать второй вызов оператора.

Поведениевы видите, что на самом деле задокументировано , своего рода - косвенно:

Вы должны ввести пробел после косой черты (/ *), начинающей комментарий.

...