II.1. Утилита SQL*Plus, ее настройка и работа с ней при выполнении простых запросов выборки столбцов и строк
II.1. 1. Команды утилиты SQL*Plus и ее настройка
SQL*Plus представляет собой инструмент, с помощью которого можно интерактивно или в пакетном режиме определять данные, управлять ими в базах данных Oracle, выполнять команды SQL, PL/SQL программы.
Алфавитный список команд SQL*Plus включает до 50 команд (file:///D:/Ora10.2_.doc/server.102/b14356/toc.htm#CFAJHBCH)1). В этом разделе мы
1) Эту строку надо вставлять, как URL, в браузере, изменив «D:/Ora10.2_.doc» на путь к документации Oracle10g на своем компьютере»
приведем минимум команд SQL*Plus, необходимых для выполнения лабораторных работ.
В таблице 1 приведены наиболее часто используемые команды SQL*Plus.
Таблица 1.
Команда
Назначение
SPOOL путь и имя файла
Инициализирует запись протокола работы SQL*Plus в текстовый файл, расположенный по указанному пути.
SPOOL OFF|ON
OFF ION отключает/возобновляет запись протокола работы SQL*Plus в текстовый файл.
DESC[RIBE] имя таблицы
Выводит в окне SQL*Plus структуру таблицы.
HOST команда ОС
Выполняет команду операционной системы из SQL*Plus.
CONNECT имя/пароль
Соединение с сервером Oracle под другим именем/паролем.
COL[UMN] название_столбца FORMAT An
При выводе столбца символьного типа с указанным именем его выводимый размер примет значение n символов
COL[UMN] название_столбца FORMAT 9--9.9--9
При выводе столбца числового типа с указанным именем выводимый размер примет значение стольких разрядов целой части, сколько девяток поставлено перед точкой, с добавлением стольких разрядов дробной части, сколько девяток было поставлено после точки
ED|IT
Вызов редактора, в котором можно править последнюю команду в буфере SQL*Plus
EXIT
Выход из SQL*Plus
SET LINESIZE N
Устанавливает длину выводимой строки в n символов
SET PAGESIZE N
Устанавливает размер выводимой страницы, равным n строк
SET SERVEROUTPUT ON
Обеспечивает возможность работы пакета (программного модуля)
DBMS_OUTPUT, обеспечивающего вывод информации при работе программ PL/SQL
SET SQLPROMPT
‘текст’
Выводит подсказку «текст»
SET ECHO {ON | OFF}
Устанавливает или прекращает вывод в окне SQL*Plus выполненяемых команд в sql скриптах
SET TERM[OUT] {ON | OFF}
Устанавливает или прекращает вывод в окне SQL*Plus результатов выполнения команд в sql скриптах
SAVE название скрипта
Запоминание скрипта последнего запроса в файле «название скрипта»
@название SQL скрипта
Запустить на выполнение SQL скрипт
Команды в SQL*Plus пишутся сразу после выводимой подсказки (LAVR@10G). Регистр написания команд SQL*Plus не важен. Отметим здесь, что команды языка SQL и команды SQL*Plus – не одно и то же. В отдельных частях команд SQL, там, где задаются значения строк или столбцов хранимых таблиц, регистр важен.
1) Здесь и далее указанный путь предполагает, что при установке Oracle в строку «Oracle Home» было введено значение «D:\oracle\product\10.2.0\db_1\». Для другого значения Oracle Home изменится путь к файлам sqlplusw.exe, sqlplus.exe, а также – к некоторым другим файлам, называемым ниже по тексту.
Команды SQL, вводимые в окне SQL*Plus, могут занимать несколько строк и заканчиваются точкой с запятой и выполняются после нажатия клавиши «Enter». Другой способ выполнения: на последней строке SQL команды ввести символ «/» и нажать клавишу «Enter». Последняя введенная команда хранится в буфере SQL*Plus.
SQL*Plus можно запускать в интерфейсе Windows (D:\oracle\product\10.2.0\db_1\BIN\ sqlplusw.exe)1), а также – в окне DOS (D:\oracle\product\10.2.0\db_1\BIN\ sqlplus.exe).
Ссылка на SQL*Plus в интерфейсе Windows есть в панели задач отдельной строкой, откуда его обычно и запускают. Для запуска SQL*Plus в окне DOS достаточно выполнить в нем комаду sqlplus без указания пути, предварительно выбрав в свойствах окна DOS шрифт TT Lucida Console и изменив кодовую страницу командой «chcp 1251».
В этом случае выводимые на кириллице сообщения будут нормально читаться (обычно названные настройки дают результат для русскоязычной ОС Windows; для некоторых версий ОС Windows могут потребоваться другие языковые настройки).
Зачастую при работе с SQL*Plus важно знать, какой пользователь работает с базой данных и с какой базой данных он работает. У автора настоящего пособия на компьютере постоянно находится несколько баз данных с разными версиями Oracle. Для того, чтобы иметь ответы на эти вопросы, достаточно изменить подсказку по умолчанию в окне SQL*Plus (SQL>) на подсказку из двух частей: имени пользователя и имени базы, разделенных знаком, например , «&». Способ такой настройки указан в /1/. Приведем соответствующий текст из /1/ с незначительной корректировкой, связанной с использованием в лабораторных работах версии Oracle10g.
Для обеспечения запуска sqlplusw.exe или sqlplus.exe с такой подсказкой создаются
два файла: glogin.sql, connect.sql.
Скрипт glogin.sql, расположенный в директории D:\oracle\product\10.2.0\db_1\sqlplus\admin автоматически выполняется при каждом запуске SQL*Plus. Вместо скрипта glogin.sql, создаваемого при установке Oracle, создается и перезаписывается на то же место новый скрипт с тем же именем, имеющий следующий вид:
Он выбирает из базы данных значение GLOBAL_NAME, используя функцию
DECODE для присваивания требуемых имен одному или нескольким обычно исполь-
зуемым экземплярам, а затем конкатенирует его с именем текущего пользователя. На-
конец, мы отображаем эту информацию в приглашении SQL*Plus:
set sqlprompt '&gname> '
Поэтому приглашение для соединяющегося с сервером Oracle10g (если при установке Oracle10g была создана предустановленная база данных ORCL и другая база данных не создавалась) пользователя scott будет иметь вид:
scott@10g>
Таким образом известно, кто работает и с какой базой работает. Еще один очень полезный скрипт— это скрипт connect.sql, который надо разместить в директории
Утилита SQL*Plus будет автоматически выполнять скрипт glogin.sql при начальном запуске. Но если в окне SQL*Plus с сервером Oracle будет соединяться другой пользователь командой connect имя_пользователя/пароль_пользователя, скрипт glogin.sql автоматически выполняться не будет. В окне SQL*Plus после соединения другого пользователя с сервером Oracle останется прежняя подсказка.
Если же вместо connect имя_пользователя/пароль_пользователя ввести
@connect имя_пользователя/пароль_пользователя, будет выполнен скрипт connect.sql, а в нем - команда SQL*Plus connect с параметром имя_пользователя/пароль_пользователя (строка «connect &1» скрипта connect.sql), а затем - скрипт glogin.sql (строка @D:\oracle\product\10.2.0\db_1\sqlplus\admin\glogin.sql скрипта connect.sql) и нужная подсказка будет установлена.