Базы данных Oracle - статьи

         

Команда ACCEPT


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

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

ACC[EPT] <имя переменной> [<тип переменной>]

[FOR[MAT] <формат>] [DEF[AULT] <стандартное значение>]

  [<приглашение>] [HIDE]

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

NUM[BER] | CHAR | DATE

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

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

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

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

Опция Назначение
NUMBERЗадает переменной тип NUMBER. Если введенное значение не приводится к этому типу, команда ACCEPT выдает сообщение об ошибке и запрашивает значение снова.
CHARЗадает переменной тип CHAR. Длина строки-значения не должна превышать 240 байтов.
DATEЗадает переменной тип DATE. Если введенное значение не преобразуется в тип DATE с учетом текущего формата даты в сеансе (NLS_DATE_FORMAT), команда ACCEPT выдает сообщение об ошибке и запрашивает значение снова.
FORMATЯвно задает формат, которому должно соответствовать введенное значение. Формат задается так же, как для команды . Если значение не соответствует формату, команда 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



Содержание раздела