Команда DEFINE позволяет определить пользовательскую переменную строкового типа и задать ей значение типа CHAR, либо получить значение определенной или всех пользовательских переменных. Эта команда имеет следующий синтаксис:
<команда DEFINE > ::=
DEF[INE] [<имя переменной> [= <текст>]]
Если текст, присваиваемый переменной, содержит пробелы или символы пунктуации, его надо брать в апострофы.
При вызове без значения, команда DEFINE выдает значение переменной. Команда DEFINE без параметров выдает значение всех пользовательских переменных SQL*Plus, включая системные. Рассмотрим пример:
SQL> define a=text
SQL> define a
DEFINE A = "text" (CHAR) SQL> define b=5
SQL> define
DEFINE _SQLPLUS_RELEASE = "801060000" (CHAR) DEFINE _EDITOR = "Notepad" (CHAR) DEFINE _O_VERSION = "Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option JServer Release 8.1.6.0.0 - Production" (CHAR) DEFINE _O_RELEASE = "801060000" (CHAR) DEFINE A = "text" (CHAR) DEFINE B = "5" (CHAR) SQL>
Как видите, утилита SQL*Plus автоматически определяет ряд системных пользовательских переменных.
Для удаления как явно определенной пользовательской переменной, так и параметра командной строки сценария (см. описание команды выше) используется команда UNDEFINE. После применения этой команды к переменной значение переменной теряется, и она становится неопределенной. Команда UNDEFINE
имеет следующий простой синтаксис:
<команда UNDEFINE> ::=
UNDEF[INE] <имя переменной>{ <имя переменной>}
Продолжая предыдущий пример:
SQL> undefine a b
SQL> define a
SP2-0135: символ a UNDEFINED SQL>