Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ORACLE 2004 года.doc
Скачиваний:
26
Добавлен:
03.05.2015
Размер:
466.43 Кб
Скачать

Указание имен столбцов, выражений и текстовых строк во время выполнения

Подстановка переменных может использоваться не только в предложении WHERE команды SQL, но и для подстановки имен столбцов, выражений и текстовых строк.

Пример.

Вывод названия фильма, любого другого столбца и любого условия. Попробуйте разные условия и имена столбцов и сравните результаты.

SQL> select namef, &column_name

2 from film

  1. 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 (синтаксис см. ниже)

Чтение строки, введенной пользователем, и сохранение ее в переменной.

Синтаксис

ACCEPT переменная [тип_данных] [FORMAT] [PROMPT текст] [HIDE]

где: переменная

тип_данных

FOR[MAT]

PROMPT текст

HIDE

имя переменной, где хранится значение. Если переменная не существует, SQL*Plus ее создает.

NUMBER, CHAR или DATE, Максимальная длина для типа CHAR - 240 байтов. DATE сверяется с моделью формата.

модель формата - например, А10 или 9.999.

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

Предотвращает отображение данных, введенных пользователем - например, пароля.

Если для определения переменной используется команда ACCEPT, амперсант перед параметром подстановки не ставится

Пример.

Вывод режиссера и даты возврата фильма для заданного фильма. Создайте командный файл под названием primer.sql и используйте команду ACCEPT для настройки приглашения к вводу данных.

set echo off

accept a_regiser prompt 'Введите фамилию режиссера: '

select f.regiser, d.vozvrat

from film f, dogovor d

where f.filmid=d.film.id

and upper(f.regiser) like upper('%& a_regiser %')

/

set echo on

SQL> START primer

Введите фамилию режиссера: пола

От переменной ECHO зависит, печатают ли команды START и @ каждую команду командного файла по мере ее выполнения. В случае ECHO ON команда печатается, а в случае ECHO OFF - нет.

Переменная сохраняет свое значение до:

  • очистки командой UNDEFINE;

  • выхода из SQL*Plus.

Отменив определение переменной, можно проверить произведенное изменение с помощью команды DEFINE. При выходе из SQL*Plus переменные, заданные во время сеанса, теряются. Для сохранения переменных от сеанса к сеансу измените свой файл login, sql так, чтобы эти переменные инициализировались сразу после загрузки системы.

Пример.

Создание переменной для хранения фамилий режиссера и их.

SQL> define a_regiser=”пола”

SQL> define a_regiser

Создано a_regiser=”пола” (char).

SQL> select regiser

  1. from film

  2. where lower(regiser)=’& a_regiser’;

Regiser

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

Полански

SQL> undefine a_regiser

SQL> define a_regiser

Переменная a_regiser очищена.