Базы данных 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




Начало  Назад  Вперед



Книжный магазин