



     ЧАСТЬ 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 колонке содержащей длинное выражение,
       вывести результат в формате долларов, и вывести <NULL> для пустых
       значений, вы можете ввести:

          SQL> COLUMN SAL+COMM+BONUS-EXPENSES-INS-TAX ALIAS  NET
          SQL> COLUMN NET FORMAT $9,999,999.99 NULL '<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












                                   -- 101 --
