Выбрать главу

при имевшем место ранее определении этой переменной.

Определение и установка значений переменной

с использованием команды AC C E P T

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

Эту команду можно использовать для задания нового значения

существующей переменной или для определения новой переменной и

инициализации ее значением. Команда ACCEPT позволяет также определить

тип данных для вашей переменной. Упрощенный синтаксис команды

ACCEPT выглядит следующим образом:

□ ACCEPT имя.переменной [тип] [FORMAT формат] [PROMPT текст.подсказки]

[HIDE]

где

■ имя.переменной определяет имя, назначаемое переменной,

■ тип определяет тип данных переменной. Можно использовать следующие

типы данных: CHAR, NUMBER и DATE. По умолчанию переменным

присваивается тип данных CHAR. Переменные DATE на самом деле хранятся

как символьные переменные,

■ формат указывает используемый для переменной формат. Примеры

формата: А15 (15-символьная строка), 9999 (четырехзначное число)

и DD-M0N-YYYY (дата). С числовыми форматами можно ознакомится

в таблице 4.4 главы 4, а с форматами дат - в таблице 5.2 главы 5,

Использование SQL*Plus 83

■ текст_подсказки текст, выводимый SQDPlus как подсказка для пользователя

при вводе значения переменной,

■ H ID E указывает, что вводимое для переменной значение должно

быть скрытым. Например, можно скрыть от посторонних глаз пароль

или какую-то другую важную информацию. Скрытые значения

выводятся в виде звездочек (*).

Рассмотрим несколько примеров использования команды ACCEPT. В

первом примере переменная по имени v_customer_id определяется как

двузначное число:

П SQL> ACCEPT v_customer_id NUMBER FORMAT 99 PROMPT 'Customers id: '

Customer id: 5

В следующем примере определяется переменная типа DATE по имени v_

date; для этой переменной используется формат DD-MON-YYYY:

□ SQL> ACCEPT v_date DATE FORMAT 'DD-MON-YYYY' PROMPT 'Date: '

Date: 12-DEC-2006

В следующем примере определяется символьная (CHAR) переменная с

именем v_password; вводимое в нее значение скрывается при помощи опции

HIDE:

□ SQL> ACCEPT v_password CHAR PROMPT 'Password: ' HIDE

Password: *******

В Oracle9i и более ранних версиях введенное значение появляется как

строка звездочек (* ), скрывающих вводимое вами значение. В OraclelOg

при вводе такого значения на экран не выводится ничего.

Можно увидеть переменные, используя команду DEFINE:

□ SQL> DEFINE

DEFINE V_CUSTOMER_ID = 5 (NUMBER)

DEFINE V_DATE = “ 12-DEC-2006” (CHAR)

DEFINE V_PASSWORD = “ 1234567” (CHAR)

DEFINE V_PRODUCT_ID =”7” (CHAR)

Обратите внимание, что переменная v_date хранится как символьная

переменная (CHAR).

Удаление переменных при помощи команды U N D E F IN E

Для удаления переменных используется команда UNDEFINE. В приведенном

ниже примере команда UNDEFINE используется для удаления переменных

v_customer_id, v_date, v_password и v_product_id:

□ SQL> UNDEFINE v_customer_id

SQL> UNDEFINE v_date

SQL> UNDEFINE v_password

SQL> UNDEFINE v_product_id

Примечание Все определенные вами переменные будут удалены при выходе из SQL*Plus,

даже если вы не удалили их явно с помощью команды UNDEFINE.

84 Глава 3

Создание простых отчетов

Вы можете использовать переменные в сценарии SQI?Plus для создания

отчётов, которые могут быть выполнены пользователем. Сценарии, указанные

в этой главе, вы можете найти в папке SQL.

Совет SQL*Plus не проектировался как специализированный инструмент для генерации

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

программным обеспечением типа Oracle Reports.

Использование в сценариях временных переменных

Приведенный ниже отчет report 1.sql использует во фразе WHERE оператора

SELECT временную переменную с именем v_product_id:

□ - - suppress d is p la y of the statements and v e r i f i c a t io n messages

--(подавляет вывод операторов и сообщений подтверждения)

SET ECHO OFF

SET VERIFY OFF

SELECT product_id, name, p r ice

FROM products

WHERE product_id = &v_product_id;

Команда SET ECHO OFF не позволяет SQLfPlus вывести на экран операторы

SQL и команды SQLfPlus, содержащиеся в сценарии. Команда SET VERIFY

OFF подавляет вывод сообщений подтверждения. Здесь использованы две

эти команды, чтобы свести к минимуму число дополнительных строк, выводимых

SQLfPlus при выполнении сценария.

Сценарий reportl.sql можно выполнить, используя команду @:

□ SQL> § C:\sql_book\SQL\report1.sql

Enter value fo r v_ produ c t_id: 2

PRODUCTJD NAME PRICE

2 Chemistry 30

Вам потребуется изменить путь к папке в примере на ту папку, в которой

вы сохранили файлы для этой книги. Если в имени папки есть пробелы, вам