|
ЧАСТЬ II Справочник
Глава 6 Справочник Команд
Эта глава содержит описание команд SQL*PLUS в алфавитном порядке.
Используйте данную главу только в качестве справочника. Каждое описание
состит из следующих частей:
Цель Описывается основное назначение команды
Синтаксис Показывает, как вводится команда. Смотри главу 1, где
объясняются соответсвующие знаки используемые при описании
команды.
Термины и Фразы Описывается функция для каждого термина или фразы
Рекомендации Предоставляет дополнительную информацию о том как работает и
используется команда.
Примеры Приводятся один или несколько примеров использования команды.
Перед описанием команд приводится общая таблица, в которой перечислены и
кратко описаны команды SQL*PLUS.
Общий перечень команд SQL*PLUS
Команда Описание
----------------------------------------------------------------Д
@ Выполняет указанный командный файл.
/ Выполняет текущую команду SQL или блок PL/SQL из буффера SQL.
ACCEPT Читает строку с устройства ввода и запоминает ее в указанной
переменной пользователя.
APPEND Добавляет указанный текст в конец текущей строки буффера.
BREAK Определяет где и как будет производиться форматирование в отчете,
или выводит текущие определения прерываний.
BTITLE Помещает и форматирует указанный заголовок в конце каждой страницы
отчета, или выводит текущее описание BTITLE.
CHANGE Изменяет текст текущей строки буффера.
CLEAR Сбрасывает или очищает текущее значение или установки для указанных
опций, такие как BREAKS или COLUMNS.
COLUMN Задает атрибуты вывода для указанной колонки. Или, показывает
текущие установки вывода для одной или всех колонок.
COMPUTE Вычисляет и печатает итоговые строки, используя различные
стандартные вычисления, по группам выбираемых записей. Или,
показывает все описания COMPUTE.
-- 67 --
CONNECT Подключает указанного пользователя к ORACLE.
COPY Копирует данные из запроса в таблицу локальной или удаленной БД.
DEFINE Определяет переменную пользователя и присваивает ей CHAR-значение.
Или, показывает значение и тип одной или всех переменных.
DEL Удаляет текущую строку из буффера.
DESCRIBE Показывает описания колонок для указанной таблицы, представления
(view), или синонима.
DISCONNECT Производит отложенные изменения в БД и отключает текущего
пользователя от ORACLE, но не покидает SQL*PLUS.
EDIT Загружает текстовый редактор ОС с указанным файлом или содержимым
буффера SQL.
Команда Описание
----------------------------------------------------------------Д
EXIT Производит все отложенные изменения в БД, завершает SQL*PLUS, и
возвращает управление ОС.
GET Загружает файл ОС в буффер.
HOST Выполняет команду операционной системы без выхода из SQL*PLUS.
INPUT Добавляет одну или несколько новых строк после текущей строки
в буффер.
LIST Выводит одну или несколько строк буффера.
PAUSE Выводит пустую строку и строку с указанным текстом, затем ожидает
нажатие пользователем [Return]. Или, выводит две пустые строки и
ожидает [Return].
PROMPT Посылает указанное сообщение или пустую строку на экран.
REMARK Начинает комментарий в командном файле.
RUN Выводит и выполняет текущую команду SQL или блок PL/SQL из буффера
SQL.
RUNFORM Вызывает приложение SQL*FORMS из SQL*PLUS.
SAVE Сохраняет содержимое буффера в файле ОС.
SET Настраивает окружение SQL*PLUS для текущего сеанса.
SHOW Выводит значения системных переменных SQL*PLUS.
SPOOL Сохраняет результаты в файле ОС, и ,обычно, посылает этот файл на
принтер. Также выводит текущий статус буфферизации.
SQLPLUS Запускает SQL*PLUS из ОС.
START Выполняет указанный командный файл.
-- 68 --
TIMING Записывает временные данные о общем времени выполнения, выводит
текущий заголовок временной области, или выводит количество
активных временных областей.
TTITLE Помещает и форматирует указанный заголовок в начале каждой страницы
отчета, или выводит текущее описание TTITLE.
UNDEFINE Удаляет указанную переменную пользователя.
WHENEVER Покидает SQL*PLUS, если команда SQL или блок PL/SQL SQLERROR
генерируют ошибку.
-- 69 --
@(знак"at") Цель Запускает указанный командный файл.
Синтаксис @ имя_файла[.ext]
Термины и Фразы имя_файла[.ext] Представляет командный файл, который
вы хотите выполнить. Если вы опустите ext
(расширение), SQL*PLUS по умолчанию обычно
использует расширение SQL. За информацией по
изменению расширения по умолчанию, смотри
переменную SUFFIX команды SET в данной главе.
Рекомендации Вы можете включать в командный файл любые команды, которые вы
обычно вводите интерактивно (команды SQL или SQL*PLUS).
Данная команда действует подобно START, но не позволяет
передавать параметры.
Примеры Чтобы выполнить командный файл PRINTRPT с расширением SQL,
введите:
SQL> @PRINTRPT
Чтобы выполнить командный файл WKRPT с расширением QRY, введите:
SQL> @WKRPT.QRY
-- 70 --
/ (наклонная черта вправо)
Цель Выполняет команду SQL или блок PL/SQL в буффере SQL.
Синтаксис /
Рекомендации Вы можете вводить наклонную черту после командной подсказки
или после подсказки с номером строки, выдаваемой в качестве
продолжения команды или блока PL/SQL.
Данная команда действует подобно команде RUN, но она не
выводит на ваш экран команду из буффера.
Выполнение команды SQL или блока PL/SQL, используя "/", не
изменит номер текущей строки в буфере, если команда в буфере
не содержит ошибок. В случае существования ошибки SQL*PLUS
поставит указатель текущей строки на строку с ошибкой.
Примеры Чтобы посмотреть команду, которую вы будете выполнять, вы
можете вывести содержимое буфера:
SQL> LIST
1* SELECT ENAME, JOB FROM EMP WHERE ENAME =
'JAMES'
Введите команду "/" после командной подсказки, чтобы выполнить
буфферную команду:
SQL> /
Для вышеприведенного запроса SQL*PLUS покажет следующее:
ENAME JOB
--------- ---------
JAMES CLERK
-- 71 --
ACCEPT
Цель Читает строку с устройства ввода и сохраняет ее в указанной
пользователем переменной.
Синтаксис ACC[EPT] переменная [NUM[BER]|CHAR][PROMPT текст | NOPR[OMT]] [HIDE]
Термины и Фразы переменная Имя переменной, в которой вы хотите сохранить
значение. Если переменная не существует,
SQL*PLUS создаст ее.
NUM[BER] Ограничивает тип данных переменной типом
NUMBER. Если ответ не соответсвует типу данных,
ACCEPT выдает сообщение об ошибке и
завершается.
CHAR Ограничивает тип данных переменной типом CHAR.
Если ответ не соответсвует типу данных, ACCEPT
выдает сообщение об ошибке и завершается.
PROMPT текст Выводит текст на экран до приема значения
переменной от пользователя.
NOPR[OMPT] Пропускает строку и ожидает ввода без вывода
подсказки.
HIDE Запрещает показ вводимых данных.
Примеры Чтобы вывести подсказку "Salary: " и поместить ответ в
NUMBER-переменную SALARY, введите:
SQL> ACCEPT salary NUMBER PROMPT 'Salary: '
Чтобы вывести подсказку "Password: " и поместить ответ в CHAR-переменную PSWD
и подавить показ вводимых данных, введите:
SQL> ACCEPT pswd CHAR PROMPT 'Password: ' HIDE
-- 72 --
APPEND
Цель Добавляет указанный текст в конец текущей строки буфера.
Синтаксис A[PPEND] текст
Термины и Фразы текст Текст, который вы хотите добавить. Если вы хотите
отделить текст от предшествующих символов пробелом,
введите два пробела между APPEND и текстом.
Примеры Чтобы добавить пробел и имя колонки DEPT во второй строке
буфера, сначала необходимо сделать ее текущей:
SQL> 2
2* FROM EMP,
Затем введите APPEND:
SQL> APPEND DEPT
SQL> 2
2* FROM EMP, DEPT
Обратите внимание на двойной пробел между APPEND и DEPT.
Первый разделяет APPEND от текста; второй пробел является
первым добавляемым символом.
Чтобы добавить точку с запятой, введите:
SQL> APPEND ;;
SQL*PLUS добавляет первую точку с запятой к текущей строке, а
вторую интерпретирует как конец команды APPEND.
-- 73 --
BREAK
Цель Определяет где и как форматирование будет изменять отчет:
* подавление вывода дублированных значений для указанных колонок
* пропуск строк при изменении значения колонки
* печать вычисляемых значений при изменении величины колонки или в
конце отчета (см команду COMPUTE) Также показывает текущие
BREAK-определения
Синтаксис BRE[AK] [ON элемент-отчета [действие [действие]]] ...
где:
элемент-отчета Необходим следующий синтаксис:
{column | expr | ROW | REPORT}
действие Необходим следующий синтаксис:
[SKI[P] n | [SKI[P]] PAGE]
[NODUP[LICATES] | DUP[LICATES]]
Термины и Фразы ON колонка [действие [действие]]
Определяются действия для SQL*PLUS, которые необходимо произвести
при прерывании в указанной колонке (называется колонкой
прерывания). Прерывание происходит по одной из трех причин:
* изменилось значение колонка или выражения
* окончание вывода записи
* конец отчета
Когда вы опускаете действие, "BREAK ON колонка" запрещает
печать дублированных значений в колонке и помечает место в
отчете, в котором SQL*PLUS произведет вычисления,
определенные вами в соответсвующей команде COMPUTE.
Вы можете указать "ON колонка" один или несколько раз. Если вы
указали фразу ON несколько раз, как в данном случае:
SQL> BREAK ON DEPTNO SKIP PAGE ON JOB
SKIP 1 -
> ON SAL SKIP 1
сначала фраза ON рассматривает самое внешнее прерывание (в
данном случае ON DEPTNO) и в самую последнюю очередь фраза ON рас-
сматривает самое внутреннее прерывание (в данном случае ON SAL).
SQL*PLUS ищет прерывание в каждой выводимой записи в указанных
колонках, начиная с самого внешнего прерывания до самого внутрен
него прерывания в заказанном вами порядке. В данном случае,
SQL*PLUS ищет измененные значения в DEPTNO, затем в JOB, затем
в SAL.
-- 74 --
Затем, SQL*PLUS выполняет действия начиная с действий указанных
для самого внутреннего прерывания и так обработка идет в обратном порядке
к самому внешнему прерыванию (в данном случае от SKIP 1 для ON SAL к SKIP
PAGE для ON DEPTNO). SQL*PLUS выполняет все действия снизу вверх,
включая действия и для колонки, в которой произошло прерывание.
Если, например, в выводимой последовательности записей изменилось
значение колонки JOB, но значения DEPTNO и SAL не изменились, то
SQL*PLUS пропустит две строки перед тем как напечатать запись (одна
строка- как результат SKIP 1 во фразе ON SAL, и другая строка- как
результат SKIP 1 во фразе ON JOB).
Всегда при использовании "ON колонка", вы должны также использовать
фразу ORDER BY в команде SQL SELECT. Обычно, колонки, используемые в
команда BREAK, должны появляться в той же последовательности во фразе
ORDER BY (хотя все колонки указанные в ORDER BY необязательно должны
присутствовать в команде BREAK). Это предотвращает бессмысленные
прерывания в вашем отчете.
Для вышеприведенной команды BREAK, следующая команда SELECT
получит следующие (осмысленные) результаты:
SQL> SELECT DEPTNO, JOB, SAL, ENAME
2 FROM EMP
3 ORDER BY DEPTNO, JOB, SAL, ENAME;
Все записи с одинаковым DEPTNO напечатаются вместе на одной странице, и
на этой странице все записи с одинаковым JOB напечатаются в одной
группе. Внутри каждой группы профессий (job), работники с одинаковым
окладом (SAL) объединяются в группы. Прерывание в колонке ENAME не
приводит ни к каким действиям, т.к. эта колонка не задана в команде
BREAK.
ON expr [действие [действие]]
которые необходимо произвести при изменении значения выражения. Если
вы не задали действие, "BREAK ON expr" запретит вывод дублированных
значений expr и пометит место в отчете, где SQL*PLUS произведет заданные
вами вычисления в соответсвующей команде COMPUTE.
Вы можете использовать в выражении одну или несколько колонок таблицы
или алиас, присвоенный для колонки в команде SELECT или в команде COLUMN.
Если вы используете выражение (expr) в команде BREAK, вы должны ввести
данное выражение точно также, как оно задано в команде SELECT. Если
выражение в SELECT равно a+b, например, вы не можете использовать b+a или
(a+b) в команде BREAK для ссылки на данное выражение из команды SELECT.
То, что говорилось выше о "ON колонка", также применимо к "ON expr".
ON ROW [действие [действие]]
Определяются действия для SQL*PLUS, которые надо произвести, когда
команда SQL SELECT возвращает запись. ROW-прерывание становится в конец
иерархии прерываний, независимо от того, где фраза ON ROW задана в команде
BREAK. Вы должны всегда задавать действие при использовании данного
прерывания.
-- 75 --
ON REPORT Отмечает место в отчете, где SQL*PLUS произведет вычисления
определенные вами в соответсвующей команде COMPUTE. Используйте BREAK ON
REPORT совместно с COMPUTE для печати общих сумм.
REPORT-прерывание становится в вершину иерархии прерываний, независимо от
того, где вы его указали в команде BREAK.
Далее рассмотрим список возможных действий:
SKI[P] n Пропускает n строк перед выводом записи при возникновении
прерывания.
[SKI[P]] PAGE Переходит к новой странице перед выводом записи при
возникновении прерывания.
NODUP[LICATES] Печатает пробелы вместо значения колонки прерывания, когда
значение колонки равно значению колонки из предыдущей
записи.
DUP[LICATES] Печатает значение колонки прерывания для каждой выбранной
записи.
Для печати текущих описаний прерываний необходимо просто ввести BREAK без
параметров.
Рекомендации Каждая новая команда BREAK, которую вы введете, заменяет
предшествующую.
Примеры Для получения отчета, который выводит дублированые значения
профессий (job), выводит средний оклад (SAL) и вставляет пустую
строку, когда изменяется значение JOB, и дополнительно печатает сумму
окладов и вставляет еще одну пустую строку, когда изменяется значение
DEPTNO, вы можете ввести следующие команды. (В примере выбираются
только отделы 10 и 30 и профессии клерк и продавец).
SQL> BREAK ON DEPTNO SKIP 1 ON JOB SKIP 1
DUPLICATES
SQL> COMPUTE SUM OF SAL ON DEPTNO
SQL> COMPUTE AVG OF SAL ON JOB
SQL> SELECT DEPTNO, JOB, ENAME, SAL FROM EMP
2 WHERE JOB IN ('CLERK','SALESMAN')
3 AND DEPTNO IN (10,30)
4 ORDER BY DEPTNO, JOB;
И получим следующее:
DEPTNO JOB ENAME SAL
---------- ---------- ---------- ----------
10 CLERK MILLER 1300
********** ----------
avg 1300
********** ----------
sum 1300
30 CLERK JAMES 1045
********** ----------
avg 1045
-- 76 --
SALESMAN ALLEN 1760
SALESMAN MARTIN 1375
SALESMAN TURNER 1650
SALESMAN WARD 1375
********** ----------
avg 1540
********** ----------
sum 7205
-- 77 --
BTITLE
Цель Размещает и форматирует заданные заголовки в конце каждой
страницы отчета, или показывает текущие определения BTITLE.
Замечание: Описание старого формата BTITLE смотри в
приложении F (старый формат BTITLE).
Синтаксис BTI[TLE] [printspec [текст | переменная] ...] | [OFF | ON]
Термины и Фразы Смотри описание команды TTITLE.
Рекомендации SQL*PLUS определяет новый формат BTITLE, если правильная
спецификация формата (printspec) следует непосредственно за
именем команды (LEFT,SKIP,COL, и т.д.).
За информацией о печати номеров страниц в заголовках
обращайтесь к описанию команды TTITLE.
Примеры Чтобы установить нижний заголовок "CORPORATE PLANING
DEPARTMENT" выравненым влево и дату справа, введите:
SQL> BTITLE LEFT 'CORPORATE PLANING DEPARTMENT' -
> RIGHT '11 MAR 1988'
Чтобы установить нижний заголовок "CONFIDENTIAL" в колонке 50
и дату через 6 пробелов, введите:
SQL> BTITLE COL 50 'CONFIDENTIAL' TAB 6 '11 MAR
88'
-- 78 --
CHANGE Цель Изменяет текст текущей буферной строки.
Синтаксис C[HANGE] sepchar старое [sepchar [новое [sepchar]]]
Термины и Фразы sepchar
Представляет любой неалфавитно-цифровой символ такой как "/" или "!".
Используйте символ разделитель, который не появляется ни в старом ни в новом
тексте. Можно опускать пробел между CHANGE и первым sepchar.
старый Текст, который вы хотите изменить. CHANGE не различает регистр
при поиске указанного текста. Например:
CHANGE /aq/aw
найдет первое появление "aq", "AQ", "aQ", "Aq" и заменит его на
"aw". SQL*PLUS вставит текст таким, каким вы его задали в
команде.
Если старому тексту предшествует "...", то команда CHANGE
заменит весь текст от начала строки до искомого текста
(включая сам текст). Если "..." стоят после старого текста,
то CHANGE заменит весь текст до конца строки. Если "..."
является вложенным, то CHANGE изменяет часть строки между
первой частью и второй часть параметра "старый".
новый Текст заменяющий "старый" текст. Если вы опустите этот параметр
и второй и третий разделители, CHANGE удалит старый текст из
текущей буферной строки.
Рекомендации
CHANGE заменяет заданный вами текст на новый в текущей буферной строке.
При выводе команды на экран текущая строка помечается звездочкой (*).
Вы также можете использовать CHANGE для изменения строки, котрая привела к
ORACLE-ошибке. SQL*PLUS устанавливает указатель текущей строки на строку,
содержащую ошибку, поэтому вы можете проводить изменения.
Чтобы ввести строку заново, вы можете ввести номер строки а за ним набрать
новый текст. Если вы указали номер больше, чем количество строк в буфере, то
SQL*PLUS добавит новый текст в конец буфера. Если вы указали номер строк рав-
ным нулю, то текст добавится в начало буфера (данная строка получит номер
1). Примеры Допустим, что текущая буферная строка содержит следующий текст:
4* WHERE JOB IN
('CLERK','SECRETARY','RECEPTIONIST')
Введите следующую команду:
SQL> C /RECEPTIONIST/GUARD/
Строка изменится следующим образом:
4* WHERE JOB IN ('CLERK','SECRETARY','GUARD')
Или введите следующую команду:
SQL> C /'CLERK',.../'CLERK')/
-- 79 --
Строка изменится следующим образом:
4* WHERE JOB IN ('CLERK')
Или введите следующую команду:
SQL> C /(...)/('COOK','BULTER')/
Строка изменится следующим образом:
4* WHERE JOB IN ('COOK','BULTER')
Вы можете замещать содержимое любой строки, используя номер строки.
данный ввод
SQL> 2 FROM EMP e1
означает, что вторая буферная строка замещается новым значением:
FROM EMP e1
Замечание Ввод номера строки и последующего текста, будет замещать всю
строку несмотря на то, какой текст вы задали. Таким образом,
SQL> 2 c/old/new
изменит вторую буферную строку таким образом:
SQL> c/old/new
-- 80 --
CLEAR Цель Сбрасывает или очищает текущее значение или
установку указанных параметров.
Синтаксис CL[EAR] опция
где опция представляет одну из следующих фраз:
BRE[AKS]
BUFF[ER]
COL[UMNS]
COMP[UTES]
SCR[EEN]
SQL
TIMI[NG]
Термины и Фразы BRE[AKS] Удаление описания прерывания, которое
установлено командой BREAK.
BUFF[ER] Очиска буфера. CLEAR BUFFER аналогична CLEAR SQL, если вы не
используете несколько буферов (см SET BUFFER в приложении F).
COL[UMNS] Сбрасывает атрибуты вывода всех колонок, установленные
командой COLUMN, к их установкам по умолчанию. Для сброса
атрибутов вывода одной колонки, используйте фразу CLEAR
команды COLUMN
COMP[UTES] Удаляет все описания COMPUTE установленные командой COMPUTE.
SCR[EEN] Очистка экрана.
SQL Очистка буфера SQL. CLEAR SQL аналогична CLEAR BUFFER, если вы
не используете несколько буферов (см SET BUFFER в приложении F).
TIMI[NG] Удаление всех областей хронометрирования, созданных командой
TIMING.
Примеры Чтобы очистить все прерывания, введите:
SQL> CLEAR BREAKS
Чтобы сбросить все описания колонок, введите:
SQL> CLEAR COLUMNS
-- 81 --
COLUMN
Цель Определяет атрибуты вывода для всех указанных колонок, такие как:
* текст для заголовка колонки
* выравнивание заголовка колонки
* формат для данных NUMBER
* свертка данных колонки при выводе
Также показывает текущие атрибуты вывода для одной или всех
колонок.
Синтаксис COL[UMN] [{колонка|expr} [опция ...]]
где опция является одной из следующих фраз:
ALI[AS] алиас
CLE[AR] | DEF[AULT]
COLOR {color | color_переменная}
FOLD_A[FTER] n
FOLD_B[EFORE] n
FOR[MAT] формат
HEA[DING] текст
JUS[TIFY] {L[EFT] | C[ENTER] | C[ENTRE] | R[IGHT]]
LIKE {expr | алиас}
LINEAPP {LIKE | MARK | BOTH}
NEWL[INE]
NEW_V[ALUE] переменная
NOPRI[NT] | PRI[NT]
NUL[L] символ
OLD_V[ALUE] переменная
ON | OFF
PATTERN {pattern_number | pattern_переменная}
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
Термины и Фразы Для показа текущих атрибутов вывода только для одной
заданной колонки или выражения введите COLUMN с именем колонки
или выражения. Чтобы отобразить атрибуты вывода для всех
колонок, введите COLUMN без параметров.
Рассмотрим следующий перечень описаний терминов
или фраз:
{колонка | expr} Идентифицирует элемент данных (обычно, имя
колонки) из команды SQL SELECT, на который
ссылается команда COLUMN. Если вы используете
выражение (expr) в команде COLUMN, вам
необходимо его задавать в таком же виде, в
каком оно задается в команде SELECT. Если
выражение в команде SELECT равно a+b, например,
вы не можете использовать b+a или (a+b) в
команде COLUMN для ссылки на выражение из
команды SELECT.
Если вы выбираете колонки с
одинаковыми именами из разных
таблиц, команда COLUMN воздействует
-- 82 --
на оба этих столбца. А именно,
команда COLUMN для колонки ENAME
воздействует на все колонки с
именами ENAME, на которые вы
ссылаетесь в течение данного
сеанса. COLUMN игнорирует
предшествующее имя таблицы в
команде SELECT.
Чтобы отформатировать колонки
поразному, присвойте уникальный
алиас каждой колонке внутри команды
SELECT (не используйте фразу ALIAS
команды COLUMN) и введите команду
COLUMN для каждого алиаса.
ALI[AS] алиас Присваивает указанный алиас колонке, который
можно использовать для ссылки на колонку в
командах BREAK,COMPUTE,COLUMN.
CLE[AR] Сбрасывает атрибуты вывода колонки к их
значениям по умолчанию.
COLOR {color | color_переменная} Описывается в "SQL*graph
User's Guide".
FOLD_A[FTER] n Вставляет возврат каретки после каждого
заголовка колонки и после каждой записи в
колонке. Вы должны ввести n; значение n не
влияет на формат.
FOLD_B[EFORE] n Вставляет возврат каретки до каждого
заголовка колонки и до каждой записи в
колонке.Вы должны ввести n; значение n не
влияет на формат. FOLD_BEFORE n имеет такой же
эффект, как и NEWLINE.
FOR[MAT] формат Назначает формат вывода для указанной
колонки. Спецификация формата д.б. текстовой
константой (такой как A10 или $9,999), но не
переменной.
По умолчанию ширина CHAR-колонки
является такой, как она определена
в БД или равна длине заголовка
колонки (выбирается максимальное).
По умолчанию ширина LONG-колонки
равна значению переменной SET LONG.
Чтобы изменить ширину CHAR или LONG
колонок, используйте FORMAT An.
Если вы указали ширину меньшую чем
заголовок, то SQL*PLUS обрежет
заголовок.
-- 83 --
SQL*PLUS форматирует CHAR-данные
выравнивая их влево. Если значение
не помещается в отведенную для него
ширину, то SQL*PLUS сворачивает или
усекает строку символов, в
зависимости от установки SET WRAP.
По умолчанию ширина
неотфоматированных DATE-колонок в
SQL есть A9. Чтобы изменить формат
DATE-колонки, используйте
SQL-функцию TO_CHAR в вашей
SQL-команде SELECT.
Когда вы используете TO_CHAR,
ORACLE автоматически позвляет
делать очень широкую колонку, так
как SQL*PLUS автоматически ширину
колонки равной 80 символов. Затем
вы должны использовать команду
SQL*PLUS COLUMN для восстановления
ширины колонки. Чтобы изменить
ширину DATE-колонки в n,
используйте FORMAT An. Если вы
указали ширину меньшую чем
заголовок, то SQL*PLUS обрежет
заголовок. Подробнее о функции
TO_CHAR смотри в "SQL Language
User's Guide" и "SQL Language
Reference Manual".
Замечание: Другие SQL-вычисления
могут привести к подобным эфектам;
в таком случае используйте SQL*PLUS
команду COLUMN для сброса ширины
колонки.
Ширина NUMBER-колонки по умолчанию
равна значениию SET NUMWIDTH. Чтобы
изменить ширину, используйте FORMAT
с параметром как показано в таблице
6-1 на следующей странице.
Таблица 6-1 Параметр Пример Описание
Числовые форматы
----------------------------------------------------------Д
9 9999 Задает ширину вывода посредством
количества введенных цифр.
0 0999 Вывод ведущих нулей.
9990 Вывод нуля вместо пробела, когда значение
равно нулю.
$ $9999 Перед числом выводится знак доллара.
B B9999 Показ нулевого значения пробелом.
MI 9999MI Вывод "-" после отридцательного числа.
-- 84 --
PR 9999PR Вывод отридцательного числа в угловых
скобках
запятая 9,999 Вывод запятой в указанной позиции. точка
99.99 Выравнивание по указанной десятичной точке.
V 999V99 Умножает число на 10n, где n- это
количество "9" после "V".
EEEE 9.999EEEE Вывод в экспоненциальном формате (формат
должен содержать четыре "E")
DATE DATE Выводит число как дату в формате MM/DD/YY;
используйте данный формат для
NUMBER-колонок, хранящих Юлианские даты.
SQL*PLUS форматирует NUMBER-данные выравнивая их вправо. Ширина поля
выбирается равной или ширине заголовка или длине формата плюс один
пробел для знака (выбирается большее). SQL*PLUS никогда не обрезает
заголовок NUMBER-колонки. Если ширины, отведенной для колонки, не
хватает для вывода числа, то SQL*PLUS выводит звездочки (*), оповещая
нас о переполнении.
Для всех числовых форматов SQL*PLUS округляет числа до указанного
количества значащих цифр. Когда формат не задан, по умолчанию ширина
числовых данных берется из переменной NUMWIDTH (см команду SET в данной
главе).
HEA[DING] текст Определяет заголовок колонки. Если вы не используете
фразу HEADING, заголовком колонки по умолчанию является
имя колонки или выражения. Если текст содержит пробелы или
знаки пунктуации, вы должны заключить его в одиночные или
двойные кавычки. Каждый символ HEADSEP (по умолчанию '|')
начинает новую строку. Например,
COLUMN ENAME HEADING 'Employee|Name'
Задает двух-строковый заголовок. Смотри
переменная HEADSEP команды SET в данной
главе.
JUS[TIFY] {L[EFT] | C[ENTER] | C[ENTRE] | R[IGHT]}
Выравнивает заголовок. Если вы не используете фразу
JUSTIFY, NUMBER-колонки выравниваются вправо, а другие-
влево.
LIKE {expr | алиас} Копирует атрибуты вывода другой колонки или выражения
(атрибуты которой уже заданы другой командой COLUMN). LIKE
копирует только те атрибуты, которые не заданы в текущей
команде COLUMN.
LINEAPP {LINE | MARK | BOTH}
Описывается в "SQL*Graph User's Guide".
NEWL[INE] Вывод значения колонки начинает с новой строки. NEWLINE
имеет такой же эффект, что и FOLD_BEFORE n.
-- 85 --
NEW_V[ALUE] переменная Определяет переменную, в которую помещается значение
колонки. Вы можете ссылаться на эту переменную в команде
TTITLE. Используйте NEW_VALUE для вывода значения колонки
или даты в верхнем заголовке. Вы должны включить данную
колонку в BREAK-команду с действием SKIP PAGE.
NEW_VALUE полезна при получении основных/детальных
отчетов, в которых существует новая главная запись для
каждой страницы. Для основных/детальных отчетов вы должны
также включить данную колонку во фразу ORDER BY. Смотрите
пример в конце описания данной команды.
NOPRI[NT] | PRI[NT] Управляет печатью колонки (заголовка и всех выбранных
значений). NOPRINT выключает печать колонки.
PRINT включает печать колонки.
NUL[L] символ Управляет выводом текста для пустых значений колонок.
Если вы не используете фразу NULL в команде COLUMN,
SQL*PLUS выводит пробелы- или текст, который вы задали для
NULL, используя команду SET- там, где встречается пустые
значения для данной колонки. (SET NULL задает текст,
выводимый для всех пустых значений всех колонок, если это
не отменено для конкретной колонки фразой NULL команды
COLUMN.)
OLD_V[ALUE] переменная Определяет переменную, в которую помещается значение
колонки. Вы можете ссылаться на эту переменную в команде
BTITLE. Используйте OLD_VALUE для вывода значения колонки
или даты в нижнем заголовке. Вы должны включить данную
колонку в BREAK-команду с действием SKIP PAGE.
OLD_VALUE полезна при получении основных/детальных
отчетов, в которых существует новая главная запись для
каждой страницы. Для основных/детальных отчетов вы должны
также включить данную колонку во фразу ORDER BY.
Подробнее о выводе значений колонки в верхний заголовок
смотри COLUMN NEW_VALUE. В описании TTITLE смотри о том
как надо ссылаться на переменные в заголовках. ON | OFF
Управляет состоянием атрибутов вывода для колонки. OFF
отключает атрибуты для колоки, но не влияет на описание
атрибутов. ON восстанавли- вает атрибуты в прежнее
положение. PATTERN {pattern_number | pattern_variable}
Описывается в SQL*Graph User's Guide
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
Определяет, как SQL*PLUS будет обращаться с CHAR-строками,
которые слишком широки для колонки. WRAPPED сворачивает
конец строки на следующую линию. WORD_WRAPPED функция
аналогична WRAPPED, но при свертке слова переносятся на
другую строку полностью. TRUNCATED при выводе обрезает
конец строки.
Рекомендации Вы можете вводить любое количество команд COLUMN для одной или
нескольких колонок. Все установленные атрибуты колонок действют до конца
сеанса, или пока вы не отключите атрибуты фразой OFF. Таким образом, команды
COLUMN, которые вы ввели, управляют атрибутами колонок для множества команд
SELECT. Для различных колонок эта команда может быть введена любое число
раз. Также, любое число команд COLUMN может быть введено для одной и той же
-- 86 --
колонки, и их фразы будут применены совместно. Если эти несколько команд
COLUMN применяют одну и ту же фразу для той же колонки, управление
осуществляется с помощью последней.
Примеры Чтобы сделать колонку ENAME шириной в 20 символов и двух-строчный
заголовок EMPLOEYY NAME, введите:
SQL> COLUMN ENAME FORMAT A20 HEADING 'EMPLOYEE |NAME'
Чтобы отформатировать колонку SAL таким образом, что она выводила
миллионы долларов, округлялась до центов, использовала запятую для
разделения тысяч, и выводила $0.00, когда число равно нулю, вы должны
ввести:
SQL> COLUMN SAL FORMAT $9,999,990.99
Чтобы присвоить алиас NET колонке содержащей длинное выражение,
вывести результат в формате долларов, и вывести для пустых
значений, вы можете ввести:
SQL> COLUMN SAL+COMM+BONUS-EXPENSES-INS-TAX ALIAS NET
SQL> COLUMN NET FORMAT $9,999,999.99 NULL ''
Заметим, что в данном примере спецификация колонки разделена на две
команды. Первая определяет алиас NET, а вторая использует NET для
задания формата. Также заметим, что в первой команде вы должны задать
выражение точно так же, как вы будете использовать его в командах
SELECT. Иначе, SQL*PLUS не найдет описание данной колонки.
Чтобы 'свернуть' длинное значение в колонке REMARKS, вы
можете ввести:
SQL> COLUMN REMARKS FORMAT A20 WRAP
Например:
CUSTOMER DATE QUANTITY REMARKS
---------- --------- ----------------------------
123 25-AUG-86 144 This order must be s hipped by air
freigh t to ORD.
Если вы замените WRAP на WORD_WRAP, REMARKS будет выглядеть
следующим образом:
CUSTOMER DATE QUANTITY REMARKS
---------- --------- --------- --------------------
123 25-AUG-86 144 This order must be shipped by air
freight to ORD.
Если вы укажите TRUNCATE, REMARKS будет выглядеть следующим образом:
CUSTOMER DATE QUANTITY REMARKS
---------- --------- --------- --------------------
123 25-AUG-86 144 This order must be s
-- 87 --
Для того, чтобы распечатать текущую дату и наименование каждой
профессии в верхнем заголовке, введите следующее. (Вопрос создания
переменной с текущей датой в вашем LOGIN файле рассматривался в "Вывод
текущей даты в заголовках" темы "Определение заголовков и размерностей
страниц" в главе 4.)
SQL> COLUMN JOB NOPRINT NEW_VALUE JOBVAR
SQL> COLUMN TODAY NOPRINT NEW_VALUE DATEVAR
SQL> BREAK ON JOB SKIP PAGE ON TODAY
SQL> TTITLE CENTER 'Job Report' RIGHT DATEVAR SKIP
2 -
> LEFT 'Job: ' JOBVAR SKIP 2
SQL> SELECT TO_CHAR(SYSDATE, 'MM/DD/YY') TODAY/
2 ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO
3 FROM EMP WHERE JOB IN ('CLERK','SALESMAN')
4 ORDER BY JOB, ENAME;
Ваш 2-страничный отчет будет выглядеть подобно следующему
отчету: Job Report 05/01/88 Job: CLERK
ENAME MGR HIREDATE SAL DEPTNO
--------- --------- --------- ---------- ---------
ADAMS 7788 14-JAN-87 1100 20
JAMES 7698 03-DEC-81 950 30
MILLER 7782 23-JAN-82 1300 10
SMITH 7902 17-DEC-80 900 20
Job Report 05/01/88 Job: SALESMAN
ENAME MGR HIREDATE SAL DEPTNO
--------- --------- --------- ---------- ---------
ALLEN 7698 20-FEB-81 1600 30
MARTIN 7698 28-SEP-81 1250 30
TURNER 7698 08-SEP-81 1500 30
WARD 7698 22-FEB-81 1250 30
-- 88 --
COMPUTE
Цель Вычисляет и печатает итоги, используя стандартные вычисления
над подмножеством выбранных записей. Или, показывает все
определения COMPUTE.
Синтаксис COMP[UTE] [функция ...
OF {expr | колонка | алиас} ...
ON {expr | колонка | алиас | REPORT | ROW}]
Термины и Фразы функция ... Одна из функций таблицы 6-2:
Таблица 6-2 Функция Операция Тип параметра
COMPUTE функции
------------------------------------------------------------
AVG Среднее ненулевых значений NUMBER
COU[NT] Счетчик ненулевых значений все типы
MAX[IMUM] Максимальное значение NUMBER,CHAR
MIN[IMUM] Минимальное значение NUMBER,CHAR
NUM[BER] Счетчик записей все типы
STD Среднеквадратичное отклонение NUMBER ненулевых
значений
SUM Сумма ненулевых значений NUMBER
VAR[IANSE] Дисперсия ненулевых значений NUMBER
Если вы укажите больше одной функции, разделите
их пробелами.
OF {expr | колонка | алиас} ...
Определяет колонку или выражение, которое вы хотите использовать при
вычислениях. Вы должны также задать данную колонку в команде SELECT, иначе
SQL*PLUS проигнорирует вашу команду COMPUTE.
Если вы не хотите, чтобы вычисляемое значение для указанной колонки
появлялось на экране, подавите эту печать фразой NOPRINT команды COLUMN.
Используйте пробелы для разделения нескольких выражений, колонок или алиасов
внутри фразы OF.
Чтобы сослаться в SELECT на выражение или функцию из фразы OF, заключите
ссылку на выражение или функцию в кавычки. Имя колонки или алиаса заключать в
кавычки не надо.
ON {expr | колонка | алиас | REPORT | ROW}
Определяет событие, которое SQL*PLUS будет использовать как прерывание.
COMPUTE выводит вычисляемое значение и начинает повторное вычисление, когда
происходит данное событие (также, когда изменяется значение выражения, после
выборки новой записи, или заканчивается отчет).
Если несколько команд COMPUTE ссылаются на одну и ту же колонку во фразе
ON, то действует только последняя команда COMPUTE.
-- 89 --
Чтобы сослаться в SELECT на выражение или функцию из фразы ON, заключите
ссылку на выражение или функцию в кавычки. Имя колонки или алиаса заключать в
кавычки не надо.
Чтобы вывести все описания COMPUTE, введите COMPUTE без параметров.
Рекомендации Для проведения вычислений необходимо, чтобы выполнялись
следующие условия:
* Выражение, колонка, или алиас колонки, на который вы
ссылаетесь во фразе ON, должны быть заданы в команде SELECT.
* Выражение, колонка, или алиас колонки, на который вы ссылае-
тесь во фразе ON, должны быть заданы в последней команде BREAK.
* Если вы задаетет ROW или REPORT во фразе ON, также
необходимо задать ROW или REPORT в последней команде BREAK.
* Одно или более выражений, колонок, или алиасов колонок, кото-
рые вы задаете во фразе OF, необходимо задать в команде
SELECT.
Примеры Чтобы вычислить промежуточные суммы окладов для профессий
"clerk","analyst","salesman", введите:
SQL> BREAK ON JOB SKIP 1
SQL> COMPUTE SUM OF SAL ON JOB
SQL> SELECT JOB, ENAME, SAL
2 FROM EMP
3 WHERE JOB IN ('CLERK','ANALYST','SALESMA')
4 OREDER BY JOB, SAL;
Вы получите следующие резыльтаты:
JOB EMANE SAL
--------- ---------- ----------
ANALYST SCOTT 3000
FORD 3000
********* ----------
sum 6000
CLERK SMITH 800
JAMES 950
ADAMS 1100
MILLER 1300
********* ----------
sum 4150
SALESMAN WARD 1250
MARTIN 1250
TURNER 1500
ALLEN 1600
WILSON 3000
********* ----------
sum 8600
Чтобы вычислить средний и максимальный оклады в отделах
продавцов, введите:
-- 90 --
SQL> BREAK ON DNAME SKIP 1
SQL> COMPUTE AVG MAX OF SAL ON DNAME
SQL> SELECT DNAME, ENAME, SAL
2 FROM DEPT, EMP
3 WHERE DEPT.DEPTNO=EMP.DEPTNO
4 AND DNAME IN ('ACCOUNTING','SALESMAN')
5 ORDER BY DNAME;
Вы получите следующие резыльтаты:
DNAME ENAME SAL
--------------- ----------- -----------
ACCONTING CLARK 2450
KING 5000
MILLER 1300
*************** -----------
avg 2916.66667
maximum 5000
SALESMAN ALLEN 1600
WARD 1250
MARTIN 1250
TURNER 1500
JAMES 950
BLAKE 2850
*************** -----------
avg 1566.66667
maximum 2850
-- 91 --
CONNECT Цель Подключает указанного пользователя к ORACLE.
Синтаксис CONN[ECT] [logon]
где:
logon Указывается в следующем формате:
username[/пароль][@database_specification] | /
Термины и Фразы username[/пароль] Задает имя и пароль пользователя, с
которыми вы хотите подключиться к ORACLE. Если вы опустили
username и пароль, SQL*PLUS выдаст подсказку для их ввода. Если
вы ввели наклонную черту (/) или просто ввели [Return] в ответ
на подсказку для ввода username, SQL*PLUS залогируется,
используя значения по умолчанию (см "/" ниже).
Если вы опустили только пароль, SQL*PLUS выдаст подсказку для
ввода пароля. Во время ввода пароля после подсказки, SQL*PLUS
не выводит его на экран.
Представляет умалчиваемый (ops$) вход в систему. Вы не можете
вводить database_specification, если вы используете вход в
систему по умолчанию. При входе в систему по умолчанию,
SQL*PLUS пытается залогироваться, используя имя пользователя
OPS$name, где name- это ваше имя пользователя в опрационной
системе.
database_specification
Ссотоит из SQL*NET-строки подключения. Ее синтаксис зависит от
вашего SQL*NET протокола. За информацией смотрите соответству-
ющее руководство по SQL*NET или обратитесь к АБД (администратор
БД). SQL*PLUS не выдает подсказки для ввода спецификации БД, но
он использует вашу БД по умолчанию, если вы не задали данный
параметр.
Рекомендации CONNECT записывает произведенные изменения в базу данных
(завершает текущую транзакцию), заканчивает сеанс вашей работы с
ORACLE и вновь выполняет регистрацию с указанным именем пользователя.
Примеры Чтобы зарегистрироваться с именем SCOTT с паролем TIGER к БД по
умолчанию к DECnet-узлу "corp", введите:
SQL> CONNECT SCOTT/TIGER@d:corp
Чтобы зарегистрироваться с именем SCOTT с последующим запросом
пароля, введите:
SQL> CONNECT SCOTT
-- 92 --
COPY Цель Копирует данные из запроса в таблицу локальной или
удаленной БД.
Синтаксис COPY [FROM username[/пароль][@database_specification] |
TO username[/пароль][@database_specification]]
{APPEND | CREATE | INSERT | REPLACE} целевая_таблица
[(колонка, колонка, колонка ...)] USING запрос
Термины и Фразы username[/пароль]
Задает имя и пароль пользователя с которым идет обмен
информацией. Фраза FROM определяет источник информации; фраза
TO определяет адресата. Если вы не укажите пароль в FROM или
TO, SQL*PLUS потребует их ввести. SQL*PLUS подавляет вывод
вводимого пароля.
database_specification
Состоит из имени связи с БД или SQL*NET-строки подключения. Во
фразе FROM данный параметр задает БД источник; Во фразе TO
данный параметр задает БД адресат. Синтаксис параметра
зависит от вашего SQL*NET-протокола связи. Для дополнительной
информации об SQL*NET "Руководство пользователя SQL*NET" или
обратитесь к ДБА. SQL*PLUS не выдает подсказки для ввода
спецификации БД, но он использует вашу БД по умолчанию, если
вы не задали данный параметр.
целевая_таблица Задает таблицу, которую вы хотите создать или в которую
вы хотите добавить данные.
(колонка, колонка, колонка ...)
Задает имена колонок в целевой таблице. Вы должны заключать
имена в двойные кавычки, если они содержат символы нижнего
регистра или пробелы.
Если вы задали колонки, то номера колонок должны
соответсвовать номерам выбираемого запроса. Если вы не задали
колонки, то копируемые колонки получат те же имена, что и в
таблице-источнике, если COPY создает таблицу-адресат.
USING запрос Задает SQL-запрос (команда SELECT) в котором определяются
копируемые записи и колонки.
FROM username[/пароль][@database_specification]
Задает имя, пароль, БД, которые содержат копируемые данные.
Если вы опустили фразу FROM, по умолчанию источником является
БД, к которой подключен SQL*PLUS (т.е., БД к которой
адресуются все команды). Если вы желаете копировать из другой
БД, вы должны обязательно задавать фразу FROM.
TO username[/пароль][@database_specification]
Задает БД содержащую таблицу-адресат. Если вы опустили фразу
TO, то по умолчанию подразумевается БД, к которой подключен
SQL*PLUS (т.е. БД, к которой адресуются все команды). Если вы
желаете копировать в другую БД, вы должны обязательно задавать
фразу TO.
APPEND Вставляет строки из запроса в таблицу-адресат, если она сущест
вует. Если таблица-адресат не существует, COPY создает ее.
-- 93 --
CREATE Вставляет строки из запроса в таблицу-адресат после того, как
она будет создана. Если таблица-адресат уже существует, будет
получена ошибка.
INSERT Вставляет строки из запроса в таблицу-адресат, если она сущест-
вует. Если таблица-адресат не существует, будет получена ошибка.
REPLACE Замещает данные в таблице-адресате и вставляет строки из
запроса в таблицу-адресат, если она существует. Если
таблица-адресат не существует, COPY создаст ее.
Рекомендации Переменная LONG команды SET ограничивает длину копируемых
LONG-колонок. Если некоторые LONG-колонки содержат данные
длиннее, чем значение переменной LONG, COPY обрежет эти
данные.
SQL*PLUS вносит изменения в БД после каждого успешного
копирования. Если вы присвоили переменной COPYCOMMIT
положительное значение n (больше чем 0), изменения вносятся
каждый раз после копирования n пакетов записей. (Размер пакета
определяется системной переменной ARRAYSIZE).
Примеры Следующая команда копирует таблицу EMP из БД HQ в таблицу с
именем WESTEMP в БД WEST. Если WESTEMP уже существует,
SQL*PLUS заменит ее содержимое. Колонки таблиц EMP и WESTEMP
имеют одинаковые имена.
SQL> COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
-
> REPLACE WESTEMP -
> USING SELECT * FROM EMP
Следующая команда копирует выбранные записи из таблицы EMP
базы данных HQ в БД, к которой подключен SQL*PLUS. SQL*PLUS
создает SALESMAN при копировании. SQL*PLUS копирует только
колонки EMPNO и ENAME, и данные колонки получат имена EMPNO и
SALESMAN.
SQL> COPY FROM SCOTT/TIGER@HQ -
> CREATE SALESMAN (EMPNO,SALESMAN) -
> USING SELECT EMPNO, ENAME FROM EMP -
> WHERE JOB='SALESMAN'
-- 94 --
DEFINE
Цель Определяет переменную пользователя и присваивает ей
CHAR-значение. Или, показывает значение и тип одной или всех
переменных.
Синтаксис DEF[INE] [переменная] | [переменная = текст]
Термины и Фразы переменная Задает пользовательскую переменную, чье
значение вы хотите посмотреть или определить.
текст Задает символьное значение, присваиваемое
переменной. Если текст содержит пробелы или
знаки пунктуации, заключите его в одиночные
кавычки.
переменная = текст Определяет переменную пользователя и
присваивает ей символьное значение.
Чтобы посмотреть значение и тип переменной, введите DEFINE и
имя переменной. Чтобы посмотреть значение и тип всех
переменных, введите DEFINE без параметров.
Рекомендации DEFINE-переменные сохраняют свои значения, пока не произойдет
одно из следующих событий:
* вы ввели новую команду DEFINE для данной переменной
* вы ввели команду UNDEFINE для данной переменной
* вы ввели команду ACCEPT для данной переменной
* вы задали данную переменную во фразе NEW_VALUE или OLD_VALUE команды
COLUMN и использовали колонку в команде SELECT.
* вы вышли из SQL*PLUS
Всякий раз, когда вы выполняете сохраненный запрос или командный файл,
SQL*PLUS подставляет значение переменной для каждой подстановочной
переменной, ссылающейся на данныю переменную (в форме &переменная или
&&переменная). Вы не получите подсказку на ввод такой переменной в
данном сеансе, пока вы не уничтожите ее командой UNDEFINE.
Максимальное число переменных, определенных командами DEFINE, равно 240.
Заметим, что вы можете использовать DEFINE для определения переменной
_EDITOR, которая задает имя системного редактора, запускаемого по
команде EDIT.
Если вы размещаете значение переменной, определяемой DEFINE, на
нескольких строках (используя команду SQL*PLUS символ продолжения),
SQL*PLUS заменит каждый символ продолжения и возврата каретки на пробел
в итоговой переменной. Например, SQL*PLUS поймет данную команду:
SQL> DEFINE TEXT = 'ONE-
> TWO-
> THREE'
как:
SQL> DEFINE TEXT = 'ONE TWO THREE'
Примеры Чтобы присвоить значение MANAGER переменной POS, введите:
-- 95 --
SQL> DEFINE POS = MANAGER
Если вы выполните команду, которая содержит ссылку на &POS,
SQL*PLUS подставит значение MANAGER вместо &POS и вы не получите
подсказки на ввод значения POS.
Чтобы присвоить символьное значение 20 переменной DEPTNO, введите:
SQL> DEFINE DEPTNO = 20
Хотя вы задали 20, SQL*PLUS присвоит символьное значение DEPTNO,
состоящее из двух знаков 2 и 0.
Для показа описания DEPTNO, введите:
SQL> DEFINE DEPTNO
DEFINE DEPTNO = "20" (CHAR)
-- 96 --
DEL Цель Удаляет текущую буфферную строку.
Синтаксис DEL
Рекомендации Текущей становится следующая строка. Для удаления нескольких
последовательных строк, введите DEL несколько раз.
Примеры Предположим, буффер SQL содержит следующий запрос:
1 SELECT ENAME, DEPTNO
2 FROM EMP
3 WHERE JOB = 'SALESMAN'
4* ORDER BY DEPTNO
Чтобы сделать строку с WHERE текущей, вы должны ввести:
SQL> LIST 3
3* WHERE JOB = 'SALESMAN'
Чтобы удалить фразу WHERE, введите:
SQL> DEL
Сейчас буффер SQL содержит следующие строки:
1 SELECT ENAME, DEPTNO
2 FROM EMP
3* ORDER BY DEPTNO
-- 97 --
DESCRIBE
Цель Показывает описания колонок для указанной таблицы, обзора
(view), или синонима.
Синтаксис DESC[RIBE] [user.]объект[@database_link_name]
Термины и Фразы user Задает пользователя, который владеет объектом.
Если user опущен, SQL предполагает, что вы владелец
данного объекта. объект Задает таблицу, обзор,
или синоним, чье описание вы хотите вывести.
database_link_name
Состоит из имени связи БД, где существует данный
объект. За информацией о связях с БД обращайтесь к
"Руководство пользователя по языку SQL" и
"Справочное руководство по языку SQL".
Рекомендации Для каждого столбца описание содержит:
* имя колонки
* разрешено ли нулевое значение (NULL или NOT NULL)
* тип данных
* точность колонки (и количество знаков после запятой, для
числовых столбцов)
Примеры Чтобы получить описание таблицы EMP, введите:
SQL> DESCRIBE EMP
DESCRIBE покажет следующую информацию:
Name Null? Type
------------------------- -------- ------------
EMPNO NOT NULL
NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
-- 98 --
DISCONNECT
-------- Цель Вносит текущие изменения в базу данных и заканчивает ваш
сеанс работы с ORACLE, но не завершает работы с SQL*PLUS.
Синтаксис DISC[ONNECT]
Рекомендации Используйте DISCONNECT в командном файле, чтобы закрыть
пользователю доступ к БД, когда вы хотите отключить
пользователя от ORACLE, но чтобы пользователь не покидал
SQL*PLUS. Используйте EXIT или QUIT для отключения от ORACLE и
передаче управления операционной системе.
Примеры Ваш командный файл может начинаться командой CONNECT и
заканчиваться командой DISCONNECT, как показано ниже:
SQL> GET MYFILE
1 CONNECT ...
.
.
15* DISCONNECT
-- 99 --
EDIT
Цель Вызывает системный текстовый редактор для редактирования
указанного файла или содержимого буфера.
Синтаксис EDIT [имя_файла[.расширение]]
Термины и Фразы имя_файла[.расширение]
Задает файл, который вы хотите редактировать (обычно командный файл).
Если расширение файла опущено, берется расширение .SQL . За информацией
по изменению расширения по умолчанию смотрите переменную SUFFIX команды
SET в данной главе.
Чтобы откорректировать содержимое SQL буффера системным
текстовым редактором, введите EDIT без имени файла.
Рекомендации
Переменная пользователя _EDITOR содержит имя текстового редактора
вызываемого с помощью команды EDIT. Значение переменной _EDITOR можно
изменять. Информацию по изменеию пользовательских переменных смотри в DEFINE.
Если переменная _EDITOR не задана, EDIT попытается вызвать системный текстовый
редактор по умолчанию.
EDIT помещает содержимое буффера в файл AFIEDT с расширением BUF (в текущий
директорий) и вызывает текстовый редактор для данного файла. EDIT возвращает
сообщение об ошибке, если вы не задали имя файла и буффер пуст.
Примеры Чтобы отредактировать файл REPORT с расширением SQL, используя
текстовый редактор операционной системы, введите:
SQL> EDIT REPORT
-- 100 --
EXIT Цель Вносит все отложенные изменения в БД, завершает
SQL*PLUS, и передает управление операционной системе.
Синтаксис {EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | переменная]
Термины и Фразы {EXIT | QUIT} QUIT- это синоним EXIT.
n Задает целый код возврата.
переменная Задает определенную пользователем или системную переменную,
такую как SQL.SQLCODE. 'EXIT переменная' выходит с кодом
возврата равным значению данной переменной.
SUCCESS Нормальный выход.
FAILURE Выход с кодом возрата указывающем на сбой.
WARNING Выход с кодом возрата указывающем на предупреждение.
EXIT без параметров выходит из SQL*PLUS со значением SUCCESS
Рекомендации
EXIT позволяет вам указать код возврата для операционной системы. Это
позволяет вам выполнять командные файлы SQL*PLUS в пакетном режиме и
реагировать на непредусмотренные события. Способ обнаружения события зависит
от ОС. Смотри руководство по установке ORACLE и руководство пользователя по
вашей операционной системе.
Ключевые слова SUCCESS,FAILURE,WARNING задают значения зависящие от типа ОС. В
некоторых система FAILURE и WARNING могут не различаться.
Замечание: SUCCESS,FAILURE,WARNING не являются зарезервированными словами.
За информацией о выходе по условию обращайся к описанию WHENEVER SQLERROR (это
приводится позднее в данной главе).
Примеры Ниже приводится выход с кодом ошибки последней выполненой
команды или блок PL/SQL:
SQL> EXIT SQL.SQLCODE
GET Цель Загружает файл операционной системы в текущий буффер.
--------
Синтаксис GET имя_файла[.ext] [LIS[T] | NOL[IST]]
Термины и Фразы имя_файла[.ext]
Задает имя загружаемого файла (обычно командный файл). Если расширение файла
не указано, используется расширение по умолчанию .SQL . Информацию о изменении
расширения по умолчанию смотри описание команды SET переменная SUFFIX в данной
главе.
LIS[T Выводит содержимое файла.
NOL[IST] Запрещает вывод.
Примеры Чтобы загрузить файл YEARENDRPT с расширением SQL в буффер, введите:
SQL> GET YEARENDRPT
|