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

Взаимодействие с пользователем

Стандартный механизм запроса значений пользовательских переменных дает ограниченные средства взаимодействия с пользователем - ввод значений в ответ на стандартные приглашения. Утилита SQL*Plus позволяет управлять выдачей сообщений и запросом значений переменных.

Команда prompt

Для выдачи на экран произвольного текста используется команда PROMPT со следующим синтаксисом:

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

PRO[MPT] [<текст>]

Она выдает указанный текст или пустую строку (при вызове без параметров). Если необходимо выдать несколько строк, для каждой строки выполняется отдельная команда PROMPT.

Команда accept

Считать строку и запомнить ее в указанной пользовательской переменной определенного типа (выдавая, при необходимости, приглашение) позволяет команда ACCEPT со следующим синтаксисом:

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

ACC[EPT] <имя переменной> [<тип переменной>]   [FOR[MAT] <формат>] [DEF[AULT] <стандартное значение>]   [<приглашение>] [HIDE]

<тип переменной> ::=

NUM[BER] | CHAR | DATE

<приглашение> ::=

PROMPT <текст> | NOPR[OMPT]

Если указанная в команде ACCEPT пользовательская переменная не существует, SQL*Plus создает ее. Опции команды ACCEPT описаны в табл. 14.

Таблица 14. Опции команды ACCEPT.

Опция

Назначение

NUMBER

Задает переменной тип NUMBER. Если введенное значение не приводится к этому типу, команда ACCEPT выдает сообщение об ошибке и запрашивает значение снова.

CHAR

Задает переменной тип CHAR. Длина строки-значения не должна превышать 240 байтов.

DATE

Задает переменной тип DATE. Если введенное значение не преобразуется в тип DATE с учетом текущего формата даты в сеансе (NLS_DATE_FORMAT), команда ACCEPT выдает сообщение об ошибке и запрашивает значение снова.

FORMAT

Явно задает формат, которому должно соответствовать введенное значение. Формат задается так же, как для команды COLUMN. Если значение не соответствует формату, команда ACCEPT выдает сообщение об ошибке и запрашивает значение снова.

DEFAULT

Задает стандартное значение, если оно не будет введено. Стандартное значение должно соответствовать стандартному или указанному формату.

PROMPT

Выдает на экран указанный текст перед ожиданием ввода значения переменной.

NOPROMPT

Выдает перевод строки и ждет ввода значения, не выдавая приглашений.

HIDE

Подавляет выдачу вводимого значения на экран по ходу ввода.

Рассмотрим простой пример совместного использования команд PROMPT и ACCEPT. Пусть имеется командный файл splus1.sql со следующим содержимым:

REM splus1.sql - пример диалога с пользователем

prompt

prompt Input department number (10, 20, 30)

accept dept_number number prompt 'Dept. #: '

select * from dept

where deptno = &dept_number;

Вот что происходит при его выполнении:

SQL> @f:\usr\doc\orasdev\splus1

Input department number (10, 20, 30)

Dept. #: q

SP2-0425: "q" не является допустимым числом

Dept. #: 10

прежний 2: where deptno = &dept_number

новый 2: where deptno = 10

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK