Команды DEFINE и UNDEFINE

Стас Белков

Стас Белков

Автор статьи. Известный специалист в мире IT. Консультант по продуктам и решениям Oracle. Практикующий программист и администратор баз данных. Подробнее.

При написании и использовании сценариев SQL иногда бывает необходимо указывать переменные и их значения. Команда DEFINE позволяет создавать свои собственные переменные (пользовательские переменные), продолжающие хранить заданные для них значения либо до конца всего данного сеанса SQL*Plus, либо до тех пор, пока не будет применена команда UNDEFINE, которая сбрасывает значения переменных. Ниже приведен пример, показывающий, как применять команды DEFINE и UNDEFINE:

SQL> DEFINE dept = finance
SQL> UNDEFINE dept

В этом примере все выглядит довольно просто. На практике команда DEFINE довольно часто применяется для подстановки значений переменных. В таких случаях она обычно используется не с пользовательскими переменными, а с переменными подстановки (substitution variables). Такие переменные определяются за счет добавления к пользовательской переменной символа амперсанда (&), например: &VARIABLE.

В листинге ниже показан простой пример команды DEFINE с переменной подстановки.


SQL> col segment_name for a27
DEFINE owner = '&1'
SELECT segment_name,segment_type,extents
FROM dba_segments
WHERE owner = upper ('&owner')
AND extents > 10
AND segment_name NOT LIKE 'TMP%'
ORDER BY segment_type,extents desc
SQL> @extents.sql
Enter value for 1: system
SEGMENT_NAME SEGMENT_TYPE EXTENTS
HELP_TOPIC_SEQ INDEX 18
PRODUCT_PROFILE TABLE 22
SQL>

В приведенном выше листинге  сценарии extents.sql была определена переменная owner, но вместо одного жестко закодированного значения было указано, что эта переменная должна принимать любое подставляемое значение, которое предоставит пользователь. Благодаря этому, сценарий может выполняться для любого пользователя в базе данных. Все, что потребуется — указывать при каждом его запуске другое имя для владельца схемы.

 

Вас заинтересует / Intresting for you:

Просмотр команд SQL с помощью ...
Просмотр команд SQL с помощью ... 2345 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Получение справочной информаци...
Получение справочной информаци... 1884 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:19:25
ADD DISK - команда добавления ...
ADD DISK - команда добавления ... 3140 просмотров Андрей Васенин Mon, 23 Nov 2020, 15:28:52
Использование комментариев в S...
Использование комментариев в S... 1927 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать

admin аватар
admin ответил в теме #10420 2 года 2 мес. назад
Спасибо!
VaaPa аватар
VaaPa ответил в теме #10310 2 года 4 мес. назад
Очень толковое разъяснение назначения SQL команд DEFINE и UNDEFINE + хорошие примеры. Благодарю, Стас!