|
SQL*PLUS
РУКОВОДСТВО И СПРАВОЧНИК
ПОЛЬЗОВАТЕЛЯ
версия 3.0 (SQL*PLUS User's Guide and Reference)
O R A C L E
____________________________________________
Система Управления Реляционными Базами Данных.
-- 1 --
С О Д Е Р Ж А Н И Е
Часть 1 Элементы SQL*PLUS
Глава 1 Введение
Обзор SQL*PLUS
Основные концепции
Кто может использовать SQL*PLUS
Другие способы работы с СУРБД ORACLE
Использование данного руководства
Соглашения по синтаксису команд
Примеры таблиц
Что нужно для выполнения SQL*PLUS
Оборудование и программное обеспечение
Специальная информация для вашей ОС
Имя пользователя и пароль
Доступ к таблицам-примерам
Глава 2 Изучение основ SQL*PLUS
Введение
Использование клавиатуры
Вход в SQL*PLUS
Выход из SQL*PLUS
Ввод и выполнение команд
Выполнение команд SQL
Выполнение блоков PL/SQL
Выполнение команд SQL*PLUS
Переменные влияющие на выполнение команд
Автоматическое сохранение изменений в БД
Прерывание команды во время ее выполнения
Сбор временной статистики по выполняемой команде
Выполнение команд инструментальной ОС
Выполнение форм SQL*FORMS
Получение Помощи
Распечатка описания таблиц
Управление дисплеем
Интерпретация сообщений об ошибках
Глава 3 Манипулирование командами
Редактирование команд
Распечатка содержимого буффера
Редактирование текущей строки
Добавление новой строки
Добавление Текста к строке
Удаление строки
Редактирование команд системным редактором
Сохранение команд для более позднего использования
Запись команд в командные файлы
Помещение комментариев в командный файл
Выборка командного файла
Выполнение командных файлов
Вложенность командных файлов
Изменение командных файлов
Выход из командного файла с кодом возврата
Установка вашего окружения SQL*PLUS
-- 2 --
Написание интерактивных команд
Определение переменных пользователя
Использование переменных при подстановке
Передача параметров через команду START
Связь с пользователем
Глава 4 Форматирование результатов запроса
Форматирование колонок
Изменение заголовков колонок
Форматирование колонок типа NUMBER
Форматирование колонок типа CHAR,LONG,DATE
Копирование атрибутов колонки
Печать и сброс атрибутов колонки
Подавление и восстановление атрибутов колонки
Печать строки символов после свертки содержимого колонки
Улучшение вашего отчета с помощью пустых и итоговых строк
Подавление дублирующих значений в колонках прерывания
Подстановка пробелов когда изм значение колонки прерывания
Подстановка пробелов после каждой строки
Использование техники составных пробелов
Печать и удаление описаний прерываний
Вычисление итоговой строки когда изменяется значение колонки
Вычисление итоговой строки в конце отчета
Вычисление составных итоговых значений и строк
Печать и удаление описаний COMPUTE
Описание заголовков и размерностей страниц
Установка заголовков начала и конца
Вывод номера страницы и других системных значений в
заголовках
Печать, Подавление и Восстановление описаний заголовков
страниц
Вывод значений колонок в заголовках
Вывод текущей даты в заголовках
Установка размерностей страницы
Сохранение и печать результатов запроса
Запись результатов в файл
Запись результатов на принтер
Глава 5 Доступ к Базе Данных
Подключение к БД по умолчанию
Подключение к удаленной БД
Подключение к удаленной БД "внутри" SQL*PLUS
Подключение к удаленной БД запускается SQL*PLUS
Копирование данных из одной БД в другую
Понимание синтаксиса команды COPY
Управление обращением из целевой таблицы
Интерпретация сообщений команды COPY
Определение других таблиц пользователя
Копирование данных между таблицами одной БД
Часть 2 СПРАВОЧНИК
Глава 6 Справочник Команд
Приложение А Сообщения об ошибках команды COPY
Приложение В Расширенные возможности версии 3.0
Приложение C Ограничения SQL*PLUS
-- 3 --
Приложение D Список команд SQL
Приложение Е Ограничение привилегий пользователя в SQL*PLUS
Приложение F Команды SQL*PLUS ранних версий
Глоссарий
ЧАСТЬ I Элементы SQL*PLUS
Глава 1 Введение
Эта глава знакомит вас с SQL*PLUS с помощью следующих тем:
- обзор программ SQL*PLUS
- описание основных концепций
- объяснение, кто может использовать SQL*PLUS
- описание других программ, которые можно использовать с СУРБД ORACLE
- соглашения по синтаксису команд используемые в данном руководстве
- примеры таблиц, которые вы будете использовать
- оборудование, программное обеспечене, информация необходимая вам для
выполнения SQL*PLUS
Обзор SQL*PLUS
Вы можете использовать программу SQL*PLUS совместно с языком БД SQL и его
процедурно языковым расширением, PL/SQL. Язык БД SQL позволяет запоминать и
выбирать данные из СУРБД Oracle Corporation, ORACLE RDBMS. PL/SQL позволяет
соединять команды SQL в логические процедуры.
SQL*PLUS позволяет вам манипулировать командами SQL и блоками PL/SQL, и также
выполнять много дополнительных задач. С помощью SQL*PLUS вы можете:
- вводить, редактировать, запоминать, выбирать и выполнять команды SQL и
блоки PL/SQL
- форматировать, выполнять вычисления, запоминать и печатать результаты
запросов в форме отчетов
- печатать описания колонок для каждой таблицы
- иметь доступ и возможность копирования данных между БД SQL
- посылать сообщения и принимать ответ от конечных пользователей
Основные Концепции Приведем основные понятия SQL*PLUS:
command Команда, которую вы передаете SQL*PLUS или ORACLE RDBMS.
block Группа команд SQL или PL/SQL связанных вмете процедурной логикой.
table Основная единица сохраняемой информации в ORACLE RDBMS.
query Команда SQL, которая выбирает информацию из одной или более таблиц.
query results Данные выбранные с помощью запроса.
report Результаты запроса отформатированные вами командами SQL*PLUS.
Кто может использовать SQL*PLUS
Язык команды SQL*PLUS, SQL, PL/SQL является достаточно мощным чтобы обслуживать
опытных пользователей БД, однако слишком прямолинейным для новичков изучающих
ORACLE RDBMS.
Программировать на SQL*PLUS очень легко и удобно. Например, чтобы колонке с
именем ENAME в БД понятный заголовок "Employee" (служащий), вы можете ввести
следующую команду:
COLUMN ENAME HEADING EMPLOYEE
Аналогично, чтобы распечатать описания колонок таблицы EMP, можно использовать
команду:
DESCRIBE EMP
-- 4 --
Другие средства работы СУРБД ORACLE
Корпорация ORACLE предоставляет множество программ которые с позволяют
вам работать с СУРБД ORACLE, а именно:
SQL*ReportWriter Позволяет получать многообразные и качественные отчеты.
SQL*Forms Предоставляет прекрасное средство основанное на формах для
создание, сопровождения и выполнения приложений.
ORACLE for 1-2-3 Предоставляет пользователям Lotus 1-2-3 доступ к данным
RDBMS ORACLE.
SQL*QMX Предоставляет вам IBM QMX совместимый интерфейс к ORACLE,
обеспечивающий возможность запроса по образцу вместе с
возможностью интерактивного ввода команд SQL.
Easy*SQL Предоставляет незапланированный
интерфейс к ORACLE, который не требует знания SQL, а вместо него
использует систему меню, панелей, блоков. Easy*SQL предоставляет
графические возможности, незапланированные запросы, простейшие
запросы, простейший ввод данных.
SQL*Graph Позволяет делать отчеты в графической
Как использовать данное руководство
Данное руководство описывает SQL*PLUS, который не зависит от типа ОС.
Некоторые аспекты SQL*PLUS, тем неменее, зависят от ОС. Эти детали приводятся в
руководстве по инсталяции ORACLE для вашей операционной системы. Используйте
это руководство зависящее от типа ОС совместно с "Руководство и Справочник
Пользователя по SQL*PLUS".
Повсюду в данном руководстве, примеры используют общий синтаксис команд и
общий набор таблиц-примеров. Эти вопросы описываются ниже. Вы найдете
соглашения по синтаксису команд особенно полезными, когда будете ссылаться к
справочной части данного руководства.
Соглашения по Следующие две таблицы описывают соглашения по синтаксису команд
синатксису используемые в данном руководстве команд
Таблица 1-2 Возможность Пример Пояснение
Пунктуация
___________________________________________________________
Верт черта і Разделяет альтернативные элементы, которые
м.б. обязательными или нет.
скобки [OFFіON] Один или более необязательных элементов. Если
надо, можно ввести один из элементов.
фигурные {OFFіON} Альтернативы обязательного скобки параметра;
вводится один из элементов разделенных і.
Не вводите скобки или і.
подчеркивание {OFFіON} Значение по умолчанию; Если значение не задается,
то выбирается данная величина.
три точки n,n,... Предшествующее значение может повторяться несколько раз.
-- 5 --
Таблицы-примеры Большинство концепций и операций данного руководства
демонстрируется с помощью набора таблиц-примеров. Эти таблицы содержат записи
о персонале фиктивной компании. Когда вы выполняете упражнения данного
руководства, представьте себе, что вы директор персонала данной компании.
Упражнения используют информацию из двух таблиц:
EMP Содержит информацию о служаших данной компании.
DEPT Содержит информацию об отделах компании.
На рисунках 1-1 и 1-2 на следующей странице показана инфомация, содержащаяся
в этих таблицах.
Рис. 1-1
Таблица EMP EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ --------- ---- --------- ---------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
Рис. 1-2
Таблица DEPT DEPTNO DNAME LOC
------- -------------- -----------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Что вам необходимо для выполнения SQL*PLUS
Для запуска SQL*PLUS, вам необходимо иметь аппаратуру, программное
обеспечение(ПО), информацию зависящую от типа ОС, имя-пользователя и пароль, и
доступ к одной или более таблицам.
Аппаратура и ПО
Компьютер, на котором вы работаете с ORACLE и SQL*PLUS, называется рабочей
ЭВМ. ORACLE и SQL*PLUS могут функционировать на многих типах ЭВМ.
ОС вашей ЭВМ управляет машинными ресурсами и средствами, аппаратурой и
программами. Разные компьютеры используют разные операционные системы. За
информацией о ОС вашей ЭВМ обрашайтесь к документации поставляемой с
компьютером.
До того как вы начнете использование SQL*PLUS, оба продукта ORACLE и SQL*PLUS
д.б. инсталированы. Если на вашей рабочей ЭВМ работает много пользователей, то
ваша организация должна иметь администратора БД (называется ДБА), который
диспетчирует использование ORACLE RDBMS.
-- 6 --
ДБА способен инсталировать ORACLE и SQL*PLUS на вашей системе. Если вы
выступаете в роли ДБА, смотрите инструкции по инсталяции ORACLE RDBMS и
SQL*PLUS для вашей ОС.
Информация зависящая от вашей ОС
Некоторые аспекты ORACLE и SQL*PLUS зависят от вида ЭВМ и типа ОС. Эти вопросы
обсуждаются в руководстве по инсталяции ORACLE и руководстве пользователя.
Сохраните копии вашего руководства по инсталяции и руковоства пользователя
доступными для справочного обращения пока вы работаете с данным документом.
При необходимости, мы будем отсылать вас к этим документам.
Имя и пароль пользователя
Когда вы запускаете SQL*PLUS, вам необходимо указать имя пользователя,
который идентифицирует вас как зарегистрированного пользователя ORACLE, и
пароль, который соответсвует вашему имени.
Многопользовательские системы
Если на вашей ЭВМ работает несколько человек, то ваш ДБА может устанавливать
пароли и имена. Вам также потребуются системные имя и пароль для входа в ОС.
Эти параметры могут совпадать (или нет) с именем и паролем для SQL*PLUS.
Однопользовательские системы
Если ваша ЭВМ работает в однопользовательском режиме, то предполагается,
что вы можете исполнять функции ДБА сами. В этом случае вы можете
использовать имя SCOTT и пароль TIGER. Или, если вы хотите определить свое
имя и пароль, смотрите команду SQL GRANT в справочнике по языку SQL.
Доступ к таблицам-примерам
Каждая таблица в БД явлется "собственностью" определенного пользователя. Вы
можете захотеть иметь копии таблиц-примеров, чтобы использовать их на примерах
данного руководства. Для их получения выполните командный файл DEMOBLD
поставляемый фирмой ORACLE (выполнять в рамках ОС, но не из SQL*PLUS).
Замечание: DEMOBLD создает новый SQL*PLUS стартовый (LOGIN) файл. Смотрите
подраздел "Установка окружения SQL*PLUS" в "Сохранение команд для дальнейшего
использования" в главе 3, если вы хотите сохранить свой старый LOGIN файл.
Заметим, что LOGIN файл для SQL*PLUS и LOGIN файл для ОС - это разные вещи.
Когда таблицы-примеры больше не понадобятся, их можно удалить, выполнив
командный файл DEMODROP. За информацией по использованию командных файлов
DEMODROP и DEMOBLD обратитесь к руководствам по инсталяции и пользователя для
вашей ОС.
-- 7 --
ЧАСТЬ 2 ОБУЧЕНИЕ ОСНОВАМ SQL*PLUS
Данная глава поможет вам овладеть основами использования SQL*PLUS, здесь
рассматриваются следующие темы:
- использование клавиатуры
- вход и выход из SQL*PLUS
- выполнение команд SQL, блоков PL/SQL, команд SQL*PLUS
- объяснение переменных, которые воздействуют на выполняемые команды
- автоматическое сохранение изменений в БД
- прерывание команды во время ее выполнения
- сбор временной статистики по командам, которые вы выполняете
- выполнение команд ОС и форм SQL*FORMS
- печать описания таблиц
- управление дисплеем
- интерпретация сообщений об ошибках
Читайте эту главу сидя за компьютером, и проверяете описанные примеры. Перед
началом работы убедитесь, что вы имеете доступ к таблицам-примерам описанным
в главе 1.
Введение
Перед тем как использовать SQL*PLUS, вы должны ознакомиться функциями
различных клавиш на клавиатуре и как входить и покидать SQL*PLUS.
Использование клавиатуры
SQL*PLUS назначает специальные значения для различных клавиш на вашей
клавиатуре. Таблица 2-1 перечисляет эти клавиши.
Так как клавиатуры на разных компьютерах имеют различное расположение и имена
для этих клавиш, данное руководство описывает клавиши посредством функций,
которые они выполняют. В руководстве по инсталяции приведен перечень
соответсвующих клавиш на клавиатуре для вашей ЭВМ.
Заполните бланк таблица 2-1 именами соответствующих клавиш на клавиатуре.
Затем найдите каждую клавишу на клавиатуре.
Таблица 2-1 Специальные клавиши SQL*PLUS и их функции
Имя клавиши Имя клавиши
SQL*PLUS на клавиатуре Функция
---------------------------------------------------------ДД
[Return] ___ Конец вводимой строки
[Backspace] ___ Стирание символа слева от курсора (исправление ошибки)
[Pause] ___ Приостановить выполнение программы и вывод на дисплей
[Resume] ___ Возобновить выполнение программы и вывод на дисплей [Pause]
[Cancel] ___ Остановить выполнение программы; возврат в SQL*PLUS
[Interrupt] ___ Выход из SQL*PLUS и возврат в рабочую ОС
Запуск SQL*PLUS Сейчас, когда вы узнали важнейшие клавиши на клавиатуре,
вы готовы к запуску SQL*PLUS.
Пример 2-1 Данный пример демонстрирует запуск SQL*PLUS.
Запуск SQL*PLUS
1. Убедитесь, что на вашей ЭВМ установлен ORACLE RDBMS.
2. Включите компьютер (если он выключен) и осуществите вход в систему (если
это необходимо). Если вы уже работаете на компьютере, вам не надо выходить
из системы или перезагружать ее.
-- 8 --
Вы должны убедиться в наличии слева подсказки ОС, которая сигнализирует,
что ОС готова к приему команды. В данном руководстве подсказка ОС будет
обозначаться знаком доллара ($). На вашем компьютере м.б. иная подсказка.
3. Введите команду SQL*PLUS и нажмите [Return]. Это команда ОС стартующая
SQL*PLUS.
Замечание: Некоторые ОС ожидают, что вы введете команду на нижнем регистре
$ SQLPLUS
SQL*PLUS покажет номер своей версии, дату, информацию об авторском праве,и
подсказку для ввода имени пользователя:
SQL*PLUS: Vershion 3.0.3- Products on Fri Jan 20 09:39:26 1989
Copyright (c) ORACLE Corporation 1979, 1988. All right reserved.
Enter user-name:
4. Введите ваш имя-пользователя и нажмите [Return]. SQL*PLUS высветит
подсказку "Enter password:".
5. Введите ваш пароль и нажмите [Return] снова. Для обеспечения защиты, ваш
пароль не отображается на экране.
Процесс ввода вашего имени и пароля, называется логированием. SQL*PLUS
покажет версию ORACLE к которой вы подключились и версии доступных пакетов
(например PL/SQL)
Затем, SQL*PLUS покажет командную подсказку SQL*PLUS:
SQL>
Командная подсказка показывает, что SQL*PLUS готов к приему ваших
команд.
Если SQL*PLUS не стартовал, вы должны посмотреть сообщение и разобраться
в ошибке. За подробной информацией, обращайтесь к "Руководству сообщений
по ошибкам ORACLE", или к "Руководству сообщений по ошибкам вашей ОС".
Сокращенный запуск
SQL*PLUS Когда вы запускаете SQL*PLUS, можно ввести ваше имя и пароль,
разделив их знаком "/", следом за командой SQLPLUS. Например,
если ваше имя SCOTT и пароль TIGER, можно ввести
$ SQLPLUS SCOTT/TIGER
и нажать [Return]. Вы также можете сделать автоматическое
логирование в SQL*PLUS, когда вы входите в ОС. За более
детальной информацией обращайтесь к руководствам по инсталяции
и пользователя.
Выход из SQL*PLUS Когда вы закончите работу с SQL*PLUS, и хотите выйти в ОС,
введите команду EXIT.
Пример 2-2 Выход из SQL*PLUS Для выхода из SQL*PLUS введите команду EXIT после
командной подсказки SQL*PLUS:
SQL> EXIT
SQL*PLUS покажет версии своих программных среств, а затем вы сразу увидите
подсказку ОС.
-- 9 --
Ввод и Выполнение Команд
Курсор на вашем компьютере, или указатель (обычно символ подчеркивания или
косая черта или прямоугольник) появляется после командной подсказки. Курсор
указывает место на экране, в котором появится следующий введенный вами
символ.
Чтобы сообщить SQL*PLUS, что делать, просто введите команду. Обычно, слова в
команде отделяются друг от друга пробелом или табуляцией. Если вы хотите
сделать ваши команды более читабельными, можно вставлять между словами
дополнительные пробелы или табуляции.
Вы можете вводить команды большими или маленькими буквами. Для удобства, имена
всех таблиц, колонок, команд в данном руководстве обозначаются большими
буквами.
Вы можете вводить 3 типа команд в SQL*PLUS:
- команды SQL, для работы с информацией в БД
- блоки PL/SQL, также для работы с информацией в БД
- команды SQL*PLUS, для форматирования результатов запроса, установки
параметров, редактирования и запоминания команл SQL и блоков PL/SQL
Способ, которым вы продолжаете команду на дополнительных строках, заканчиваете
команду, или выполняете команду, зависит от типа команды которую вы хотите
ввести и выполнить. После того, как вы ввели команду и приказали SQL*PLUS ее
выполнить, SQL*PLUS обрабатывает команду и выводит командную подсказку снова,
указывая , что вы можете вводить другую команду.
Выполнение команд
SQL*PLUS Язык команд SQL позволяет вам манипулировать
данными в БД. За подробной информацией по командам SQL обращайтесь к
руководству и справочнику по языку SQL.
Пример 2-3
В этом примере вы будете вводить и выполнять команду SQL, для показа
номера служащего, имени, работы и оклада для каждого служащего в таблице EMP.
1. После командной подсказки введите первую строку команды
SQL> SELECT EMPNO, ENAME, JOB, SAL
Если вы ошиблись, используйте [Backspace] для стирания ошибки и ввода
снова. Когда вы закончите, нажмите [Return] для перехода к следующей
строке. 2. SQL*PLUS покажет "2", подсказку для ввода 2-й строки.
Введите вторую строку команды:
2 FROM EMP WHERE SAL < 2500;
Точка с запятой (;) означает конец команды. Нажмите [Return]. SQL*PLUS
обработает команду и высветит результаты на экране:
EMPNO ENAME JOB SAL
---------- ---------- --------- -------
7369 SMITH CLERK 800
7499 ALLEN SALESMAN 1600
7521 WARD SALESMAN 1250
7654 MARTIN SALESMAN 1250
7782 CLARK MANAGER 2450
7844 TURNER SALESMAN 1500
-- 10 --
7876 ADAMS CLERK 1100
7900 JAMES CLERK 950
7934 MILLER CLERK 1300
9 records selected
SQL>
После показа результатов и количества выбранных записей, SQL*PLUS выводит
снова командную подсказку. Если вы сделали ошибку и не получили
результатов, введите команду снова.
Заголовок может повториться, в зависимости от установки системной
переменной PAGESIZE. Или вы увидите сообщение относящееся к числу
выбранных записей, в зависимости от от установки системной переменной
FEEDBACK. Описание системных переменных будет дано в этой главе позднее
в разделе "Переменны влияющие на выполнение команд."
Изучение синтаксиса команд SQL*PLUS
SQL*PLUS имеет синтаксические правила, которые управляют процессом сборки
слов в команды. Мы должны следовать им, чтобы вводимые нами команды правильно
выполнялись.
Деление команд SQL на отдельные строки Вы можете делить команду SQL на
несколько строк в любых местах, но нельзя разрывать отдельные слова между
строками. Таким образом, вы можете вводить запрос примера 2-3 на одной
строке:
SQL> SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE
SAL<2500;
Или вы можете вводить запрос на нескольких строках:
SQL> SELECT
2 EMPNO, ENAME, JOB, SAL
3 FROM EMP
4 WHERE SAL<2500;
В данном руководстве большинство команд SQL будет разделяться на пункты, один
пункт на каждой строке. В примере 2-3, например, пункты SELECT и FROM
помещаются на разных строках. Многие пользователи находят это более удобным.
Но вы можете разделять ваши команды по своему, как более удобно для вас.
Завершение команды SQL Вы можете заканчивать команду SQL одним из трех
способов:
- с помощью точки с запятой (;)
- с помощью наклонной черты (/)
- с помощью пустой строки
Точка с запятой сообщает SQL*PLUS, что вы хотите выполнить команду. Введите
точку с запятой в конце последней строки команды, как показано в примере 2-3.
После ввода точки с запятой, нажмите [Return]. SQL*PLUS обработает команду.
Если вы по ошибке нажали [Return] до ввода точки с запятой, SQL*PLUS выведет
новый номер строки для вашей команды. Чтобы выполнить команду, введите точку
с запятой и нажмите [Return] снова.
-- 11 --
Наклонная черта (/) в строке также сообщает SQL*PLUS, что вы хотите выполнить
команду. Нажмите [Return] в конце последней строки команды. SQL*PLUS выведет
новый номер строки. Введите наклонную черту и нажмите [Return] снова.
SQL*PLUS выполнит команду.
Пустая строка сообщает SQL*PLUS, что вы закончили ввод команды, но пока не
желаете ее выполнять. Нажмите [Return] в конце последней строки команды.
SQL*PLUS подскажет вам новый номер строки.
Нажмите [Return] снова; Сейчас SQL*PLUS выведет уже свою подсказку. SQL*PLUS
не выполнит команду, но запомнит ее в памяти называемой буффер SQL.
Буффер SQL
Область, в которой SQL*PLUS хранит вашу последнюю введенную команду,
называется буффером SQL. Команда остается в буффере до тех пор пока вы не
введете новую команду SQL. Таким образом, если вы желаете изменить или
выполнить команду снова, вы можете это сделать без повторного ввода команды.
За более подробной информацией обратись к главе 3.
SQL*PLUS не запоминает точку с запятой или наклонную черту в буффере, которые
вы ввели для выполнения команды.
Буффер SQL является буффером по умолчанию. Вы можете назначить новый буффер,
но SQL*PLUS не требует использования множества буфферов. Везде в данном
руководстве "буффер" и "SQL буффер" являются синонимами, если другое не
оговорено. Смотри SET BUFFER в приложении F.
Выполнение текущей команды SQL
Вы можете выполнить (или выполнить заново) текущую команду SQL, посредством
ввода команды RUN или командной подсказки команды "/" после командной
подсказки. Команда RUN перед исполнением печатает содержимое буффера;
команда "/" просто выполняет команды SQL.
Выполнение блоков PL/SQL
Вы можете также использовать программы PL/SQL (называются блоками) для
манипулирования данными в БД. Смотри "Руководство и справочник пользователя
по PL/SQL".
Блоки PL/SQL начинаются с DECLARE, BEGIN, или имени блока. SQL*PLUS
обращается с блока PL/SQL таким же способом как и с командами SQL, кроме
точки с запятой или пустой строки, которые не оканчивают и не выпоняют блок.
Блок PL/SQL завершается точкой (.) на новой строке.
SQL*PLUS хранит блоки, которые вы ввели, в буффере SQL. Выполните текущий
блок с помощью команды RUN или "/". SQL*PLUS посылает весь блок PL/SQL к
ORACLE RDBMS для обработки. За информацией обращайтесь к"Руководство и
справочник пользователя по PL/SQL".
Вы можете вводить и выполнять блоки PL/SQL следующим образом:
SQL> DECLARE
2 x NUMBER :=100;
3 BEGIN
4 FOR i IN 1..10 LOOP
5 IF TRUNC(i / 2) = i / 2 THEN --iis even
6 INSERT INTO temp VALUES(i, x, 'iseven');
7 ELSE
8 INSERT INTO temp VALUES(i, x, 'isodd');
-- 12 --
9 END IF;
10 x := x+100;
11 END LOOP;
12 END;
13 .
SQL> /
PL/SQL procedure successfully completed.
Когда вы выполняете блок, команды SQL внутри блока могут вести себя иначе,
чем вне блока. Смотри описание языка PL/SQL в "Руководство и справочник
пользователя по PL/SQL".
Выполнение команд SQL*PLUS
Вы может использовать команды SQL*PLUS для манипулирования командами SQL и
блоками PL/SQL, для форматирования и печати результатов запросов. SQL*PLUS
обрабатывает команды SQL*PLUS иначе, чем команды SQL и блоки PL/SQL. За более
подробной информацией обращайтесь к соответсвующей главе данного документа.
Для увеличения скорости ввода команд, вы можете сокращать большинство команд
SQL*PLUS до одной или нескольких букв. Сокращения для некоторых команд
SQL*PLUS описываются в главах 3,4,5. За сокращениями по всем командам
SQL*PLUS отсылаем вас к описанию команд в главе 6.
Пример 2-4 Вод команд SQL*PLUS
Этот пример демонстрирует, как вы можете с помощью команды SQL*PLUS
изменить формат используемый для показа колонки SAL из таблицы-примера EMP.
1. Ввелите команду SQL*PLUS:
SQL> COLUMN SAL FORMAT $99,999 HEADING SALARY
Если вы ошиблись, используя [Backspace] исправьте команду. Когда вы ввели
строку, нажмите [Return]. SQL*PLUS запомнит новый формат и снова выведет
командную подсказку SQL*PLUS, т.е. он снова будет готов к приему команд.
2. Введите команду RUN для повторного выполнения последнего запроса (пример
2-3). SQL*PLUS снова обработает запрос и выведет результаты:
SQL> RUN
1 SELECT EMPNO, ENAME, JOB, SAL
2* FROM EMP WHERE SAL < 2500
EMPNO ENAME JOB SALARY
---------- ---------- --------- -------
7369 SMITH CLERK $800
7499 ALLEN SALESMAN $1,600
7521 WARD SALESMAN $1,250
7654 MARTIN SALESMAN $1,250
7782 CLARK MANAGER $2,450
7844 TURNER SALESMAN $1,500
7876 ADAMS CLERK $1,100
7900 JAMES CLERK $950
7934 MILLER CLERK $1,300
Команда COLUMN форматировала колонку SAL с помощью знака доллар ($) и запятой
(,) и присвоила ей новый заголовок. Команда RUN снова выполнила запрос из
примера 2-3, который хранится в буффере. SQL*PLUS не запоминает команды
SQL*PLUS в буффере.
-- 13 --
Соглашение по синтаксису команд SQL*PLUS
Команды SQL*PLUS имеют синтаксис отличный от синтаксиса команд SQL и блоков
PL/SQL.
Продолжение длинных команд SQL*PLUS на дополнительных строках. Вы можете
продолжить длинные команды SQL*PLUS посредством ввода дефиса (соединительная
черта) в конце строки и нажав [Return]. Если вы хотите, вы можете ввести
пробел до ввода дефиса. SQL*PLUS выведет правую угловую скобку (>) как
подсказку для каждой дополнительной строки.
Окончание команды SQL*PLUS Вам необязательно заканчивать команду SQL*PLUS
с помощью точки с запятой. Когда вы закончите ввод команды, вы можете сразу
нажать [Return]. Однако, если вы пожелаете, вы можете ввести точку с запятой
в конце команды SQL*PLUS.
Переменные влияющие на выполнение команд переменных -
Команда SQL*PLUS SET управляет большинством называемых системные переменные
- установка которых воздействует на способ выполнения SQL*PLUS-ом ваших команд.
Системные переменные управляют множеством параметров внутри SQL*PLUS,
включая ширину колонок по умолчанию для вывода на экран, или показ количества
обработанных записей, или длину страницы. Системные переменные также называют
переменнными команды SET.
Примеры данного руководства используют системные переменные установленные по
умолчанию. В зависимости от установки ваших системных переменных, выводимые
данные в примерах могут отличаться от того, что приводится в данном документе.
(Ваши установки могут отличаться от значений по умолчанию, если вы имеете
SQL*PLUS LOGIN файл).
Подробности о системных переменных и их значениях по умолчанию смотри главу 6.
Подробности о файле LOGIN для SQL*PLUS смотри в подразделе "Установка окружения
SQL*PLUS" раздела "Сохранение команд для последующего использования" в главе 3
и команды SQL*PLUS в главе 6.
Чтобы распечатать текущие установки переменных команды SET, введите после
командной подсказки SHOW и имя переменной. Смотри команду SHOW в главе 6.
Автоматическое сохранение изменений в БД.
Благодаря командам SQL DML UPDATE, INSERT, DELETE- которые могут
использоваться в блоках PL/SQL- вы проводите изменения в данных БД. Тем
неменее, SQL не изменяет информацию в БД пока вы не выполните команду SQL
COMMIT или команды SQL DCL или DDL, например CREATE TABLE.
Вы можете не откладывать проведение изменений в БД, пока не будет выполнена
одна из выше перечисленных команд. Возможность автоматического проведения
изменений SQL*PLUS (autocommit) может заставить его проводить изменения в БД
после каждой команды SQL- включая INSERT, UPDATE, DELETE- и после каждого
выполненного блока PL/SQL.
Вы управляете возможностью автоматического проведения изменений SQL*PLUS с
помощью переменной AUTOCOMMIT команды SET. Она имеет следующий формат:
SET AUTCOMMIT ON включить
SET AUTCOMMIT OFF выключить (по умолчанию)
-- 14 --
Пример 2-5
Включение режима Чтобы включить режим автоматического
автоматического проведения изменений, введите:
проведения
изменений SQL> SET AUTCOMMIT ON
Пока вы не измените установку AUTOCOMMIT, SQL*PLUS будет автоматически
провдить изменения после каждой команды SQL или блока PL/SQL. После каждого
проведения изменений SQL*PLUS выводит следующее сообщение:
commit complete
Когда включен режим автоматического проведения изменений, вы не сможете
совершить откат в БД. Для выключения режима введите:
SQL> SET AUTCOMMIT OFF
Чтобы проверить, что AUTOCOMMIT сейчас выключен, введите команду SHOW:
SQL> SHOW AUTOCOMMIT autocommit OFF
Прерывание команды
во время ее Предположим, что вы распечатали первую страницу
выполнения пяти-страничного отчета и решили не смотреть оставшуюся
часть отчета. Нажмите [Cancel]. (см таблицу 2-1 в начале главы). SQL*PLUS
остановит вывод и возвратится к командной подсказке.
Замечание: Нажатие [Cancel] не прервет печать файла, который вы посылаете на
принтер с помощью параметра OUT команды SQL*PLUS SPOOL. (Печать результатов
запроса рассматривается в главе 4). Вы можете прервать файла из операционной
системы; см руководство по вашей ОС.
Сбор временной статистики
Используйте команду SQL*PLUS TIMING для сбора и показа по выполняемым
данных о затрачиваемых ресурсах на выполнение одной или командам нескольких
команд или блоков. TIMING собирает данные за прошедший период времени,
сохраняя информацию по выполненным командам в области хронометрирования.
Смотри TIMING в главе 6 и руководства по инсталяции и пользователя ORACLE.
Чтобы удалить все области хронометрирования, введите CLEAR TIMING.
Выполнение команд ОС
Вы можете выполнять команды ОС, не покидая SQL*PLUS. Это особенно полезно,
когда вы захотите выполнить опеределенную задачу (например: печать
существующего файла операционной системы).
Чтобы выполнить команду ОС, введите команду SQL*PLUS HOST с последующей
командой операционной системы. Например, вот команда SQL*PLUS выполняющая
команду ОС, DIRECTORY *.SQL :
SQL> HOST DIRECTORY *.SQL
После завершения команды на экране вновь появится командная подсказка SQL*PLUS
Выполнение ФОРМ SQL*FORMS
Если при инсталяции SQL*PLUS была задана опция RUNFORM, то вы также можете
выполнять формы не покидая SQL*PLUS. Для выполнения формы введите команду
SQL*PLUS RUNFORM и имя формы:
-- 15 --
SQL> RUNFORM myform
Получение ПОМОЩИ
------
Во время работы с SQL*PLUS вы можете обнаружить, что вам необходимо распечатать
описание колонок таблицы, или начать и прервать вывод на экран. Вам может
также понадобиться объяснение сообщений об ошибках, полученных при неправильном
вводе команд или когда возникают проблемы с ORACLE или SQL*PLUS. Следующий
раздел объясняет, как получить помощь в данной ситуации.
Печать описания Чтобы посмотреть описание каждой колонки в таблице,
таблиц используйте команду SQL*PLUS DESCRIBE.
Пример 2-6 Чтобы распечатать определения трех колонок таблицы DEPT,
использование введите:
команды
DESCRIBE SQL> DESCRIBE DEPT
Вы получите следующий результат:
name null? type
----------------------------- -------- ---------
DEPTNO NOT NULL NUMBER(2)
DNAME CHAR(14)
LOC CHAR(13)
Замечание: DESCRIBE извлекает информацию словаря данных ORACLE. Можно
использовать также команды SQL SELECT для получение этой и другой информации в
БД. За более детальной информацией обращайтесь к "Справочное руководство по
языку SQL" и "Руководство пользователя по языку SQL".
Управление выводом
Предположим, что вы захотели остановить и осмотреть экран во время вывода
длинного отчета или описания таблицы с большим количеством колонок. Нажмите
[Pause]. (см табл 2-1). Вывод будет приостановлен, пока вы исследуете экран.
Чтобы продолжить, необходимо нажать [Resume].
При желании можно использовать переменную PAUSE команды SQL*PLUS SET,
которая делает паузу после вывода каждого экрана запроса или отчета. Команда
SET описывается в главе 6.
Сообщения об ошибках
Если SQL*PLUS обнаружит ошибку в команде, он попытается помочь вам с
помощью вывода сообщения об ошибке.
Пример 2-7 Например, если вы допустили ошибку в имени таблицы во время
Сообщение ввода команды, сообщение об ошибке проинформирует вас, что
об ошибке таблица или вид (view) не существует:
SQL> DESCRIBE DPT
ERROR:
ORA-0942: table or view dos not exist
Вы всегда поймете в чем причина из самого сообщения. Если вам необходимо
дальнейшее пояснение, сделайте один из следующих шагов, чтобы определить
причину ошибки и как ее исправить:
- Если ошибка имеет номер для команды SQL*PLUS COPY, смотрите сообщения в
приложении А данного руководства.
-- 16 --
- Если ошибка имеет номер начинающийся с букв "ORA", ищите сообщение в
"Руководство по кодам и сообшениям об ошибках ORACLE" или "Руководство по
инсталяции и пользователя".
- Если ошибка без номера, найдите правильный синтаксис команды, которая
привела к ошибке в главе 6 для команд SQL*PLUS или в "Справочном
Руководстве по языку SQL" и в "Руководстве Пользователя по PL/SQL" для
блоков PL/SQL.
-- 17 --
Г Л А В А 3
Манипулирование
Командами
Эта глава поможет вам овладеть манипулированием команд SQL*PLUS, команд SQL,
блоков PL/SQL и состоит из следующих разделов:
- редактирование команды SQL*PLUS
- использование команд SQL*PLUS для печати и модификации команд
сохраненных в буффере
- редактирование команд системным редактором
- создание и исправление командных файлов для более позднего использования
- выборка и выполнение командных файлов
- сохранение установочных значений окружения SQL*PLUS
- написание диалоговых команд, которые включают переменные пользователя
и подстановочные переменные
- передача параметров командному файлу
Команды редактирования
Так как SQL*PLUS не сохраняет команды SQL*PLUS в буффере, вы исправляете
вводимую команду использую клавишу [Backspace] или вводом команды заново.
Вы можете использовать номера строк для редактирования команд SQL или блоков
PL/SQL хранимых в данный момент в буффере. Или возможно редактировать
содержимое буффера с помощью редактора ОС.
Таблица 1-1 показывает перечень команд SQL*PLUS, позволяющих вам
просматривать и изменять команду в буффере без ее повторного ввода.
Таблица 3-1 команда сокращение назначение
команды
____________________________________________________________
редактирования APPEND text A text добавить текст в конец строки
SQL*PLUS CHANGE /old/new C /old/new заменить old на new
в строке
CHANGE /text C /text удалить text из строки
CLEAR BUFFER CL BUFF удалить все строки
DEL (нет) удалить строку
INPUT I добавить одну или более строк
INPUT text I text добавить строку содержащую text
LIST L печать всех строк буфера SQL
LIST n L n или n печать одной строки
LIST * L * печать текущей строки
LIST LAST L LAST печать последней строки
LIST m n L m n печать диапазона строк(m/n)
Эти команды очень полезны, если вы ошиблись при вводе, или
пожелали изменить уже введенную команду.
Печать Любые команды редактирования (кроме LIST) влияют только на
содержимого одну строку в буффере. Эта строка называется текущей строкой
буффера Она помечается звездочкой, когда печатается текущая команда
или блок.
Пример 3-1 Предположим, вы захотели распечатать текущую команду.
печать Используйте команду LIST как показано ниже. (Повторите
содержимого пример 2-3, если вы вводили новые команды).
буффера
-- 18 --
SQL> LIST
1 SELECT EMPNO, ENAME, JOB, SAL
2* FROM EMP WHERE SAL < 2500
Заметим, что точка с запятой, которую вы ввели в конце команды
SELECT, не печатается. Эта точка с запятой необходима при
вводе команды, но он не хранится в самом SQL буффере. Это
делает редактирование более удобным, т.к. вы можете добавлять
новые строки в конец буффера без удаления точки с запятой.
Редактирование
текущей строки Команда SQL*PLUS CHANGE позволяет вам редактировать текущую
строку. Различные действия опеределяют, какая строка является
текущей:
- LIST данной строки делает ее текущей
- Когда вы печатаете или выполняете команду в буффере,
последняя строка команды становится текущей.(тем
неменее, использование символа "/" для запуска команды
не влияет на положение текущей строки.)
- Если вы получили сообщение об ошибке, строка с ошибкой
автоматически становится текущей.
Пример 3-2 Предположим, что вы попытались выбрать колонку DEPTNO, но
Получение по ошибке ввели ее как DPTNO. Введите следующую команду,
ошибки в специально сделав ошибку в первой строке: командной строке
SQL> SELECT DPTNO, ENAME, SAL 2 FROM EMP 3 WHERE DEPTNO=10;
Вы увидите такое сообщение на экране:
SELECT DPTNO, ENAME, SAL
*
ERROR at line 1:
ORA-0904: invalid column name
Посмотрите сообщение об ошибке; оно указыват на неправильное имя колонки
в первой строке запроса. Звездочка показывает место ошибки- неправильно
введена колонка DPTNO.
Вместо повторного ввода команды, вы можете исправить ошибку, редактирую
команду в буффере. Строка содержащая ошибку становится текущей строкой.
Используйте команду CHANGE, чтобы исправить ошибку. Эта команда состоит
из трех частей, разделенных наклонной чертой или другим
не-алфавитноцифровым символом:
Д слово CHANGE или символ С
- последовательность символов, которые вы хотите изменить
- последовательность символов, на которые вы хотите заменить это
Команда CHANGE находит первое вхождение последовательности символов в
строке, которое необходимо изменить, изменяет ее на новую последователь-
ность сиволов. Если вы хотите ввести строку вновь, вы не должны
использовать команду CHANGE: наберите строку вновь, вводя номер строки и
через пробел новый текст и нажмите [Return].
Пример 3-3 Чтобы заменить DPTNO на DEPTNO, измените строку командой
Корректировка CHANGE: ошибки
SQL> CHANGE /DPTNO/DEPTNO
Исправленная строка появится на экране:
-- 19 --
1* SELECT DEPTNO, ENAME, SAL
Сейчас исправив ошибку, можно используя команду RUN выполнить команду снова:
SQL> RUN
SQL*PLUS напечатает команду, и затем выполнит ее:
1 SELECT DEPTNO, ENAME, SAL
2 FROM EMP
3* WHERE DEPTNO=10
DEPTNO ENAME SALARY
------- ----------- ------
10 CLARK $2,450
10 KING $5,000
10 MILLER $1,300
Заметим, что колонка SAL возвращается в формате, который вы присвоили ей
в примере 2-4. (Если вы покидали SQL*PLUS, и зашли вновь, ваш формат
вернется к первоначальному состоянию.)
Более подробно команда CHANGE рассматривается в главе 6.
Добавление
новой строки Чтобы вставить новую строку после текущей используйте команду
INPUT.
Пример 3-4 Предположим, вы хотите добавить 4-ю строку к команде SQL,
Добавление которую вы изменяли в примере 3-3. Так как строка 3 уже
строки является текущей, введите INPUT (можно сокращать: I) и нажмите
[Return]. SQL*PLUS выдаст подсказку для ввода новой строки:
SQL> INPUT
4
Введите новую строку. Затем нажмите [Return].
SQL*PLUS снова выдаст подсказку для новой строки:
4 ORDER BY SAL
5
Нажмите [Return] снова, чтобы оповестить SQL*PLUS о прекращении
ввода новых строк, и затем используйте команду RUN для проверки
и нового выполнения запроса.
Добавление текста
в конец строки Чтобы добавить текст в конец строки в буффере, используйте
команду APPEND:
1. Используйте команду LIST (или непосредственно номер строки),
для того чтобы стоку, которую вы хотите изменить.
2. Введите APPEND и добавляемый вами текст. Если текст
начинается с пробела, отделите слово APPEND от первого
символа текста двумя пробелами (1-й пробел- это разделитель;
а 2-й - заносится в буффер).
-- 20 --
Пример 3-5
Добавление текста
в конец строки Чтобы добавить пробел и слово DESC к строке 4 текущего
запроса, сначала необходимо распечатать строку 4:
SQL> LIST 4
4* ORDER BY SAL
Затем введите следующую команду (проверьте наличие 2-х пробелов
между APPEND и DESC):
SQL> APPEND DESC
4* ORDER BY SAL DESC
Используйте команду RUN для проверки и нового выполнение запроса.
Удаление строки Чтобы удалить строку из буффера, используйте команду DEL:
1. Используя команду LIST (или номер строки), распечатайте
строку, которую необходимо удалить.
2. Введите DEL.
DEL делает следующую строку в буффере текущей. Таким образом
последовательно можно удалять несколько строк, сначала делая
строку текущей и затем вводя команду DEL.
Редактирование команды системным редактором текстовых редакторов,
-------
В вашей ОС имеется один или несколько которые можно использовать для создания и
редактирования файлов. Текстовый редактор выполняет те же функции, что и
команды редактирования SQL*PLUS, но вам он может показаться более удобным.
Вы можете запускать системный текстовый редактор без выхода из SQL*PLUS с
помощью ввода команды EDIT:
SQL> EDIT
EDIT загрузит содержимое буффера в текстовый редактор. Затем можно исправлять
текст с помощью команд редактора. Когда вы скомандуете редактору сохранить
текст изатем выйдете из него, текст сохранится обратно в текущем буффере.
Чтобы загрузить содержимое буффера в другой текстовый редактор, а не в тот
который описан по умолчанию, используйте команду SQL*PLUS DEFINE для
определения переменной, _EDITOR, в которой помещается имя редактора.
Например, чтобы определить редактор, который следует использовать команде
EDIT как EDT, введите следующую команду:
SQL> DEFINE _EDITOR = EDT
Сохранение команд для использования позднее
-------
Благодаря SQL*PLUS, вы можете сохранять одну или более команд в файле,
называемом командным файлом. После создания командного файла вы можете
выбирать, редактировать и выполнять его. Используйте командные файлы для того,
чтобы использовать их в течение некоторого промежутка времени, специальные
сложные команды или блоки PL/SQL.
-- 21 --
Запоминание команд в командных файлах.
Вы можете запоминать одну и более команд SQL, локов PL/SQL, команд
SQL*PLUS в командных файлах. Создать командный файл в рамках SQL*PLUS, можно
одним из трех способов:
- введите команду и сохраните содержимое буффера
- используйте INPUT для ввода команд, а затем сохраните содержимое буффера
- используйте EDIT для создания временного файла используя системный редактор
Так как команды SQL*PLUS не запоминаются в буффере, для их сохранения вам
необходимо использовать один из последних двух методов.
Создание командного
файла посредством
сохранения Чтобы сохранить текущую команду SQL или блок PL/SQL,
содержимого введите команду SAVE. За командой следует имя файла:
буффера
SQL> SAVE имя_файла
SQL*PLUS добавляет расширение SQL к имени файла, чтобы идентифи
цировать, что это файл запросов SQL. Если вы желаете, можно
задать другое расширение в имени файла через точку. Заметим,
что внутри SQL*PLUS вы отделяете имя файла от расширения
точкой, хотя в ваше ОС это может быть другой символ.
Пример 3-5 Сначала посмотрите с помощью команды LIST содержимое
Сохранение текущей команды.
текущей
команды SQL> LIST
1 SELECT DEPTNO, ENAME, SAL
2 FROM EMP
3 WHERE DEPTNO = 10
4* ORDER BY SAL DESC
Если показанного запроса не в буффере, введите его снова.
Затем введите команду SAVE и имя файла DEPTINFO:
SQL> SAVE DEPTINFO
Created file DEPTINFO
Вы можете проверить существование командного файла DEPTINFO,
введя команду HOST и команду вашей операционной системы для
печати файла:
SQL> HOST команда_печати_файла_вашей_ОС
Вы можете использовать другой способ для сохранения текущего
блока PL/SQL запомненного в буфере.
Создание командного
файла с помщью Если использовать команду INPUT для ввода ваших команд,
INPUT и SAVE вы можете вводить команды SQL*PLUS (также как и команды SQL
или блоки PL/SQL) в буффер. Сначала вводятся команды SQL*PLUS,
а затем команд SQL или блоки PL/SQL; точно также, как и в
случая ввода команд после командной подсказки.
Можно также запоминать наборы команд SQL*PLUS , которые вы
планируете использовать со множеством различных запросов в
командных файлах.
-- 22 --
Пример 3-6 Предположим, вы сочинили запрос для показа списка продавцов
Сохранение и их комиссионных. Планируется, что вы выполняете его раз
команд с помощью в месяц, чтобы оценить результаты работы каждого служащего.
INPUT и SAVE Чтобы ввести и сохранить этот запрос используя команду
INPUT, вы должны сначала очистить буффер:
SQL> CLEAR BUFFER
Затем используйте INPUT для ввода команды (убедитесь, что вы
не ввели точку с запятой в конце команды):
SQL> INPUT
1 COLUMN ENAME HEADING SALESMAN
2 COLUMN SAL HEADING SALARY FORMAT $99,999
3 COLUMN COMM HEADING COMMISION FORMAT $99,990
4 SELECT EMPNO, ENAME, SAL, COMM
5 FROM EMP
6 WHERE JOB = 'SALESMAN'
7
Ноль в конце модели формата для колонки COMM сообщает SQL*PLUS , что необходимо
печатать ноль вместо пробела, когда цифра в данном месте равна нулю. Ноль
необходим только тогда, когда вы используете другие форматы для получаемых
колонок. Модели форматов и команда COLUMN описываются в главе 4.
Сейчас используйте команду SAVE для сохранения запроса в файле с именем SALES
с расширением SQL:
SQL> SAVE SALES
Created file SALES
Заметим, что не надо вводить точку с запятой в конце запроса; если вы включите
в команду точку с запятой, SQL*PLUS должен будет попытаться выполнить
содержимое буффера. Команды SQL*PLUS в буффере приведут к ошибкам потому, что
SQL*PLUS ожидает в буффере только команды SQL.
Чтобы несколько команд SQL, уберите точки с запятой во всех командах SQL.
Затем используйте APPEND, для добавления точки с запятой ко всем (кроме
последней) командам (SAVE добавляет наклонную черту в конец файла
автоматически; наклонная черта сообщает SQL*PLUS, что необходимо выполнить
последнюю команду, когда вы запускаете командный файл).
Чтобы ввести несколько блоков PL/SQL, введите один за другим блоки без точки
с запятой или наклонной черты между блоками. Затем, для каждого блока (кроме
последнего) распечатайте последнюю строку блока, чтобы сделать ее текущей, и
используйте INPUT для вставки наклонной черты:
INPUT /
Создание командных
файлов системным Вы можете также создавать командный файл с помощью
редактором текстового редактора ОС, с помощью ввода команды EDIT и
имени файла, например:
SQL> EDIT SALES
Подобно команде SAVE, EDIT также добавляет к имени файла расширение SQL, если
вы не указали своего расширения.
-- 23 --
Вы должны включать в конце каждой команды точку с запятой и строку с точкой
после каждого блока PL/SQL в файле. (Вы можете заводить множество команд SQL
и блоков PL/SQL).
Когда вы создаете командный файл командой EDIT, вы можете также включать
команды SQL*PLUS в конец файла. Вы не можете этого делать при создании
командного файла командой SAVE, так как SAVE добавляет наклонную черту в
конец файла. Эта наклонная черта будет приказывать SQL*PLUS-у выполнить
командный файл дважды, один раз при встрече точки с запятой в конце последней
команды SQL (или наклонной черты после последнего блока PL/SQL), и еще раз
при обнаружении наклонной черты в конце файла.
Помещение комментариев в командные файлы
-------
Вы можете вводить комментарии в командные файлы одним из трех способов:
- используя команду SQL*PLUS REMARK
- используя ограничители комментария SQL, /*...*/
- используя комментарии PL/SQL "--"
Использование Используйте команду REMARK на отдельной строке в командном
команды REMARK файле, с последующим комментарием на той же строке.
Чтобы продолжить комментарий на следующих строках, введите
дополнительные команды REMARK. Не разрывайте одну команду SQL
командами REMARK.
REMARK Отчет по комиссионным
REMARK выполняется ежемесячно
COLUMN ENAME HEADING SALESMAN
COLUMN SAL HEADING SALARY FORMAT $99,999
COLUMN COMM HEADING COMMISION FORMAT $99,990
REMARK Включает только продавцов
SELECT EMPNO, ENAME, SAL, COMM
FROM EMP
WHERE JOB = 'SAESMAN'
Использование Введите ограничители комментария SQL, на отдельных строках
/*...*/ командного файла, или в строке содержащей команду SQL или
блок PL/SQL. Комментарий может содержать несколько строк:
/* Отчет по комиссионным выполняется ежемесячно */
COLUMN
ENAME HEADING
SALESMAN COLUMN SAL HEADING SALARY
FORMAT $99,999 COLUMN COMM HEADING COMMISION FORMAT $99,990
SELECT EMPNO, ENAME, SAL, COMM
FROM EMP WHERE JOB = 'SAESMAN' /* Включает только продавцов */
Если вы ввели комментарий SQL непосредственно после командной
подсказки, SQL*PLUS не сохранит комментарий в буффере.
Использование Вы можете использовать "--" стиль комментариев внутри
комментариев блоков PL/SQL. Введите комментарий в строке команды.
PL/SQL "--" Комментарий должен оканчиваться на той же строке; здесь
не требуется конечный ограничитель.
DECLARE --блок для ежемесячного отчета продавцов
-- 24 --
Выборка командного файла
Если вы захотели поместить содержимое командного файла в буффер, вы должны
считать командный файл из файла в котором он сохранен. Вы можете сделать это,
используя команду SQL*PLUS GET.
Также как вы можете сохранить запрос из буффера в файл командой SAVE, вы
можете считать запрос из файла в буффер командой GET:
SQL> GET имя_файла
SQL*PLUS добавит точку и расширение к имени файла, если вы не указали свое
расширение.
Пример 3-7
Выборка командного файла
Предположим, вам необходимо прочитать файл SALES из предыдущего
упражнения. (Буффер можно очистить командой CLEAR BUFFER). Считайте файл
вводом команды GET. Чтобы считать файл SALES, введите:
SQL> GET SALES
1 COLUMN ENAME HEADING SALESMAN
2 COLUMN SAL HEADING SALARY FORMAT $99,999
3 COLUMN COMM HEADING COMMISION FORMAT $99,990
4 SELECT EMPNO, ENAME, SAL, COMM
5 FROM EMP
6* WHERE JOB = 'SAESMAN'
SQL*PLUS считал содержимое файла SALES с расширением SQL в буффер SQL и
распечатал его на экране. Затем можно корректировать команду дальше. Если
файл не содержит команд SQL*PLUS, вы несможете выполнить его командой RUN.
Выполнение командного файла
Команда START выбирает командный файл и выполняет команды, которые в нем
содержатся. Используйте START для выполнения командного файла содержащего
команды SQL*PLUS, команды SQL, блоки PL/SQL. За командой START указывается
имя файла:
START имя_файла
Если ваш файл имеет расширение SQL, его можно не указывать в имени файла.
Пример 3-8 Выполнение командного файла
-------
Для чтения и выполнения команд сохраненных в файле SALES.SQL, введите:
SQL> START SALES
SQL*PLUS выполнит команды из файла SALES и покажет результататы на
терминале, форматируя результаты запроса в соответсвие с командами
SQL*PLUS из файла:
EMPNO SALESMAN SALARY COMMISSION
--------- ---------- -------- ----------
7499 ALLEN $1,600 $300
7521 WARD $1,250 $500
7654 MARTIN $1,250 $1,400
7844 TURNER $1,500 $0
-- 25 --
Чтобы посмотреть команды "выбираемые" SQL*PLUS-м, вы можете установить
переменную ECHO команды SET в состояние ON. Переменная ECHO управляет
выводом команд в командном файле, выполняемого по команде START или по
команде '@'. Установка перменной ECHO в состояние OFF запрещает печать
команд.
Вы также можете использовать команду '@' для запуска командного файла:
SQL> @SALES
Команда '@' печатает и выполняет команды из указанного командманого
файла также, как и команда START.
Команды START и '@' оставляют в буффере последнюю команду SQL или блок
PL/SQL.
Выполнение командного во время старта SQL*PLUS
-------
Чтобы выполнить командый файл во время запуска SQL*PLUS, используйте один
из следующих четырех способов:
- Укажите после SQLPLUS имя, наклонную черту, пароль, пробел, @, имя файла:
SQLPLUS SCOTT/TIGER @SALES
SQLPLUS стартует и выполнит командный файл SALES.
- Укажите после SQLPLUS имя, пробел, @, имя файла:
SQLPLUS SCOTT @SALES
SQLPLUS попросит вас ввести пароль,стартует и выполнит командный файл SALES.
- Включите имя пользователя первой строкой файла. Укажите после SQLPLUS
знак @ и имя файла. SQLPLUS попросит вас ввести пароль,стартует и
выполнит командный файл SALES.
- Включите имя пользователя, наклонную черту, пароль пользователя первой
строкой файла. Укажите после SQLPLUS знак @ и имя файла. SQLPLUS
стартует и выполнит командный файл SALES.
Вложенность командных файлов
Чтобы выполнить несколько командных файлов подряд, сначала необходимо
создать командный файл содержащий несколько команд START с указанием имен
запускаемых файлов. Затем выполняется командный файл состоящий из команд
START. Например, можно создать следующий командный файл с именем SALESRPT:
START Q1SALES
START Q2SALES
START Q3SALES
START Q4SALES
START YRENDSLS
Модификация командных файлов
-------
Командные файлы могут модифицироваться двумя способами:
- используя команду EDIT
- используя GET, команды редактирования SQL*PLUS, и SAVE
-- 26 --
Чтобы отредактировать существующий командный файл с помощью команды EDIT, за
словом EDIT указывают имя файла. Например,для исправления файла PROFIT с
расширением SQL, введите следующую команду:
SQL> EDIT PROFIT
Помните, что команда EDIT предполагает расширение для имени файла SQL, если
вы не указали иного.
Чтобы отредактировать существующий файл используя GET, команды редактирования
SQL*PLUS, и SAVE, сначала считайте файл с помощью GET, затем исправьте его
командами редактирования SQL*PLUS, и наконец сохраните его командой SAVE.
Заметим, что если вы хотите заместить содержимое существующего файла командой
или блоком из буффера, то вы обязаны после SAVE и имени файла указать слово
REPLACE. Например:
SQL> GET MYREPORT
1* SELECT
* FROM EMP SQL> C/*/ENAME, JOB 1* SELECT ENAME, JOB
FROM EMP SQL> SAVE MYREPORT
REPLACE Wrote file MYREPORT
Если вы хотите добавить содержимое буффера в конец существующего файла,
надо после SAVE и имени файла указать слово APPEND:
SQL> SAVE имя_файла APPEND
Выход из командного файла с кодом возврата
-------
Если ваш командный файл генерирует ошибку SQL во время выполнение его из
командного файла ОС, вы можете захотеть прервать выполнение командного файла
и выйти из него с кодом возврата. Для этого используется команда SQL*PLUS
WHENEVER SQLERROR; смотри WHENEVER SQLERROR в главе 6.
Установка окружения для SQL*PLUS
Вы можете захотеть по своему настроить среду SQL*PLUS (например показать
текущее время как часть подсказки SQL*PLUS) и затем многократно использовать
установки установки данного сеанса. Это можно сделать с помощью файла
операционной системы LOGIN.SQL (его называют файлом параметров пользователя
[profile]).
Пставляемый ORACLE командный файл DEMOBLD (обсуждался в главе 1) создает файл
LOGIN в вашем директории. Сначала он будет пустым, кроме предложений DEFINE.
Вы можете добавить любые команды SQL, блоки PL/SQL, или команды SQL*PLUS в
этот файл; когда вы запускаете SQL*PLUS, он автоматически ищет ваш файл LOGIN
(сначала в текущем директории, затем в директориях задействованных в пути
[path]) и выполняет его команды. (Вы также можете иметь файл параметров
"местоположения" [Site]. Смотри команды SQL*PLUS в главе 6 и связь файлов
параметров пользователя и "местоположения".)
Если вы запустили на выполнение DEMOBLD, а LOGIN файл уже существует в
текущем директории, DEMOBLD спросит вас, сохранять или нет ваш LOGIN с новым
именем LOGIN.OLD . Если вы хотите сохранить свой LOGIN файл, дайте ответ
'yes', а затем переименуйте LOGIN.OLD в LOGIN.SQL .
-- 27 --
Замечание DEMODROP не удаляет файл LOGIN; он удаляет только
таблицы-примеры.
Модификация Вы можете модифицировать ваш файл LOGIN точно также, как и
вашего файла любой другой командный файл. Возможно вам захочется добавить
LOGIN несколько следующих команд в файл LOGIN:
SET COMPATIBILITY Последующие V5 или V6, устанавливает
совместимость с указанной версией ORACLE.
Установка COMPATIBILITY равной V5 позволяет
выполнять командные файлы созданные в 5-й
версии ORACLE.
SET CRT И далее указывается имя CRT SQL*FORMS,
позволяет выполнять формы SQL*FORMS командой
RUNFORM с описанной CRT.
SET NUMFORMAT И далее указывается числовой формат (такой как
$99,999); устанавливает формат по умолчанию
для печати чисел в результатах запроса.
SET PAGESIZE И далее указывается число; устанавливает число
строк на странице.
SET PAUSE Последующий ON, заставляет SQL*PLUS делать
паузу перед выводом каждой страницы (SQL*PLUS
продолжит вывод после нажатия [Return]). И
далее указывается текст, который будет
высвечиваться во время паузы.
SET TIME Последующий ON, заставляет SQL*PLUS печатать
время перед каждой командной подсказкой.
Смотри команду SET в главе 6, где описываются эти и другие
переменные команды SET, которые вы можете настраивать в своем
файле LOGIN.
Написание диалоговых программ Следующие возможности SQL*PLUS позволяют писать
командные файлы взаимодействующие с конечным пользователем:
- определение переменных пользователя
- подстановка значений в командах
- передача значений в команде START
- подсказка для ввода значения
Определение переменных пользователя
-------
Вы можете определять переменные, называемые переменными пользователя, для
повторного использования в одном командном файле, используя команду SQL*PLUS
DEFINE. Заметим, что вы можете также определить переменную пользователя для
использования ее в заголовках отчета.
Пример 3-9
Определение переменных пользователя
Чтобы определить переменную пользователя EMPLOEE и присвоить
ей значение "SMITH", введите следующую команду:
SQL> DEFINE EMPLOYEE = SMITH
-- 28 --
Для проверки описания переменной, введите DEFINE с
именем переменной:
SQL> DEFINE EMPLOYEE
SQL*PLUS распечатает описание:
DEFINE EMPLOYEE = "SMITH" (CHAR)
Чтобы распечатать описание всех переменных пользователя, введите DEFINE
после командной подсказки. Заметим, что переменные явно определенные вами
командой DEFINE, получают значения CHAR. Вы можете определить переменную
пользователя с типом NUMBER с помощью команды ACCEPT. Команда ACCEPT
описывается ниже в этой главе.
Для удаления переменной используйте команду SQL*PLUS UNDEFINE с указанием
имени переменной.
Использование переменных подстановки
-------
Предположим, вы хотите написать запрос подобный запросу SALES (см пример 3-6)
для печати служащих с разными профессиями, не только продавцов (SALESMAN). Вы
можете сделать это изменяя значения CHAR в клаузе WHERE, каждый раз, когда
выполняете команду, но это просто.
Используя переменную подстановки вместо значения SALESMAN в клаузе WHERE,
можно получить теже результаты, которые вы бы получили в результате указания
значения в самой команде.
Подстановочная переменная- это имя переменной пользователя с предшествующими
одним или двумя амперсандами (&). Когда SQL*PLUS встречает подстановочную
переменную в команде, он выполняет команду так, как будто она содержит значение
подстановочной переменной, а не саму переменную.
Например, если переменная SORTCOL имеет значение JOB, и переменная MYTABLE
имеет значение EMP, SQL*PLUS выполнит команды
SQL> BREAK ON &SORTCOL
SQL> SELECT &SORTCOL, SAL
2 FROM &MYTABLE
3 ORDER BY &SORTCOL;
также как и
SQL> BREAK ON JOB
SQL> SELECT JOB, SAL
2 FROM EMP
3 ORDER BY JOB;
(Команда BREAK запрещает дублирование значений в колонке с именем в
переменной SORTCOL; BREAK описывается в главе 4.)
Где и Как использовать переменные подстановки
-------
Вы имеете право использовать переменные подстановки в любом месте в
командах SQL*PLUS и SQL, исключая первое слово вводимое после командной
подсказки. Когда SQL*PLUS встречает неопределенную переменную подстановки в
-- 29 --
команде, он попросит вас ввести для нее значение. Можно ввести несколько
строк после подсказки, даже строки содержащие пробелы и пунктуации. Когда
команда SQL, содержащая ссылки, должна иметь кавычки вокруг переменной, а вы
не включаете их туда, пользователь должен включать их при вводе.
SQL*PLUS читает ваш ответ с клавиатуры, даже если вы перенаправляете терминаль
ный ввод или вывод в файл. Если терминал отсутствует (если, например, вы выпол
няете командный файл в пакетном режиме), SQL*PLUS использует переназначенный
файл.
После ввода значения, SQL*PLUS печатает строку содержащую подстановочную
переменную дважды: один раз до подстановки, и другой- после подстановки.
Можно подавить эту печать с помощью установки переменной VERIFY (OFF) команды
SET.
Пример 3-10
Использование Создайте командный файл с именем STATS, для использования
переменных при вычислении статистики в подгруппе (максимальное
подстановки значение) в цифровой колонке:
SQL> CLEAR BUFFER
SQL> INPUT
1 SELECT &GROUP_COL,
2 MAX(&NUMBER_COL) MAXIMUM
3 FROM &TABLE
4 GROUP BY &GROUP_COL
5
SQL> SAVE STATS
Created file STATS
Сейчас выполните ный файл STATS и ответте как показано ниже:
SQL> @STATS
Enter value for group_col: JOB
old 1: SELECT &GROUP_COL,
new 1: SELECT JOB,
Enter value for number_col: SAL
old 2: MAX(&NUMBER_COL) MAXIMUM
new 2: MAX(SAL) MAXIMUM
Enter value for table: EMP
old 3: FROM &TABLE
new 3: FROM EMP
Enter value for group_col: JOB
old 4: GROUP BY &GROUP_COL
new 4: GROUP BY JOB
SQL*PLUS выведет следующее:
JOB MAXIMUM
---------- ---------
ANALYST 3000
CLERK 1300
MANAGER 2975
PRESIDENT 5000
SALESMAN 1600
-- 30 --
Если вы хотите добавить символы непосредственно после подстановочной
переменной, используйте точку для разделения переменной и символов.
Например:
SQL> SELECT * FROM EMP WHERE EMPNO='&X.01';
Enter value for X: 123
Это будет интерпретироваться так:
SQL> SELECT * FROM EMP WHERE EMPNO='12301';
Устранение
необязательной Предположим вы захотели расширить файл STATS, чтобы включить
подсказки для минимум, сумму и среднее 'числовой' колонки. SQL*PLUS
ввода значения вас дважды ввести значение для GROUP_COL, и один раз для
NUMBER_COL из примера 3-10, перед этими переменными стоит один
амперсанд. Если вы хотите добавить еще три функции- используя один амперсанд- к
командному файлу, SQL*PLUS потребует от вас 5-ть раз ввода имени числовой
колонки.
Вы можете избежать повторного ввода имени групповой и числовой колонок с
помощью подсоединения второго амперсанда перед GROUP_COL и NUMBER_COL в файле
STATS. SQL*PLUS автоматически определит подстановочную переменную с двумя
амперсандами, но не сделает этого для переменной с одним амперсандом. Таким
образом, когда SQL*PLUS встречает подстановочную переменную в течение сеанса
более одного раза, SQL*PLUS использует уже определенное значение для переменных
с двумя амперсандами, и просит ввода значения для переменных с одним
амперсандом. Эта возможность также полезна если вы захотите выполнять файл для
различных таблиц с теми же значениями GROUP_COL и NUMBER_COL.
Пример 3-11 Чтобы улучшить командный файл STATS с помощью двойных
Использование амперсандов, а затем выполнить файл, сначала подавим вывод
двойных каждой командной до и после подстановки: амперсандов
SQL> SET VERIFY OFF
Сейчас считаем и отредактируем STATS, введя следующую команду:
SQL> GET STATS
1 SELECT &GROUP_COL,
2 MAX(&NUMBER_COL) MAXIMUM
3 FROM &TABLE
4 GROUP BY &GROUP_COL
SQL> 2
2* MAX(&NUMBER_COL) MAXIMUM
SQL> APPEND ,
2* MAX(&NUMBER_COL) MAXIMUM,
SQL> C /&/&&
2* MAX(&&NUMBER_COL) MAXIMUM,
SQL> I
3i MIN(&&NUMBER_COL) MINIMUM,
4i SUM(&&NUMBER_COL) TOTAL,
5i AVG(&&NUMBER_COL) AVERAGE
6i
SQL> 1
1* SELECT &GROUP_COL,
SQL> C /&/&&
1* SELECT &&GROUP_COL,
SQL> 7
7* GROUP BY &GROUP_COL
-- 31 --
SQL> C /&/&&
7* GROUP BY &&GROUP_COL
SQL> SAVE STATS2
created file STATS2
И наконец, выполним командный файл STATS2:
SQL> START STATS2
Enter value for group_col: JOB
Enter value for number_col: SAL
Enter value for table: EMP
SQL*PLUS выведет следующее
JOB MAXIMUM MINIMUM TOTAL
AVERAGE
---------- ---------- ---------- ----------
ANALYST 3000 3000 6000
3000
CLERK 1300 800 4150
1037.5
MANAGER 2975 2450 8275
2758.3333
PRESIDENT 5000 5000 5000
5000
SALESMAN 1600 1250 5600
1400
Заметим, что подсказка для ввода значений NUMBER_COL и GROUP_COL
появится только один раз. Если в течение данного сеанса вы
снова выполните STATS2, вас попросят ввести значение только
для TABLE (потому, что в его имени стоит только один амперсанд
и переменная поэтому не запоминается), а для переменных
NUMBER_COL и GROUP_COL ввода не потребуется (так как перед их
именами стоит двойной амперсанд, поэтому они запоминаются).
Перед тем как продолжить установите системную переменную
VERIFY обратно в состояние ON:
SQL> SET VERIFY ON
Ограничения
-------
Вы не можете использовать подстановочные переменные в командах редактирова-
ния буффера (APPEND, CHANGE, DEL, INPUT) и в других командах, где подстановка
ничего не означает (такие как REMARK и TIMING). Команды редактирования
буффера, APPEND, CHANGE, DEL, INPUT, обрабатывают текст начинающийся с "&" и
"&&" буквально, как любую другую текстовую строку.
Системные Следующие системные переменные, определяемые командой SET,
переменные влияют на переменные подстановки:
SET SCAN Включение/выключение подстановки
SET DEFINE Определение символа подстановки (по умолчанию "&")
-- 32 --
SET ESCAPE Определение символа переключения (ESC), который можно
использовать перед символом подстановки. Символ ESC ука
SQL*PLUS на то, что символ подстановки надо воспринимать как
обычный символ. По умолчанию ESC есть обратная наклоння
черта(\).
SET VERIFY ON Печатает каждую строку командного файла до и после
подстановки.
SET CONCAT Определяет символ, который разделяет имя подстановочной
переменной или параметр от другого текста, который
следует непосредственно за переменной или параметром- по
умолчанию это точка (.).
За более подробной информацией обращайтесь к главе 6.
Передача параметров в команде START
-------
Вы можете обойти подсказку для ввода соответсвующих значений для подстановочных
переменных посредством передачи значений через параметры командному файлу
через команду START.
Вы можете сделать это поместив амперсанд с последующим числом в командном
файле вместо подстановочной переменной. Каждый раз, когда вы будете выполнять
команднй файл, START замещает каждое &1 в файле на первое значение
(называется аргументом) после START имя_файла, затем замещает каждое &2 на
второй аргумент, и так далее.
Например, вы можете вы можете включить следующие команды в командный файл
MYFILE:
SELECT * FROM EMP
WHERE JOB='&1'
AND SAL=&2
Следующая команда START заставит SQL*PLUS заместить &1 на CLERK и &2 на 7900
в командном файле MYFILE:
SQL> START MYFILE CLERK 7900
Когда вы используете аргументы в команде START, SQL*PLUS связывает каждый
параметр в командном файле со значением соответсвующего аргумента.
Пример 3-12 Для создания нового командного файла на базе SALES, который
Передача принимает параметр для job, введите:
параметров в
команде START SQL> GET SALES
1 COLUMN ENAME HEADING SALESMAN
2 COLUMN SAL HEADING SALARY FORMAT $99,999
3 COLUMN COMM HEADING COMMISION FORMAT $99,990
4 SELECT EMPNO, ENAME, SAL, COMM
5 FROM EMP
6* WHERE JOB = 'SALESMAN'
SQL> CHANGE /SALESMAN/&1
6* WHERE JOB = '&1'
SQL> 1
1* COLUMN ENAME HEADING SALESMAN
SQL> CHANGE /SALESMAN/&1
-- 33 --
1* COLUMN ENAME HEADING &1
SQL> SAVE ONEJOB
Created file ONEJOB
Сейчас выполним командный файл с параметром CLERK.
SQL> START ONEJOB CLERK
SQL*PLUS распечатает строку с командой SQL, которая содержит
параметр, до и после замещения параметра, и затем выведет
результаты:
old 3: WHERE JOB = '&1'
new 3: WHERE JOB = 'CLERK'
EMPNO CLERK SALARY COMMISION
---------- ---------- --------- ---------
7369 SMITH $800
7876 ADAMS $1,100
7900 JAMES $950
7934 MILLER $1,300
Вы можете использовать несколько параметров в командном файле.
Внутри командного файла можно использовать каждый параметр по
номеру, и можно включать параметры в любой последовательности.
Заметим, что нельзя использовать параметры, когда команда
выполняется с помощью RUN или наклонной черты (/). Для этого
необходимо запомнить команду в командном файле и выполнить ее
командой START.
До того как продолжить, возвратите колонке ENAME ее
первоначальный заголовок:
SQL> COLUMN ENAME CLEAR
Связь с пользователем
-------
Три команды SQL*PLUS-PROMPT, ACCEPT, PAUSE- помогают вам общаться с конеч-
ным пользователем. Данные команды позволяют посылать сообщения и принимать
ввод данных от пользователя, включая и простое нажатие [Return]. Вы также може-
те использовать PROMPT и ACCEPT для изменения подсказки при вводе значений,
которую автоматически генерирует SQL*PLUS для подстановочных переменных.
Подсказка и ввод
-------
Значений для Используя PROMPT и ACCEPT, можно посылать сообщения переменных
пользователю и принимать данные от него. PROMPT просто пользователя выводит
указанное вами сообщение на экран; используйте эту команду для передачи
инструкций или информации пользователю. ACCEPT выдает подсказку пользователю
для ввода значения и запоминает его в указанной переменной пользователя.
Используйте PROMPT совместно с ACCEPT, когда ваша подсказка содержит больше
одной строки.
Пример 3-13 Чтобы приказать пользователю ввести заголовок рапорта и
Подсказка и запомнить введенное значение в переменной MYTITLE для прием
ввода дальнейшего использования, сначала очистим буффер:
-- 34 --
SQL> CLEAR BUFFER
Затем создадим командный файл:
SQL> INPUT
1 PROMPT Введите заголовок (до 30 символов)
2 ACCEPT MYTITLE PROMPT 'Заголовок: '
3 TTITLE CENTER MYTITLE SKIP 2
4 SELECT * FROM DEPT
5
SQL> SAVE PROMPT1
Created file PROMPT1
Команда TTITLE устанавливает начальный (верхний) заголовок для вашего отчета.
Подробнее в главе 4.
Наконец, выполните командный файл, ответив на подсказку для ввода заголовка,
как показано ниже:
SQL> START PROMPT1 Введите заголовок (до 30 символов) Заголовок: Departament
Report as of 1/1/89
SQL*PLUS выведет следующее: Departament Report as of 1/1/89
DEPTNO DNAME LOC
---------- ------------ ------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Перед тем как продолжить, выключите команду TTITLE, как показано ниже:
SQL> TTITLE OFF
Изменение подсказки
при вводе значения
подстановочной Если вы хотите изменить подсказку при вводе значения
переменной подстановочной переменной, используйте совместно команды
PROMPT и ACCEPT как показано ниже.
Пример 3-14 Как вы увидели в примере 3-13, SQL*PLUS автоматически
Совместное генерирует подсказку для ввода значения, когда используется
использование переменная подстановки. Вы можете заменить эту подсказку,
PROMPT и ACCEPT включив в командный файл PROMPT и ACCEPT вместе с запросом,
для переменных который ссылается на переменную подстановки. Чтобы создать
подстановки такой файл, введите следующие команды:
SQL> CLEAR BUFFER
buffer cleared
SQL> INPUT
1 PROMPT Enter a valid employee number
2 PROMPT For example: 7123, 7456, 7890
3 ACCEPT ENUMBER NUMBER PROMPT 'Emp. no.:'
4 SELECT ENAME, MGR, JOB, SAL
5 FROM EMP
6 WHERE EMPNO = &ENUMBER
7
SQL> SAVE PROMPT2
Created file PROMPT2
-- 35 --
Затем, выполните командный файл. SQL*PLUS выдаст вам подсказку
для ввода значение ENUMBER, используя указанный вами текст в
PROMPT и ACCEPT:
SQL> STERT PROMPT2
Enter a valid employee number
For example: 7123, 7456, 7890
Emp. no.:
Попытайтесь ввести символы вместо цифр после подсказки
"Emp.no.:" :
Emp. no.: ONE
"ONE" is not a valid number
Emp. no.:
Так как вы указали NUMBER после имени переменной в команде
ACCEPT, SQL*PLUS не примет не-цифровое значение. Сейчас введите
число:
Emp. no.: 7521
old 3: WHERE EMPNO = &ENUMBER
new 3: WHERE EMPNO = 7521
SQL*PLUS выведет следующие результаты:
ENAME MGR JOB SALARY
---------- ---------- ------------ ----------
WARD 7698 SALESMAN $1,250
Посылка сообщения
и прием [Return] Если вы хотите вывести сообщение на экран пользователя, и
в качестве ввода чтобы после прочтения сообщения пользователь нажал [Return],
используйте команду PAUSE. Например, можно включить следующие
строки в командный файл:
PROMPT Before continue, make shure you have your
acount card
PAUSE Press RETURN to continue.
Если сообщение, которое вы хотите вывести, помещается на одной
строке, команду PROMPT можно опустить.
Очистка экрана Если вам необходимо очистить экран до вывода отчета (или когда
это необходимо), включите команду SQL*PLUS CLEAR с ее параметром
SCREEN в соответствующее место командного файла, в следующем
формате:
CLEAR SCREEN
Перед переходом к следующей главе, восстановите формат всех
колонок и заголовки в начальное состояние с помощью следующей
команды:
SQL> CLEAR COLUMNS
|