Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05 приложение - SQL Plus - win.doc
Скачиваний:
11
Добавлен:
17.08.2019
Размер:
762.88 Кб
Скачать

Подстановка без повторного запроса

Если использовать одну и ту же подставляемую переменную с символом & в одной команде несколько раз, значение будет запрашиваться каждый раз заново:

SQL> select max(&col), avg(&col), min(&col) from &tab;

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

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

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

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

прежний 1: select max(&col), avg(&col), min(&col) from &tab

новый 1: select max(sal), avg(sal), min(sal) from emp

MAX(SAL) AVG(SAL) MIN(SAL)

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

5000 2073,21429 800

Чтобы значение переменной запрашивалось только один раз, используется подстановка с двумя амперсантами (&&):

SQL> c /(&col/(&&col

1* select max(&&col), avg(&col), min(&col) from &tab

SQL> c /(&col/(&&col

1* select max(&&col), avg(&&col), min(&col) from &tab

SQL> c /(&col/(&&col

1* select max(&&col), avg(&&col), min(&&col) from &tab

SQL> /

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

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

прежний 1: select max(&&col), avg(&&col), min(&&col) from &tab

новый 1: select max(sal), avg(sal), min(sal) from emp

MAX(SAL) AVG(SAL) MIN(SAL)

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

5000 2073,21429 800

Подстановка параметров командных файлов

Подстановка переменных выполняется и для позиционных параметров, переданных при вызове сценария. На эти параметры можно ссылаться как на &1, &2 и т.д. Если значение для них в командной строке не передано, SQL*Plus запрашивает значения при вызове сценария. Подстановка позиционных параметров выполняется только при вызове сценария командами START (или ее сокращенными формами @, @@).

Рассмотрим пример:

SQL> clear buffer

buffer очищена

SQL> input

1 select &1 from &2

2 .

SQL> save f:\subst.sql

Создано файл f:\subst.sql

SQL> @f:\subst max(sal) emp

прежний 1: select &1 from &2

новый 1: select max(sal) from emp

MAX(SAL)

----------

5000

SQL> @f:\subst

прежний 1: select &1 from &2

новый 1: select max(sal) from emp

MAX(SAL)

----------

5000

SQL> undef 1 2

SQL> @f:\subst

Введите значение для 1: min(sal)

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

прежний 1: select &1 from &2

новый 1: select min(sal) from emp

MIN(SAL)

----------

800

Ограничения

Подставляемые переменные нельзя использовать в командах редактирования буфера SQL (APPEND, CHANGE, DEL, INPUT) и в других командах, где эта подстановка "не имеет смысла", в частности, в комментариях. Команды редактирования буфера считают символ & обычным и используют его буквально (см. пример выше).

Системные переменные, влияющие на подстановку

В табл. 13 представлены системные установки, влияющие на подстановку пользовательских переменных.

Таблица 13. Системные установки, влияющие на подстановку переменных.

Установка

Описание

SET DEFINE

Задает символ подстановки (вместо стандартного - &) и позволяет включать и отключать подстановку.

SET ESCAPE

Задает символ маскировки, позволяющий маскировать символ подстановки. Стандартным символом маскировки является обратная косая (\).

SET VERIFY

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

SET CONCAT

Задает символ, отделяющий имя подставляемой переменной от следующей непосредственно за ним строки. По умолчанию используется точка (.).