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

Многострочные подзапросы

Подзапросы, возвращающие более одной строки, называются многострочными. В них следует использовать не однострочный, а многострочный оператор - например, IN. Оператор IN ожидает одного или нескольких значений.

Пример.

Вывод списка фильмов и стоимости их проката, приобретенные клиентами с номерами меньше 3.

SQL> select namef, stoimost_prok

2 from film

3 where filmID IN

4 (select filmID

5 from dogovor

6 where klientID<3);

NAMEF STOIMOST_PROK

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

Красотка 42

Красный дракон

Подзапросы можно использовать не только в предложении WHERE, но и в предложении HAVING.

Пример.

Вывод списка всех фильмов, где средняя стоимость проката меньше, чем у фильма “Звонок”.

SQL> select namef, avg(stoimost_prok)

2 from film

3 group by namef

4 having AVG(stoimost_prok)<

5 (select stoimost_prok

6 from film

7 where namef = 'Звонок');

NAMEF AVG(STOIMOST_PROK)

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

Азазель 40

Дом 40

Куклы 30

Ледниковый период 40

Лабораторная работа №9 Тема определение переменных во время выполнения Переменные подстановки с одним амперсантом

При создании отчетов пользователь часто заинтересован в динамическом ограничении объема выходных данных. SQL*Plus обеспечивает такую гибкость через переменные пользователя. Задать переменные в своих командах SQL можно с помощью амперсанта (&). Присваивать значение каждой переменной при этом не требуется.

Пример

Описание

&переменная

Переменная в команде SQL; если переменная не существует, SQL*Plus просит пользователя ввести значение. SQL*Plus не сохраняет переменную после ее использования.

Пример.

Создание команды, которая во время выполнения запрашивает код фильма у пользователя. Отчет должен содержать название фильма и режиссера.

SQL> select namef, regiser

2 from film

3 where filmid=&Cod_filma;

Введите значение для cod_filma:

NAMEF REGISER

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

Красотка Полански

Команда set verify

Чтобы убедиться в том, что команда SQL изменена, используйте команду SET VERIFY SQL*Plus. Режим ON команды SET VERIFY позволяет вывести на экран текст команды до и после подстановки значений переменных.

Определение текстовых строк и дат с помощью переменных подстановки

Текстовые строки и даты в предложении WHERE должны быть заключены в апострофы. Это же правило распространяется и на переменные подстановки.

Чтобы не вводить апострофы во время выполнения, рекомендуется заключать в них переменную в самой команде SQL.

Пример.

Выборка номера, фамилии и размера заработной платы служащих, находящихся на конкретной должности. Должность запрашивается во время выполнения.

SQL> select filmid, regiser

2 from film

3 where namef='&Nazvanie_filma';

Введите значение для nazvanie_filma: Красотка