Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05 приложение - SQL Plus - win.doc
Скачиваний:
11
Добавлен:
17.08.2019
Размер:
762.88 Кб
Скачать

Коды возврата командных файлов

Если в ходе выполнения командного файла происходит ошибка Oracle, может потребоваться вернуть соответствующий код возврата базовой операционной системе. Это позволяет сделать команда WHENEVER SQLERROR со следующим синтаксисом:

<команда WHENEVER SQLERROR> ::=

WHENEVER SQLERROR <реакция на ошибку>

<реакция на ошибку> ::=

<выход>   | COMMIT   | ROLLBACK   | CONTINUE <действие перед продолжением>

<выход> ::=

EXIT [<код возврата>][<завершение транзакции>]

<код возврата> ::=

SUCCESS | FAILURE | WARNING   | <целое число> | <переменная> | :<связываемая переменная>

<завершение транзакции> ::=

COMMIT | ROLLBACK

<действие перед продолжением> ::=

COMMIT | ROLLBACK | NONE

В ответ на ошибку в сценарии можно, тем самым, выйти из SQL*Plus и вернуть необходимый код возврата операционной системе, зафиксировать или откатить выполненные изменения, либо проигнорировать ошибку и продолжить выполнение сценария (с фиксацией или откатом изменений при необходимости).

Комментарии в командных файлах

В командных файлах можно вводить и использовать комментарии трех видов:

  • однострочные комментарии, задаваемые командой SQL*Plus REMARK;

  • одно- или многострочные комментарии SQL /* ... */;

  • однострочные комментарии ANSI/ISO --.

Команда REMARK имеет следующий простой синтаксис:

<команда REMARK> ::=

REM[ARK] [<любые символы до конца строки>]

Команда REMARK должна быть первой командой в строке. Задаваемый ею комментарий продолжается до конца строки.

Комментарии /* ... */ можно вводить в виде отдельных строк в командном файле, в строке оператора SQL или PL/SQL-блока. После пары символов начала комментария (/*) обязательно должен идти пробел, иначе косая рассматривается как команда выполнения содержимого SQL-буфера. Такие комментарии не могут быть вложенными. Комментарий, введенный в командной строке SQL*Plus, не попадает в буфер SQL.

Комментарии в виде -- ... можно вводить в конце строки с часть оператора SQL или PL/SQL-блока (такой комментарий продолжается до конца строки). Таким комментарием нельзя завершать команду SQL*Plus - он должен быть первой командой в строке.

При размещении комментариев в командных файлах необходимо придерживаться ряда простых правил, связанных с особенностями работы утилиты SQL*Plus:

  1. Не размещайте комментарии среди первых нескольких ключевых слов оператора SQL.

  2. Не размещайте комментарии после символа-завершителя команды SQL*Plus (точки, точки с запятой или косой).

  3. Не размещайте символы-завершители команды в конце строки комментария или после комментария в SQL-операторе или PL/SQL-блоке.

  4. Не используйте в комментариях метасимвол &, - утилита SQL*Plus потребует ввести значение параметра, проинтерпретировав слово после символа & в качестве имени параметра.

Рассмотрим пример командного файла, использующего все виды комментариев:

-- Это однострочный комментарий SQL*Plus

set linesize 128;

REM И это тоже однострочный комментарий SQL*Plus

select ename,

empno /* Это многострочный

** комментарий в

** SQL-операторе */

from emp -- однострочный комментарий в SQL-операторе

where sal = 5000;

Вот результат его выполнения:

SQL> @f:\tmp.txt

ENAME EMPNO

---------- ----------

KING 7839