Указание имен столбцов, выражений и текстовых строк во время выполнения
Подстановка переменных может использоваться не только в предложении WHERE команды SQL, но и для подстановки имен столбцов, выражений и текстовых строк.
Пример.
Вывод названия фильма, любого другого столбца и любого условия. Попробуйте разные условия и имена столбцов и сравните результаты.
SQL> select namef, &column_name
2 from film
3 where &condition;
Введите значение для column_name: kol
Введите значение для condition: namef='Красотка'
NAMEF KOL
------------------------- -------------
Красотка 3
select namef, &column_name
from film
where &condition;
Введите значение для column_name: stoimost_prok
Введите значение для condition: kol>4
NAMEF STOIMOST_PROK
------------------------- -------------
Азазель 40
Звонок 35
Определение переменных пользователя
Задать переменные можно до выполнения команды SELECT. Для определения и установки значений переменных SQL*Plus предлагает две команды - DEFINE и ACCEPT.
Команда
Описание
DEFINE переменная = значение
Создание переменной типа CHAR и присвоение ей значения.
DEFINE переменная
Вывод переменной, ее значения и типа данных.
DEFINE
Вывод всех переменных пользователя, их значений и типа данных.
ACCEPT (синтаксис см. ниже)
Чтение строки, введенной пользователем, и сохранение ее в переменной.
где: переменная тип_данных
FOR[MAT]
PROMPT текст
HIDE
имя переменной, где хранится значение. Если переменная не существует, SQL*Plus ее создает.
NUMBER, CHAR или DATE, Максимальная длина для типа CHAR - 240 байтов. DATE сверяется с моделью формата.
модель формата - например, А10 или 9.999.
текст, который выдается прежде, чем пользователь может ввести значение.
Предотвращает отображение данных, введенных пользователем - например, пароля.
Если для определения переменной используется команда ACCEPT, амперсант перед параметром подстановки не ставится
Пример.
Вывод режиссера и даты возврата фильма для заданного фильма. Создайте командный файл под названием primer.sql и используйте команду ACCEPT для настройки приглашения к вводу данных.