


       HOST

          Цель Выпoлняет команду операционной системы без выхода из SQL*PLUS

     Синтаксис HO[ST] [команда]

Термины и Фразы     команда        Задает команду операционной системы.

       Введите HOST без команды, чтобы вывести подсказку операционной 
       системы. Затем вы можете выполнить множество команд операционной 
       системы. За информацией по возврату обратно в SQL*PLUS обратитесь к 
       руководству по установке ORACLE и руководству пользователя по вашей ОС.

Рекомендации   В некоторых операционных системах можно использовать "$" или 
               другой символ вместо HOST. Смотри руководство по установке 
               ORACLE и руководство пользователя для вашей операционной 
               системы.

               В некоторых операционных системах к команде HOST нет доступа.

     Примеры   Чтобы выполнить команду операционной системы ls *.sql, 
               введите:

               SQL> HOST ls *.sql



































                                   -- 102 --



        INPUT          Цель Добавляет одну или более строк текста после 
                       текущей буфферной строки.

     Синтаксис I[NPUT] [текст]

Термины и Фразы     текст  
        Задает добавляемый текст.  Чтобы добавить одну строку, введите текст 
        строки после команды INPUT, отделив текст от команды пробелом. Чтобы 
        начать строку одним или более пробелом, введите один или более 
        пробелов между INPUT и первым непустым символом текста.

        Чтобы добавить несколько строк, введите INPUT без текста. INPUT 
        попросит вас ввести каждую строку.  Выход из INPUT- это пустая 
        введенная строка.

Рекомендации   Если вы ввели номер строки больший чем количество строк в 
               буффере и далее текст, SQL*PLUS добавит новую строку в конец 
               буффера. Если вы задали в качестве номера строки ноль (0) и 
               далее указали текст, то SQL*PLUS вставит новую строку в начало 
               буффера (данная строка получит номер 1).

     Примеры   Предположим буффер SQL содержит следующую команду:

               1 SELECT ENAME, DEPTNO, SAL, COMM
               2 FROM EMP

               Чтобы добавить фразу ORDER BY к запросу, введите:

               SQL> LIST 2
                 2* FROM EMP
               SQL> INPUT ORDER BY ENAME

          LIST 2 делает вторую строку текущей. INPUT добавляет новую строку 
          после текущей строки. Буфер SQL сейчас содержит следующие строки:

               1  SELECT ENAME, DEPTNO, SAL, COMM
               2  FROM EMP
               3* ORDER BY ENAME

               Чтобы добавить две строки с фразой WHERE, введите:

               SQL> LIST 2
                 2* FROM EMP
               SQL> INPUT
                 3  WHERE JOB = 'SALESMAN'
                 4  AND COMM=500
                 5

               INPUT попросит вас ввести новые строки, пока вы не введете 
               пустой строки. Буффер SQL сейчас содержит следующие строки:

               1  SELECT ENAME, DEPTNO, SAL, COMM
               2  FROM EMP
               3  WHERE JOB = 'SALESMAN'
               4  AND COMM=500
               5  ORDER BY ENAME



                                   -- 103 --



        LIST          Цель Выводит одну или несколько строк буффера.

     Синтаксис L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST]

Термины и Фразы
               n         Выводит n строк.
               n m       Выводит строки с n по m.
               n *       Выводит со строки n до текущей.
               n LAST    Выводит со строки n до последней.
               *         Выводит текущую строку.
               * n       Выводит c текущей строки до строки с номером n.
               * LAST    Выводит c текущей строки до последней строки.
               LAST      Вывлдит последнюю строку.

               Введите LIST без параметров, чтобы вывести все строки.

Рекомендации   Можно опускать пробел между LIST и n или *, но но не между 
               LIST и LAST.

               Последняя выведенная строка становится новой текущей строкой 
               (помечается звездочкой).

     Примеры   Чтобы вывести содержимое буффера, введите:

               SQL> L

               Вы, наверное, увидите следующие результаты:

               1  SELECT ENAME, DEPTNO, JOB
               2  FROM EMP
               3  WHERE JOB = 'CLERK'
               4* ORDER BY DEPTNO

               Звездочка показывает, что текущей строкой стала строка с 
               номером 4.
               Чтобы вывести только вторую строку, введите:

               SQL> L 2

               Выведется следующее:

               2* FROM EMP

               Чтобы вывести с текущей строки (сейчас это строка 2) до 
               последней, введите:

               SQL> L * LAST

               Затем вы увидите следующее:

               2  FROM EMP
               3  WHERE JOB = 'CLERK'
               4* ORDER BY DEPTNO






                                   -- 104 --



        PAUSE
               Цель Выводит пустую строку, затем строку содержащую "текст", и 
               затем ожидает нажатие клавиши [Return]. Или, выводит две 
               пустые строки и устанавливается в режиме ожидания ввода.

     Синтаксис PAU[SE] [текст]

Термины и Фразы     текст          Представляет текст, который вы хотите 
                                   вывести.

               Если вы хотите вывести две пустых строки, введите PAUSE без 
               параметров.

Рекомендации   Так как PAUSE всегда ожидает отклика пользователя, лучше 
               использовать сообщение, которое явно просит нажать [Return].

               PAUSE читает ввод с терминала (если он доступен) даже, когда 
               вы переназначили источник команд ввода на файл.

               За информацией по созданию пауз между страницами отчета 
               обратитесь к описанию переменной PAUSE команды SET.

     Примеры   Чтобы вывести сообщение "Установите бумагу, нажмите Return" с 
               ожиданием нажатия клавиши [Return], вы можете включить 
               следующую команду PAUSE в командный файл:

               SQL> GET MYFILE
               1  SET PAUSE OFF
               2  PAUSE Установите бумагу и нажмите Return
               3  SELECT ...





























                                   -- 105 --



        PROMPT
                  Цель Выводит указанное сообщение или пустую строку на экран.

     Синтаксис PROMPT [текст]

Термины и Фразы     текст     Текст сообщения, которое вы хотите вывести. 
                              Если "текст" опущен, PROMPT выведет пустую 
                              строку на экран.

Рекомендации   Можно использовать данную команду в командном файле для 
               предоставления информации пользователю.

     Примеры   Следующий пример демонстрирует использование PROMPT совместно 
               с ACCEPT в командном файле ASKFORDEPT.  ASKFORDEPT содержит 
               следующие команды SQL*PLUS и SQL:

               PROMPT
               PROMPT Please enter a valid department
               PROMPT For example: 10, 20, 30, 40
               ACCEPT NEWDEPT NUMBER PROMPT 'DEPT:> '
               SELECT DNAME FROM DEPT
               WHERE DEPTNO = &NEWDEPT

               Предположим, что вы запустили данный командный файл, используя 
               START или @:

               SQL> @ASKFORDEPT

               SQL*PLUS выведет следующие подсказки:

               Please enter a valid department
               For example: 10, 20, 30, 40
               DEPT:>

Пользователь вводит номер отдела после подсказки DEPT:>.
SQL*PLUS выведет строку с &NEWDEPT до и после подстановки, и затем покажет 
наименование отдела, соответствующее введенному номеру после подсказки DEPT:>.






















                                   -- 106 --



        REMARK          Цель Начинает комментарий в командном файле.

     Синтаксис REM[ARK]

Рекомендации   Команда REMARK пишется в начале строки и комментарий заканчива-
               ется в конце строки (в строке не может быть одновременно и 
               комментарий и команда).  SQL*PLUS не интерпретирует 
               комментарий как команду.

               За информацией по вводу комментариев в командные файлы, 
               используя ограничители комментариев SQL, /*...*/, обратитесь к 
               подразделу "Помещение комментариев в командные файлы" раздела 
               "Сохранение команд для более позднего использования" в главе  3.

     Примеры   Следующий командный файл содержит несколько типичных 
               комментариев:

               SQL> GET EMPSUM
               1  REM COMPUTE uses BREAK ON REPORT to break on
               end of table
               2  BREAK ON REPORT
               3  COMPUTE SUM OF "DEPARTMENT 10" DEPARTMENT 20" -
               4  DEPARTMENT 30" "TOTAL BY JOB" ON REPORT
               5  REM Each column displays the sum of salaries by
               job for
               6  REM one of the departments 10, 20, 30.
               7  SELECT JOB,
               8        SUM( DECODE( DEPTNO, 10, SAL, 0))
               "DEPARTMENT 10",
               9        SUM( DECODE( DEPTNO, 20, SAL, 0))
               "DEPARTMENT 20",
               10       SUM( DECODE( DEPTNO, 30, SAL, 0))
               "DEPARTMENT 30",
               11       SUM(SAL) "TOTAL BY JOB"
               12 FROM EMP
               13*GROUP BY JOB























                                   -- 107 --



        RUN          Цель Выводит и выполняет команду SQL или блок PL/SQL 
                     запомненный в буффере SQL.

     Синтаксис R[UN]

Рекомендации   RUN приводит к тому, что последняя строка буффера SQL 
               становится текущей.

               Команда "наклонная черта" (/) аналогична RUN, но она не 
               выводит содержимое буффера на терминал.

     Примеры   Предположим, буффер SQL содержит следующий запрос:

               SELECT DEPTNO FROM DEPT

               Чтобы выполнить запрос, введите:

               SQL> RUN

               Вы получите следующий результат:

               1*  SELECT DEPTNO FROM DEPT

                   DEPTNO
               ----------
                      10
                      20
                      30
                      40






























                                   -- 108 --



        RUNFORM          Цель Вызывает приложение SQL*Forms из SQL*PLUS.

     Синтаксис RUNFORM [опции] имя_формы

Рекомендации   Синтаксис команды RUNFORM такой же, как и у SQL*PLUS.  Если вы 
               уже находитесь в SQL*PLUS, данным способом можно вызвать форму 
               более быстрее, чем активизация формы после системной подсказки,
               так как вы избегаете повторного логирования к ORACLE. Подробно-
               сти о синтаксисе смотри в "Руководство опреатора по SQL*Forms".

               Заметим, что если вы используете RUNFORM  из SQL*PLUSа, вы 
               можете не указывать имя/пароль пользователя (SQL*PLUS возьмет 
               текущие значения).  Если вы хотите использовать другие 
               имя/пароль пользователя, используйте SQL*PLUS-команду CONNECT 
               для подключения к необходимому пользователю.

     Примеры   Для выполнения формы с именем MYFORM, введите:

               SQL> RUNFORM MYFORM








































                                   -- 109 --




        SAVE          Цель Сохраняет содержимое буффера в файле операционной 
                      системы (комндный файл).

     Синтаксис SAV[E] имя_файла[.ext] [CRE[ATE] | REP[LACE] | APP[END]]

Термины и Фразы     имя_файла[.ext]
     Задает имя файла, в котором вы хотите сохранить содержимое буффера. Если 
     вы не указали расширение, SQL*PLUS использует расширение по умолчанию 
     (обычно SQL).  Информация о изменении расширения по умолчанию приводится 
     при описании переменной SUFFIX команды SET в данной главе.

      Если вы указываете одну из фраз CREATE, REPLACE, APPEND, то необходимо 
     явно указать расширение файла.

     CRE[ATE]     Создает файл, если он не существует.

     REP[LACE]    Замещает содержимое существующего файла.  Если файл не 
                  существует, REPLACE создает его.

     APP[END]     Добавляет содержимое буффера в конец указанного вами файла.

Рекомендации   Когда вы сохраняете содержимое буффера SQL, SAVE добавляет 
               строку с наклонной чертой (/) в конец файла.

     Примеры   Чтобы сохранить содержимое буффера в файл DEPTSALPRT с 
               расширением SQL, введите:

               SQL> SAVE DEPTSALPRT

               Чтобы сохранить содержимое буффера в файл DEPTSALPRT с 
               расширением OLD, введите:

               SQL> SAVE DEPTSALPRT.OLD

























                                   -- 110 --



        SET          Цель Настраивает окружение SQL*PLUS для текущего сеанса:

                    * устанавливает ширину вывода данных NUMBER
                    * устанавливает ширину вывода данных LONG
                    * разрешает/запрещает печать заголовков колонок
                    * устанавливает количество строк на странице
                    * .......

     Синтаксис SET системная_переменная значение
               где системная_переменная является одним из следующих значений:

               ARRAY[SIZE] {20 | n}
               AUTO[COMMIT] {OFF | ON | IMM[EDIATE]}
               BLO[CKTERMINATOR] {. | c}
               CMDS[EP] {; | c | OFF | ON}
               COM[PATIBILITY] {V5 | V6}
               CON[CAT] {. | c | OFF | ON}
               COPYC[OMMIT] {0 | n}
               CRT crt
               DEF[INE] {& | c | OFF | ON}
               ECHO {OFF | ON}
               EMBEDDED {OFF | ON}
               ESC[APE] {\ | c | OFF | ON}
               FEED[BACK] {6 | n | OFF | ON}
               FLU[SH] {OFF | ON}
               HEA[DING] {OFF | ON}
               HEADS[EP] {| | c | OFF | ON}
               LIN[ESIZE] {80 | n}
               LONG {80 | n}
               MAXD[ATA] n
               NEWP[AGE] {1 | n}
               NULL текст
               NUMF[ORMAT] формат
               NUM[WIDTH] {10 | n}
               PAGES[IZE] {14 | n}
               PAU[SE] {OFF | ON | текст}
               RECSEP {WR[APPED] | EA[CH] | OFF}
               RECSEPCHAR {_ | c}
               SCAN {OFF | ON}
               SHOW[MODE] {OFF | ON}
               SPA[CE] {1 | n}
               SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}
               SQLCO[NTINUE] {>  | текст}
               SQLN[UMBER] {OFF | ON}
               SQLPRE[FIX] {# | c}
               SQLP[ROMPT] {SQL> | текст}
               SQLT[ERMINATOR] {; | c | OFF | ON}
               SUF[FIX] {SQL | текст}
               TAB {OFF | ON}
               TERM[OUT] {OFF | ON}
               TI[ME] {OFF | ON}
               TIMI[NG] {OFF | ON}
               TRIM[OUT] {OFF | ON}
               UND[ERLINE] {- | c | OFF | ON}
               VER[IFY] {OFF | ON}
               WRA[P] {OFF | ON}



                                   -- 111 --



Термины и Фразы
     ARRAY[SIZE] {20 | n}
               Устанавливает количество строк <называется пакетом>, которые 
               SQL*PLUS выбирает из БД за один раз. Допустимое значение от 1 
               до 5000. Большее число повышает эффективность запросов и 
               подзапросов, выбирающих много записей, но требует больше 
               памяти в операционной системе. ARRAYSIZE не влияет на 
               выполнение операций SQL*PLUS.

     AUTO[COMMIT] {OFF | ON | IMM[EDIATE]}
               Задает время проведения отложенных изменений в базе данных. ON 
               заставляет SQL вносить произведенные изменения в БД сразу же 
               после выполнения любой команды SQL или блока PL/SQL. OFF 
               отменяет автоматическое сохранение, и вам придется 
               самостоятельно сохранять изменения (например, командой SQL 
               COMMIT). IMMEDIATE- эквивалентна опции ON.

     BLO[CKTERMINATOR] {. | c}
               Устанавливает неалфавитно-цифровой символ, используемый в 
               конце блоков PL/SQL. Чтобы выполнить блок, вы должны 
               использовать команды RUN или /.


     CMDS[EP] {; | c | OFF | ON}
               Устанавливает неалфавитно-цифровой символ, используемый для 
               разделения нескольких команд SQL*PLUS, вводимых на одной 
               строке. ON/OFF разрешает/запрещает использование нескольких 
               команд на одной строке; ON автоматически устанавливает точку с 
               запятой (;) в качестве символа разделителя команд.


     COM[PATIBILITY] {V5 | V6}
               Задает, сохранять или нет SQL*PLUSу команды COMMIT и ROLLBACK 
               в буффере SQL.  V5 не сохраняет COMMIT и ROLLBACK в буффере 
               SQL; V6- наоборот; Установите COMPATIBILITY в V5, если вы 
               хотите выполнить командный файл, разработанный для пятой 
               версии ORACLE; ... V6- для шестой версии ORACLE.

               Смотрите описание команд COMMIT и ROLLBACK в "Справочное 
               руководство по языку SQL".

     CON[CAT] {. | c | OFF | ON}
               Устанавливает символ, который вы можете использовать для 
               разделения имени подстановочной переменной от другого текста, 
               если он примыкает вплотню к данной переменной. Если вы задали 
               COMCAT ON, то SQL*PLUS восстанавливает значение символа по 
               умолчанию, т.е. точку.

     COPYC[OMMIT] {0 | n}
               Задает количество пакетов, после которых команда COPY 
               производит изменения в БД.  Команда COPY производит изменения 
               строк в целевой БД каждый раз, когда он скопирует n  пакетов 
               строк. Допустимое значение от 0 до 5000. Длина пакета задается 
               переменной ARRAYSIZE. Если вы задали COPYCOMMIT в 0, то COPY 
               производит изменения только после окончания операции 
               копирования.



                                   -- 112 --



     CRT crt   Изменяет CRT-файл по умолчанию, используемый командой SQL*PLUS 
               RUNFORM. Чтобы восстановить первоначальное имя crt, задайте 
               SET CRT "".

               Вы можете задавать имя-crt при вызове формы:

               SQL> RUNFORM -c NEW имя_формы
           или
               SQL> SET CRT NEW
               SQL> RUNFORM имя_формы

               При втором способе, SQL*PLUS запоминает имя-crt поэтому, при 
               вызове формы не надо задавать имя-crt в течение данного 
               сеанса.

     DEF[INE] {& | c | OFF | ON}
               Устанавливает символ "c", используемый как префикс пoдстановоч-
               ной переменной.  ON/OFF включает/выключает поиск и замену 
               подстановочной переменной ее значением.  Установка DEFINE в ON 
               или OFF переопределяет значение установки переменной SCAN.

     ECHO {OFF | ON}
               Задает или запрещает вывод выполняемых команд из командного 
               файла, запущенного командой START. ON разрешает вывод команд; 
               OFF-запрещает.

     EMBEDDED {OFF | ON}
               OFF означает, что каждый отчет будет начинаться от начала новой
               страницы. При ON- будет начинаться с любого места страницы.

     ESC[APE] {\ | c | OFF | ON}
               "c" определяет ESCAPE-символ. 
               OFF отменяет этот символ. 
               ON  разрешает ESCAPE-символ.

               Если ESCAPE-символ определен, то его можно использовать, 
               например, перед символом, объявленным в команде DEFINE, для 
               обозначения того, что такой символ является обычным символом.

     FEED[BACK] {6 | n | OFF | ON}
               Выводит количество записей выбранных при запросе в момент 
               выбора n записей.  ON/OFF включает/выключает эту команду.  При 
               установке ON n устанавливается в 1. Установка n в 0 
               равнозначна установке OFF.


     FLU[SH] {OFF | ON}
               Задает, когда посылать результаты на устройство вывода 
               пользователя. OFF разрешает операционной системе буфферный 
               вывод. ON запрещает буфферизацию.

               OFF следует применять для командных файлов работающих не 
               интерактивно (т.е., когда нет необходимости в выводимых 
               сообщениях пока не закончится командный файл). Чем меньше 
               операций ввода/вывода, тем быстрее работает программа.




                                   -- 113 --



     HEA[DING] {OFF | ON}
               Управляет печатью заголовков колонок. 
          ON    заставляет SQL  печатать заголовки в отчетах; 
          OFF - запрещает; 
          HEADS[EP] {| | c | OFF | ON} 
          Устанавливает символ разделитель заголовка.  Можно использовать 
          данный символ в команде COLUMN или в старых формах BTITLE и TTITLE 
          для разделения заголовков на несколько строк.  ON/OFF влючают/выклю-
          чают разделитель. Когда разделитель заголовков выключен, SQL*PLUS 
          воспринимает символ-разделитель как обычный символ.

     LIN[ESIZE] {80 | n}
          Устанавливает длину строки. Также контролирует позицию 
          центрирования и выравнивания текста вправо в BTITLE и TTITLE.  
          Допустимое значение от 1 до 500.

     LONG {80|n}
           Устанавливает максимальную длину LONG-значений для вывода и 
          копирования.  Допустимые значения от 1 до 32767. Значение 
          переменной LONG должно быть меньше, чем MAXDATA.

     MAXD[ATA] n
          Устанавливает максимальную ширину строки, которую SQL*PLUS может 
          обрабатывать.  Максимальное и значение по умолчанию для n зависит 
          от типа операционной системы. Смотри руководство по установке 
          ORACLE и руководство пользователя для вашей ОС, или обратитесь к 
          администратору БД.

     NEWP[AGE] {1 | n}
          Устанавливает количество пустых строк, печатаемых между началом 
          каждой страницы и верхним заголовком. Значение, равное нулю, 
          заставляет SQL*PLUS выводить между страницами символ перевода листа 
          и очищать экран на большинстве типов терминалов.

     NULL текст
          Устанавливает текс, который SQL*PLUS отображает для представления 
          пустой величины.  NULL без указания "текста" побуждает SQL*PLUS 
          выводить пробелы (по умолчанию). Используйте фразу NULL команды 
          COLUMN для замены данного значения для некоторой колонки.

     NUMF[ORMAT] формат
          Устанавливает формат, используемый по умолчанию для вывода на экран 
          числовых элементов данных. Укажите числовой формат для "формат". 
          Описание форматов смотри в описании фразы FORMAT команды COLUMN.  

     NUM[WIDTH] {10 | n} Устанавливает ширину, используемую по умолчанию для 
          вывода чисел.

     PAGES[IZE] {14 | n}
          Устанавливает количество строк между заголовком и концом страницы. 
          Для листа в 11 дюймов задают 54 (плюс NEWPAGE=6).  Вы можете yстано-
          вить PAGESIZE в 0, чтобы подавить все заголовки, прерывания страниц,
          начальные пустые строки и другую информацию для форматирования.

     PAU[SE] {OFF | ON | текст}
          Позволяет управлять скролированием на терминале во время выполнения 
          отчета. Вы должны нажать [Return] или [Clear] после каждой паузы. 
          ON заставляет SQL*PLUS создавать паузу перед выводом каждой 

                                   -- 114 --



          страницы отчета. Текст определяет сообщение SQL*PLUSа во время 
          паузы. Текст с пробелами необходимо заключать в одиночные кавычки.  
          Можно использовать терминальные escape последовательности в команде 
          PAUSE; т.е.  можно вывести сообщение в инверсном режиме и т.д.

     RECSEP {WR[APPED] | EA[CH] | OFF} и RECSEPCHAR  {|c}
          Выводит или печатает разделитель записей.  Разделитель записей 
          состоит из одной строки, в которой символ "c" повторяется LINESIZE 
          раз.  RECSEPCHAR описывает символ разделения записей. По умолчанию- 
          это пробел.

          RECSEP сообщает SQL*PLUS, где необходимо отбражать разделение 
          записей. Например, если RECSEP WRAPPED, то SQL*PLUS выведет 
          разделитель записей только после свернутой строки; если RECSEP 
          EACH, то разделитель будет выводиться после каждой записи. Если вы 
          установите RECSEP в OFF, то SQL*PLUS не будет выводить символ 
          разделитель записей.

     SCAN {OFF | ON}
          OFF запрещает обработку подстановки переменных и параметров; ON- 
          разрешает.

     SHOW[MODE] {OFF | ON}
          Управляет выводом старого и нового значения системных переменных 
          SQL*PLUS, когда вы их изменяете командой SET.

     SPA[CE] {1 | n}
          Устанавливает количество пробелов между колонками при выводе. 
          Максимальное значение n равно 10.

     SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}
          Переводит регистр команд SQL или блоков PL/SQL перед выполнением. 
          SQL*PLUS переводит весь текст команды, включая литералы в кавычках, 
          следующим образом:

          * верхний регистр, если SQLCASE=UPPER
          * нижний регистр, если SQLCASE=LOWER
          * без изменения, если SQLCASE=MIXED

          SQLCASE не изменяет содержимое буффера SQL.

     SQLCO[NTINUE] {>  | текст}
          Устанавливает последовательность символов, выводящихся в качестве 
          подсказки для продолжения командной строки SQL*PLUS (для 
          продолжения используют символ переноса "-").

     SQLN[UMBER] {OFF | ON}
          ON устанавливает, что для второй и последующих строк команды SQL 
          подсказкой будет номер строки. OFF позволяет изменять подсказку 
          через SQLPROMPT.

     SQLPRE[FIX] {# | c}
          Устанавливает символ префикса SQL. В то время, как вы выводите 
          команду SQL*PLUS за подсказкой SQL>, вы можете на отдельной строке, 
          которой предшествует символ префикса SQL, ввести команду SQL. SQL 
          будет выполнять команду SQL, независимо от того, что введена 
          команда SQL*PLUS.


                                   -- 115 --



SQLP[ROMPT] {SQL> | текст}
          Устанавливает командную подсказку SQL*PLUS.

SQLT[ERMINATOR] {; | c | OFF | ON}
          Устанавливает символ, использующийся для завершения команды SQL. 
          OFF означает, что отменяются все символы окончания команды SQL; 
          пользователь заканчивает команду SQL, вводом пустой строки. ON 
          устанавливает символ окончания в значение по умолчанию (;).

SUF[FIX] {SQL | текст}
          Устанавливает использующееся по умолчанию расширение имени файла, 
          которое SQL*PLUS использует в командах, ссылающиеся на командные 
          файлы. SUFFIX не влияет на расширение файла для вывода (при 
          буфферизации).

TAB {OFF | ON}
          OFF заставляет SQL*PLUS использовать символ табуляции для 
          форматирования абзаца в выходных данных. ON заставляет SQL*PLUS 
          использовать для этого пробелы. Значение для TAB по умолчанию 
          является системно-зависимым.  Введите SHOW TAB для того, чтобы 
          посмотреть значение по умолчанию для вашей системы.

TERM[OUT] {OFF | ON}
          OFF запрещает отображение выходных данных, генерируемых командами, 
          выполняющимися из файла, в результате чего вывод может быть 
          буфферизован без вывода экран. ON разрешает отбражение выходных 
          данных. TERMOUT OFF не влияет на вывод команд введенных 
          интарактивно.

TI[ME] {OFF | ON}
          ON заставляет SQL*PLUS отображать текущее время перед каждой 
          командной подсказкой. OFF запрещает вывод времени.

TIMI[NG] {OFF | ON}
          Управляет выводом временной статистики. ON выводит временную 
          статистику по каждой выполненой команде SQL или блоку PL/SQL. OFF 
          запрещает вывод. Информацию о SET TIMING ON смотри в руководстве по 
          установке пользователя и в руководстве пользователя по вашей 
          опреационной системе.

TRIM[OUT] {OFF | ON}
          Определяет, как выводит SQL*PLUS конечные пробелы в конце каждой 
          строки. ON удаляет пробелы в конце каждой строки, улучшая 
          характеристики при взаимодествии с ORACLE через медленные 
          устройства. OFF разрешает отображение завершаюших пробелов. TRIMOUT 
          ON не привязан к буфферному выводу; он игнорируется, если не 
          установлен SET TAB ON.

UND[ERLINE] {- | c | OFF | ON}
          "c" устанавливает символ, использующийся для подчеркивания 
          заголовков столбцов в отчетах SQL*PLUS. ON/OFF включает/выключает 
          подчеркивание, независисмо от значения "c".

VER[IFY] {OFF | ON}
          ON заставляет SQL*PLUS выводить текст командной строки до и после 
          замещения указателей подставляемых переменных действительными 
          величинами. OFF отменяет вывод.


                                   -- 116 --



WRA[P] {OFF | ON}
          OFF отсекает отображаемые элементы данных, если их длина больше 
          ширины текущей строки.  ON разрешает элементам данных 
          "переноситься" на следующую строку.

          Используйте фразы WRAPPED и TRUNCATED команды COLUMN, чтобы 
          отменить установки WRAP для описанных столбцов.

Рекомендации   SQL*PLUS поддерживает системные переменные (их также называют 
               переменными команды SET), которые позволяют настраивать 
               окружение SQL*PLUS в данном сеансе. Можно изменять их значения 
               командой SET и смотреть их текущие значения командой SHOW.

               Замечание:  SET TRANSACTION READ ONLY является командой SQL; 
               смотри справочное руководство по языку SQL.

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

   COMPATIBILITY  Чтобы выполнить командный файл, SALARY.SQL, созданный для 
               версии 5 ORACLE, введите:

               SQL> SET COMPATIBILITY V5
               SQL> START SALARY

               После выполнения файла, восстановим режим эмуляции в V6:

               SQL> SET COMPATIBILITY V6

               Вы можете добавить команду SET COMPATIBILITY V5 в начало 
               командного файла, и восстановить эмуляцию в конце командного 
               файла SET COMPATIBILITY V6.

         ESCAPE  Если вы задали escape-символ равным "!", то

               SQL> ACCEPT v1 PROMPT 'Enter !&1:'

               выведет следующую подсказку:

               Enter &1:

         HEADING  Для подавления вывода заголовков колонок в отчете, введите:

               SQL> SET HEADING OFF

               Если вы после этого выполните SQL команду SELECT,

               SQL> SELECT ENAME, SAL FROM EMP
                 2  WHERE JOB = 'CLERK';

               то получите следующие результаты:

               ADAMS          1100
               JAMES           950
               MILLER    1300




                                   -- 117 --



         LONG  Чтобы установить максимальную ширину выводимых и копируемых 
               LONG-значений равной 500, введите:

               SQL> SET LONG 500

               LONG-данные будут свернуты при выводе на терминал;
               SQL*PLUS будет обрезать данные длинее 500 символов.

     SQLCONTINUE  Чтобы установить подсказку продолжения команд SQL*PLUS 
               равной восклицательному знаку и пробелу, введите:

               SQL> SET SQLCONTINUE '! '

               SQL*PLUS будет выдавать новыю подсказку для строк-продолжений:

               SQL> TTITLE 'YEARLY INCOME' -
               ! RIGHT SQL.PNO SKIP 2 -
               ! CENTER 'PC DIVISION'
               SQL>

          SUFFIX  Чтобы установить расширение для командных файлов по 
                  умолчанию равным UFI, введите:

               SQL> SET SUFFIX UFI

               Если вы введете

               SQL> GET EXAMPLE

               То SQL*PLUS будет искать файл EXAMPLE.UFI вместо EXAMPLE.SQL





























                                   -- 118 --



        SHOW          Цель Выводит значения системных переменных SQL*PLUS.

     Синтаксис SHO[W] опция
               где опция есть одна из следующих фраз:
               системная_переменная
               ALL
               BTI[TLE]
               LNO
               PNO
               REL[EASE]
               SPOO[L]
               SQLCODE
               TTI[TLE]
               USER

Термины и Фразы     системная_переменная  Любая системная, установленная 
                                  командой SET.

               ALL                Выводит установки для всех опций SHOW.

               BTI[TLE]           Показывает текущее определение BTITLE.

               LNO                Показывает текущий номер строки (позиция на 
                                  текущей странице дисплея или 
                                  буфферизованного вывода).

               PNO                Показывает текущий номер страницы.
               REL[EASE]          Показывает номер реализации ORACLE RDBMS, с 
                                  которым работает SQL*PLUS.

               SPOO[L]            Показывает, является ли текущий вывод 
                                  буфферизованным.

               SQLCODE            Показывает значение SQL.SQLCODE (код 
                                  возврата последней выполненой команды)

               TTI[TLE]           Показывает текущее определение TTITLE.

               USER               Показывает имя пользователя, с которым вы 
                                  подключились к SQL*PLUS.

Рекомендации   Чтобы посмотреть текущее значение LINESIZE, введите:

               SQL> SHOW LINESIZE

               Если текущее значение переменной равно 80, SQL*PLUS выдаст 
               следующее:

               linesize 80










                                   -- 119 --



        SPOOL

  Цель Сохраняет результаты запросов в файле операционной системы и, обычно, 
посылает данный файл на принтер. Также показывает текущее состояние 
буфферизации.

     Синтаксис SPO[OL] [имя_файла[.ext] | OFF | OUT

Термины и Фразы     имя_файла[.ext] 
Задает имя файла, в который будет производиться буферизация отображаемых 
выходных данных. Если вы не указали расширение, SPOOL использует расширение 
по умолчанию (LST или LIS в большинстве систем).

               OFF            Заставляет SQL остановить буферизацию.

               OUT            Останавливает буферизацию и посылает файл на 
                              принтер.

               Введите SPOOL без параметров, чтобу вывести текущее состояние 
               буферизации.

Рекомендации   Чтобы буферировать вывод генерируемый командами из командного 
               файла без отображения его на экране, используйте SET TERMOUT 
               OFF. SET TERMOUT OFF не влияет на вывод команд, введенных 
               интерактивно.

     Примеры   Чтобы начать запись отображаемых данных в файл с именем DIARY, 
               введите:

               SQL> SPOOL DIARY

               Чтобы закрыть и распечатать файл, введите:

               SQL> SPOOL OUT

























                                   -- 120 --



        SQLPLUS
          Цель Стартует SQL*PLUS (вводится после системной подсказки).

     Синтаксис SQLPLUS [[-S[ILENT]] [logon] [start]] | -?
          где:
               logon          Требутся следующий синтаксис:

               имя_пользователя[/пароль][@спецификация_базы] |
                         / |
                         /NOLOG

               start     Позволяет вводить имя командного файла и аргументы. 
                         SQL*PLUS передает аргументы командному файлу 
                         аналогично команде START. Фраза START задается в 
                         следующем формате:

                         @имя_файла[.ext] [арг1 арг2 ...]

                         Смотри описание команды START в данной главе.

Термины и Фразы     Если вы не указали logon и задали start, SQL*PLUS 
        подразумевает, что первая строка командного файла содержит правильный 
        logon. Если вы не задали ни logon ни start, SQL*PLUS выдаст подсказку 
        для ввода имени и пароля пользователя.

    имя_пользователя[/пароль]
              Задает имя и пароль пользователя, с которым вы хотите 
                 подключиться к ORACLE.  Если вы опустили эти параметры, 
                 SQL*PLUS попросит вас ввести их. Если вы ввели наклонную 
                 черту (/) или просто нажмете [Return] на подсказке 
                 user_name, SQL*PLUS подключит вас, используя logon по 
                 умолчанию (см "/" ниже).

              Если вы опустили только пароль, SQL*PLUS попросит вас ввести 
                 его. Вводимый вами пароль после подсказки неотображается на 
                 экране.

              Представляет logon по умолчанию (ops$).  Вы не можете ввести 
                 спецификацию_базы, если вы используете logon по умолчанию.  
                 По умолчанию logon SQL*PLUS попытается подключить вас, 
                 используя имя пользователя OPS$имя, где "имя" есть ваше имя 
                 в операционной системе.

    /NOLOG    Заставляет стартовать SQL*PLUS, но не производить вашу 
                 регистрацию в ORACLE.  Перед выполнением любой команды, 
                 необходимо выполнить команду CONNECT с правильным logon, 
                 чтобы подключиться к ORACLE.

    спецификация_базы
              Состоит из SQL*NET-строки подключения.  Синтаксис данной строки 
              зависит от типа протокола связи вашего ORACLE.  Дополнительную 
              информацию смотрите в руководстве по SQL*NET или спросите у 
              администратора БД.

    -S[ILENT] Подавляет все информационные и запрашивающие сообщения 
              SQL*PLUS, включая командную подсказку 'SQL >' и названия 



                                   -- 121 --



              программ, которые обычно отображаются во время запуска 
              SQL*PLUS. Это используется для того, чтобы сделать вызов 
              SQL*PLUS другими программами невидимым для пользователя.

    -?        Заставляет SQL*PLUS отбразить номер текущей версии, а затем 
              передать управление операционной системе. Оба знака нельзя 
              разделять пробелом.

Рекомендации
  SQL*PLUS может настраиваться с помощью файла параметров (profile), 
создаваемого администратором базы.  SQL*PLUS выполняет этот командный файл, 
когда пользователь запускает SQL*PLUS и устанавливает связь с ORACLE. Данный 
файл параметров позволяет ДБА настраивать среду по умолчанию для все 
пользователей данной системы; пользователи не имеют доступа к данному файлу 
параметров. Имя данного файла зависит от типа операционной системы. Подробнее 
о файле параметров смотри в руководстве по установке ORACLE.

  SQL*PLUS также поддерживает файл параметров пользователя (User Profile), 
выполняемого после главного файла параметров.  SQL*PLUS ищет файл с именем 
LOGIN.SQL в вашем текущем директории. Если SQL*PLUS не обнаружит этого файла 
здесь, то SQL*PLUS будет искать данный файл в директориях заданных в пути. 
Некоторые операционные системы не поддерживают возможность путь-поиска. Если 
SQL*PLUS не обнаружит LOGIN-файл, он выведет предупреждаюшее сообщение и 
продолжит процесс регистрации.


     Примеры   Для запуска SQL*PLUS с именем SCOTT и паролем TIGER, введите:

               SQLPLUS SCOTT/TIGER

               Чтобы сделать то же самое и задать базу POLICY по умолчанию, 
               введите:

               SQLPLUS SCOTT/TIGER@POLICY

               Чтобы запустить командный SQL*PLUS и выполнить командный файл 
               STARTUP.SQL, введите:

               SQLPLUS SCOTT/TIGER @STARTUP




















                                   -- 122 --



        START          Цель Выполняет указанный командный файл.

     Синтаксис STA[RT] имя_файла[.ext] [арг1 арг2 ...]

Термины и Фразы     имя_файла[.ext] 
   Задает командный файл, который вы хотите выполнить. Этот файл содержит 
любые команды, которые вы можете выполнять интерактивно.

Если вы не указали расширение, SQL*PLUS использует расширение по умолчанию 
(обычно SQL). За информацией по изменению расширения по умолчанию обратитесь 
к описанию переменной SUFFIX команды SET в данной главе.

Когда вы ввели START имя_файла.ext, SQL*PLUS будет искать данный файл в 
текущем директории. Если SQL*PLUS не обнаружит данный файл, то он повторит 
поиск в директориях, заданных в пути для операционной системы. Некоторые 
операционные системы могут не поддерживать возможность путь-поиска.

[арг1 арг2 ...]   Определяет аргументы, передаваемые командному файлу. Если 
              вы ввели один или более аргументов, SQL*PLUS подставит данные 
              значения в параметры (&1,&2, ...) командного файла.  Первый 
              аргумент замещает &1, второй замещает &2, и т.д.

               Команда START присваивает параметрам значения аргументов; если 
               вы стартуете снова этот командный файл в данном сеансе, вы 
               можетет задать новые значения или опустить аргументы, для 
               использования старых значений.

               Подробнее о использовании параметров смотрите в подразделе 
               "Передача параметров с помощью команды START" раздела 
               "Написание интерактивных команд" в главе 3.

Рекомендации   Команда @ (знак "at") работает аналогично START, но она не 
               позволяет передавать параметры.

     Примеры   Файл с именем PROMOTE.SQL, используемый для содействия 
               служащим, может содержать следующую команду:

               SELECT * FROM EMP
               WHERE MGR=&1 AND JOB=&2 AND SAL>&3;

               Чтобы выполнить данный командный файл, введите:

               SQL> START PROMOTE 7280 CLERK 950

               Затем SQL*PLUS выполнит следующую команду:

               SELECT * FROM EMP
               WHERE MGR=7280 AND JOB='CLERK' AND SAL>950;











                                   -- 123 --



        TIMING          Цель Записывает данные хронометрирования о общем 
                        времени выполнения команд, выводит заголовок текущей 
                        области хронометрирования и ее данные, или выводит 
                        количество активных областей хронометрирования.

     Синтаксис TIMI[NG] [START текст | SHOW | STOP]

Термины и Фразы     START текст
   Устанавливает область хронометрирования и делает текст заголовком данной 
области.  Вы можете иметь более одной активной области хронометрирования, 
посредством старта дополнительной области, не остановив предыдущую область 
хронометрирования. Последняя запущенная область хронометрирования становится 
текущей.

SHOW      Выводит заголовок текущей области хронометрирования и ее данные.

STOP          Выводит заголовок текущей области хронометрирования и ее 
          данные, затем удаляет данную область. Если существуют еще активные 
          области хронометрирования, одна из них, созданная самой последней, 
          которая еще не уничтожена, становится текущей. Используйте фразу 
          TIMING в команде CLEAR для удаления всех активных областей.

Для отображения количества активных областей хронометрирования используйте 
TIMING без параметров.

Рекомендации   Вы можете использовать эти данные для анализа эффективности 
               некоторых команд или блоков PL/SQL.

               За подробностями обратитесь к руководству по установке ORACLE 
               и руководству пользователя для вашей операционной системы. 
               Смотрите команду SET TIMING ON, для отображения текущего 
               времени после каждой выполненной команды или блока PL/SQL.

     Примеры   Для создания области хронометрирования с именем SQL_AREA, 
               введите:  SQL> TIMING START SQL_AREA

               Для вывода заголовка текущей области
               хронометрирования и накопленных данных, введите:
               SQL> TIMING SHOW

               Для вывода заголовка текущей области хронометрирования и 
               накопленных данных, и уничтожения данной области введите:

               SQL> TIMING STOP















                                   -- 124 --



        TTITLE          Цель Помещает и форматирует указанный заголовок 
                        вверху каждой страницы отчета, или выводит текущее 
                        определение TTITLE.

Замечание:  Описание старого формата TTITLE, совместимого с UFI (предшествен
            ник SQL*PLUS), смотри TTITLE(старый формат) в приложении F.

     Синтаксис TTI[TLE]  [printspec [текст | переменная] ...] | [OFF | ON]

               где printspec состоит из одной или нескольких следующих фраз, 
               используемых для размещения и форматирования текста:

               COL n
               S[KIP] [n]
               TAB n
               LE[FT]
               CE[NTER]
               R[IGHT]
               BOLD
               FORMAT char

Термины и Фразы     Если вы не указали фразу printspec перед текстом, TTITLE 
     выравнит текст влево. Для вывода текущего определения TTITLE, введите 
     TTITLE  без параметров.

     Описание данных терминов и фраз действительно и для команды BTITLE.

     текст     Задает текст заголовка. Текст необходимо поместить в одиночные 
               кавычки, если в нем больше одного слова.

     переменная     Задает пользовательскую переменную или одну из следующих 
                    системных переменных:

               * SQL.LNO (текущий номер строки)
               * SQL.PNO (текущий номер страницы)
               * SQL.RELEASE (текущий номер реализации ORACLE)
               * SQL.SQLCODE (текущий код ошибки)
               * SQL.USER (текущее имя пользователя)

     Чтобы вывести одно из этих значений, используйте соотвествующее имя в 
     заголовке. Можно форматировать переменную фразой FORMAT.

     OFF       Выключает заголовок (запрещает его вывод) не влияя на его 
               описание.

     ON        Включает заголовок (разрешает его вывод). Когда вы описали 
         верхний заголовок, SQL*PLUS автоматически устанавливает TTITLE в ON.

     COL n     Перемещение в колонку n текущей строки.  "Колонка" в данном 
                       контексте означает позицию печати, но не колонку таблицы.

     S[KIP] [n]  Пропуск n строк; если вы опустили n, пропускается одна 
                 строка; если n=0, то возврат в начало текущей строки.

     TAB n     Пропуск n колонок (перемещение назад, если вы задали отридца-
               тельное число). "Колонка" в данном контексте означает позицию 
               печати, но не колонку таблицы.


                                   -- 125 --



     LE[FT],   Выравнивание влево, центрирование, выравнивание 
     CE[NTER], вправо данных в текущей строке. CENTER и RIGHT 
     R[IGHT]   используют значение SET LINESIZE для вычисления позиции, в 
               которую необходимо поместить данные.

     BOLD      Печатает данные полужирным шрифтом.  SQL*PLUS показывает 
               полужирную печать на терминале повторением данных на трех 
               последовательных строках.

     FORMAT char Задает модель формата, которая определяет формат для 
 последующих элементов данных. Модель формата должна быть симольной 
 константой, такой как А10 или $999- но не переменной. Подробнее о моделях 
 смотри COLUMN FORMAT.

    Если тип данных модели формата не соответствует типу элемента данных, 
 фраза FORMAT не оказывает влияния на данный элемент.

    Если данное несоответсвие обнаружено, то SQL*PLUS печатает числовые 
 значения, используя формат по умолчанию для числовых значений или формат 
 заданный фразой SET NUMFORMAT. Данные типа DATE выводятся в формате по 
 умолчанию.

    Подробнее о форматах по умолчанию смотри описание фразы FORMAT команды 
COLUMN в данной главе.

Рекомендации   SQL*PLUS интерпретирует TTITLE в новом формате, если 
               допустимая фраза printspec (LEFT, SKIP, COL, и т.д.) следует 
               непосредственно за именем команды.  Смотри описание COLUMN 
               NEW_VALUE для печати колонок и дат в верхнем заголовке.

               Вы можете использовать любое количество констант и переменных 
               в printspec. SQL*PLUS будет выводить константы и переменные в 
               указанном вами порядке, позиционируя и форматируя каждую 
               константу и переменную в соответсвии с предшествующей фразой 
               printspec.

     Примеры   Чтобы определить верхний заголовок: "Monthly Analysis" 
               выравненным влево, дату по центру и справа номер страницы, и 
               вывести "Date in Thousands" полужирным шрифтом в центре 
               следующей строки, введите:

               SQL> TTITLE LEFT 'Monthly Analysis' CENTER '11 Mar 88' -
               > RIGHT 'Page:' FORMAT 999 SQL.PNO SKIP CENTER
               BOLD -
               > 'Data in Thousands'

               В результате будет следующий заголовок:

               Monthly Analysis       11 Mar 88
               Page:   1 Data in Thousands

               Чтобы подавить вывод заголовка без изменения его описания, 
               введите:

               SQL> TTITLE OFF




                                   -- 126 --



        UNDEFINE

          Цель Уничтожает переменную пользователя, которую вы создали явно 
               (командой DEFINE) или неявно (с помощью аргументов команды 
               START).

     Синтаксис UNDEF[INE] переменная

Термины и Фразы     переменная          Имя переменной пользователя, которую 
                                        вы хотите удалить.

     Примеры   Для удаление переменной с именем POS, введите:

               SQL> UNDEFINE POS













































                                   -- 127 --



        WHENEVER SQLERROR

          Цель Покидает SQL*PLUS, если команда SQL или блок PL/SQL 
               сгенерировали ошибку.

     Синтаксис WHENEVER SQLERROR {EXIT [SUCCESS | FAILURE | WARNING | n | 
                              переменная] | CONTINUE}

Термины и Фразы     EXIT [SUCCESS|FAILURE|WARNING|n|переменная]
          Приказывает SQL*PLUSу совершить отложенные изменения в БД и выйти, 
         как только SQL*PLUS обнаружит любую SQL-ошибку (но только после 
         вывода сообщения об ошибке). Фраза EXIT данной команды имеет 
         синтаксис аналогичный команде EXIT. Смотри описание команды EXIT.

          Если ошибки не произошло, то выхода из SQL*PLUS не будет.

CONTINUE  Выключает опцию EXIT.

Примеры   Следующая команда из командного файла обеспечивает выход из 
       SQL*PLUS и вывод кода ошибки SQL, если команда SQL UPDATE завершится 
       неудачно, т.е. таким образом будет пропущена команда COPY:

          SQL> GET RAISE
            1  WHENEVER SQLERROR EXIT SQL.SQLCODE
            2  UPDATE EMP SET SAL = SAL*1.1
            3  COPY TO SCOTT/TIGER@D:BETHESDA -
            4  REPLACE EMP -
            5  USING SELECT * FROM EMP
            6  WHENEVER SQLERROR CONTINUE






























                                   -- 128 --




Приложение А      Сообщения об ошибках      Команды COPY


          В приложении А приводится список сообщений об ошибках команды 
       COPY. Сообщения об ошибках, генерируемых ORACLE RDBMS, смотри 
       в "Руководство по кодам и сообщениям об ошибках ORACLE".


CPY0002:  Незаконная или ошибочная опция APPEND,CREATE,INSERT или REPLACE

Причина:  Внутренняя функция COPY активизировала COPY со значением опциии 
          создания вне диапазона.

Действие: Обратитесь к представителю фирмы ORACLE.


CPY0003:  Internal Error: logical host number out of range Внутренняя ошибка: 
       логический номер хоста вне диапазона

Причина:  Внутреняя функция COPY активизаровалась со значением логического 
       номера хоста, который является вне диапазона.

Действие: Обратитесь к представителю фирмы ORACLE.

CPY0004:  Исходная и целевая таблицы и имена колонок несопоставимы.

Причина:  В операции APPEND или INSERT (когда таблица существует) по крайней 
       мере имя одной колонки в таблице-назначения не совпадает с 
       соответствующим именем колонки в необязательном списке имен колонок 
       или в команде SELECT.

Действие: Исправьте команду COPY, убедитесь, что имена колонок и их 
       последовательность в таблице назначения совпадает с именами и 
       последовательностью колонок в необязательном списке колонок или 
       команде SELECT.


CPY0005:  Source and destination column attributes don't match Атрибуты 
       колонок в целевой и исходной таблицах не совпадают

Причина:  В операции APPEND или INSERT (когда таблица существует), по крайней 
       мере одна колонка в таблице-назначения не совпадает с типом 
       соответсвующей колонки в команде SELECT.

Действие: Исправьте команду COPY, убедитесь, что типы колонок совпадают.  Для 
       преобразования данных можно использовать TO_DATE, TO_CHAR, TO_NUMBER.


CPY0006:  Select list has more columns than destination table В списке выбора 
       колонок больше, чем в целевой таблице

Причина:  В операции APPEND или INSERT (когда таблица существует), количество 
       колонок в команде SELECT больше, чем количество колонок в целевой 
       таблице.

Действие: Исправьте команду COPY, убедитесь, что количество выбираемых 
       колонок равно количеству колонок в целевой таблице.

                                   -- 129 --




CPY0007:  Select list has fewer columns than destination table В списке 
       выбора колонок меньше, чем в целевой таблице

Причина:  В операции APPEND или INSERT (когда таблица существует), количество 
       колонок в команде SELECT меньше, чем количество колонок в целевой 
       таблице.

Действие: Исправьте команду COPY, убедитесь, что количество выбираемых 
       колонок равно количеству колонок в целевой таблице.


CPY0008:  More column list names than columns in the destination table Больше 
       имен в списке колонок, чем в целевой таблице

Причина:  В операции APPEND или INSERT (когда таблица существует), количество 
       колонок в имен колонок больше, чем количество колонок в целевой 
       таблице.

Действие: Исправьте команду COPY, убедитесь, что количество колонок в списке 
       колонок равно количеству колонок в целевой таблице.


CPY0009:   Fewer column list names than columns in the destination table 
       Меньше имен в списке колонок, чем в целевой таблице

Причина:  В операции APPEND или INSERT (когда таблица существует), количество 
       колонок в имен колонок меньше, чем количество колонок в целевой 
       таблице.

Действие: Исправьте команду COPY, убедитесь, что количество колонок в списке 
       колонок равно количеству колонок в целевой таблице.



























                                   -- 130 --



        Приложение B 
                          Версия 3.0       Усовершенствования

SQL*PLUS версии 3.0 предоставляет пользователю следующие возможности:

*    Вы можете определить, будет ли SQL*PLUS запоминать команды COMMIT и 
     ROLLBACK в буффере SQL. Новая SET-переменная, COMPATIBILITY, позволяет 
     вам поддерживать совместимость с командными файлами, написанными для 
     ORACLE версии 5. Смотри описание переменной COMPATIBILITY команды SET в 
     главе 6.

*    Вы можете вводить, редактировать, запоминать и выполнять блоки PL/SQL из 
     SQL*PLUSа. Смотри подраздел "Выполнение блоков PL/SQL" раздела "Ввод и 
     выполнение команд" в главе 2.

*    Вы автоматически ощутите улучшение работы в сетевой среде. SQL*PLUS 
     сейчас определяет несколько колонок в команде SELECT с помощью одного 
     сетевого сообщения.

*    Вы можете ограничить доступ пользователей к множеству команд SQL*PLUS и 
     SQL с помощью таблицы PRODUCT_USER_PROFILE, расположенной в бюджете 
     SYSTEM. Полное объяснение смотри в приложении Е.

*    Вы можете опускать пароль во фразах FROM и TO команды COPY; SQL*PLUS 
     попросит вас ввести пароль, подавив при этом вывод пароля на экран. 
     Смотри описание команды COPY в главе 6.

































                                   -- 131 --



     Приложение C
                          Ограничения SQL*PLUS


Таблица С-1, на следующей странице, приводит ограничения или максимальные 
значения для каждого приведенного элемента SQL*PLUS. Приведенные ограничения 
верны для большинства операционных систем (кроме PDP11 и mc68000).

Таблица С-1              Элемент
Ограничение Ограничения SQL*PLUS 
──────────────────────────────────────────────────────
 длина имени файла зависит от системы

длина имени пользователя      30 символов

длина имени переменной пользователя 30 символов

длина переменной пользователя      240 символов

количество переменных пользователя 1024

количество переменных в команде    50 SQL INSERT списке INTO

количество переменных в команде SQL 100

длина командной строки             500 символов

длина LONG-значения введенного     250 символов в SQL*PLUS

длина выводной строки              500 символов (миним длина 5)

длина строки после подстановки     1000 переменных

количество строк на одну команду   500 SQL (строка=80 симв)

количество строк на странице       50000

общая длина записи            60000 символов для VMS, иначе 32767

Количество записей в массиве       5000 выборки

количество вложенных командных     20 для VMS,CMS, файлов Unix; иначе 5

количество страниц            99999















                                   -- 132 --




            Приложение D                        Список команд SQL

В таблице D-1, на следующей странице, приводятся основные команды и фразы 
SQL. Команды SQL описаны в данном руководстве. За полной документацией по 
этим командам обратитесь к "Руководство пользователя по языку SQL" и 
"Справочное руководство по языку SQL".

Таблица D-1              Основные команды и фразы SQL
Список команд SQL
─────────────────────────────────────────────────────
                    ALTER               GROUP BY
                    AUDIT               HAVING
                    CLOSE Cursor   INSERT
                    COMMENT        LOCK TABLE
                    COMMIT         NOAUDIT
                    CONNECT        OPEN Cursor
                    CONNECT BY          ORDER BY
                    CREATE         PREPARE
                    DECLARE        RENAME
                    DELETE         REVOKE
                    DESCRIBE       ROLLBACK
                    DROP           SAVEPOINT
                    EXECUTE        SELECT
                    EXPLAIN        SET TRANSACTION
                    FETCH               UPDATE
                    FOR            VALIDATE INDEX
                    FROM           WHENEVER
                    GRANT               WHERE






























                                   -- 133 --




        Приложение E
                     Ограничение привилегий пользователя в SQL*PLUS

В приложении Е описывается использование таблицы PRODUCT_USER_PROFILE в 
SQL*PLUS. Различные продукты ORACLE используют PRODUCT_USER_PROFILE, таблица 
в счете (account) SYSTEM, для того, чтобы обеспечить защиту на уровне 
продукта, которая дополняет защиту на уровне пользователя, которая в свою 
очередь обеспечивается командами SQL GRANT и REVOKE. ДБА может использовать 
PRODUCT_USER_PROFILE для запрещения определенных команд SQL*PLUS и SQL в 
среде SQL*PLUS для каждого пользователя. Заметим, что SQL*PLUS- но не ORACLE 
RDBMS- необязательно использует данный метод безопасности.

Вы можете использовать PRODUCT_USER_PROFILE в ваших собственных разработках, 
также как ее используют продукты ORACLE. Данное приложения объясняет 
спицифику использования PRODUCT_USER_PROFILE SQL*PLUSом и также приводит 
набор правил по использованию данной таблицы в других целях. Обратитесь к ДБА 
за информацией по доступу к PRODUCT_USER_PROFILE.

Если вы ограничили привилегии пользователя командами GRANT и REVOKE, но не 
ограничили данные привилегии в PRODUCT_USER_PROFILE, ограничения будут 
действовать.  Если вы запретили пользователю использовать некоторые команды с 
помощью таблицы PRODUCT_USER_PROFILE, но не ограничили данный доступ 
командами GRANT или REVOKE, запрет будет действовать.

Вы можете создать PRODUCT_USER_PROFILE, выполнив командный файл с именем 
PUPBLD.SQL .  Расширение и местоположение файла зависит от системы. Смотри 
руководство по установке ORACLE для вашей операционной системы или обратитесь 
к вашему ДБА.

SQL*PLUS читает ограничения из PRODUCT_USER_PROFILE, когда пользователь 
регистрируется в SQL*PLUS и поддерживает данные ограничения в течение сеанса.  
Изменения в таблице PRODUCT_USER_PROFILE будут действовать только при новой 
регистрации пользователя в SQL*PLUS.

Структура таблицы
               Таблица состоит из следующих колонок:

               Имя                  Null ?   Type
               ------------------------ -------- -------------
               PRODUCT              NOT NULL CHAR(30)
               USERID                       CHAR(30)
               ATTRIBUTE                    CHAR(240)
               SCOPE                             CHAR(240)
               NUMERIC_VALUE                NUMBER(15,2)
               CHAR_VALUE                        CHAR(240)
               DATE_VALUE                        DATE

Описание и использование колонок

Опишем каждую колонку таблицы PRODUCT_USER_PROFILE:

Product        Должна содержать имя продукта (в данном случае SQL*PLUS). Вы 
              не можете вводить универсальное сопоставление (wildcard) в 
              данную колонку. Вы также не можете вводить NULL.




                                   -- 134 --



Userid         Должна содержать имя пользователя (на верхнем регистре), 
              которому вы хотите запретить использование команды. Чтобы 
              запретить использование команды более чем одному пользователю, 
              испльзуйте обобщенный символ SQL (%) или сделайте несколь 
              записей. Таким образом, следующие записи верны:
               *  SCOTT
               *  CLASS1
               *  CLASS%  (все пользователи, чьи имена начинаются с CLASS)
               *  %      (все пользователи)

Attribute      Должна содержать имя (на верхнем регистре) команды SQL*PLUS 
              или SQL, которую вы хотите запретить использовать (например, 
              GET). Вы не можете вводить обобщенный символ. Смотри 
              "Управление", ниже, где приводится список команд SQL*PLUS и 
              SQL, которые вы можете запрещать.

Scope         SQL*PLUS игнорирует данную колонку.  Рекомендуется вводить NULL 
              в данную колонку.  Другие продукты могут сохранить в ней 
              ограничения по спец-файлам или иные данные.

Numeric_Value  SQL*PLUS игнорирует данную колонку.  Рекомендуется вводить 
              NULL в данную колонку.  Другие продукты могут сохранять в 
              данной колонке цифровые значения.

Char_Value    Должна содержать символьную строку "DISABLED". Нельзя 
              использовать обобщенный символ.

Date_Value    SQL*PLUS игнорирует данную колонку.  Рекомендуется вводить NULL 
              в данную колонку.  Другие продукты могут сохранять 
              DATE-значения в данной колонке.

Управление
   Администратор БД пользователь SYSTEM владеет и имеет все привилегии для 
таблицы PRODUCT_USER_PROFILE. (Когда SYSTEM регистрируется, SQL*PLUS не 
читает PRODUCT_USER_PROFILE. Поэтому, на пользователя SYSTEM не накладывается 
никаких ограничений).  Другие пользователи ORACLE должны иметь доступ только 
на выбор из данной таблицы. Комндный файл PUPBLD, когда он выполняется, 
предоставляет SELECT-доступ к PRODUCT_USER_PROFILE всем пользователям. Чтобы 
запретить команду SQL*PLUS или SQL указанному пользователю, вставьте строку 
содержащую имя пользователя в колонке Userid, имя команды в колонке 
Attribute, и DISABLED в колонке Char_Value. Колонки Scope, Numeric_Value, 
Date_Value должны содержать NULL. Например:

                           NUMERIC CHAR     DATE
PRODUCT  USERID ATTRIBUTE SCOPE VALUE   VALUE VALUE 
-------- ------ --------- ----- ------- -------- ----- 
SQL*Plus SCOTT  HOST DISABLED 
SQL*Plus %         INSERT DISABLED 
SQL*Plus %         
UPDATE DISABLED SQL*Plus %         DELETE DISABLED

Чтобы разрешить вновь пользоваться командой, удалите строку содержащую 
ограничение.

Вы можете запретить следующие команды SQL*PLUS:
     * CONNECT
     * EDIT
     * EXIT

                                   -- 135 --



     * GET
     * HOST  (или алиас команды HOST, такой как $)
     * QUIT
     * RUN
     * SAVE
     * SPOOL
     * START

Вы также можете запретить следующие команды SQL:

     * ALTER
     * AUDIT
     * CONNECT
     * CREATE
     * DELETE
     * DROP
     * GRANT
     * INSERT
     * LOCK
     * NOAUDIT
     * RENAME
     * REVOKE
     * SELECT
     * UPDATE
     * VALIDATE


































                                   -- 136 --




        Приложение F             Команды SQL*PLUS  ранних версий

          В приложение F приведены команды SQL*PLUS более ранних версий. 
          Данные "старые" команды все еще работают в SQL*PLUS, но в SQL*PLUS 
          существуют новые команды, которые более функционально 
          усовершенствованы.


BTITLE (старая форма)

     Назначение     Выводит заголовок внизу каждой страницы отчета.
      Синтаксис     BTI[TLE] текст

    Рекомендации    Старая форма BTITLE предлагает более ограниченные 
               возможности по форматированию, чем новая форма команды, но 
               обеспечивает совместимость с UFI (предшественник SQL*PLUS). 
               Старая форма команды описывает нижний заголовок состоящий из 
               пустой строки и строки с отцентрированным текстом. За 
               подробностями обратитесь к описанию TTITLE (старая форма) в 
               данном прилоджении.


COLUMN DEFAULT

     Назначение     Сбрасывает атрибуты вывода указанных колонок к их 
значениям по умолчанию.

      Синтаксис     COL[UMN] {колонка | выражение} DEF[AULT]
    Рекомендации    Действует аналогично COLUMN CLEAR


DOCUMENT

     Назначение     Начинает блок документирования в командном файле.
      Синтаксис     DOC[UMENT]

   Рекомендации За информацией по данному методу документирования командных 
файлов обратитесь к подразделу "Размещение комментариев в командных файлах" 
раздела "Сохранение команд для более позднего исрользования" в главе 3 и к 
REMARK в главе 6.

После ввода DOCUMENT и нажатия [Return], SQL*PLUS выведет подсказку DOC> 
вместо SQL>, пока вы не закончите документирование. Знак "#" заканчивает 
документирование.  Если вы установили DOCUMENT в OFF, SQL*PLUS проигнорирует 
команду DOCUMENT и интерпретирует набор строк документирования как команды. 
(Смотри SET DOCUMENT в данном приложении.)


NEWPAGE

     Назначение     Выводит в буфферный вывод n строк до начала следующей 
                    страницы.

      Синтаксис     NEWPAGE [1 | n]

    Рекомендации    За информацией обратитесь к описанию переменной NEWPAGE 
                     команды SET в главе 6.

                                   -- 137 --




SET BUFFER

     Назначение     Делает указанный буффер текущим.

      Синтаксис     SET BUF[FER] {буффер | SQL}

    Рекомендации
    Сначала, текущим является буффер SQL.  SQL*PLUS не требует использования 
нескольких буфферов; один буффер SQL позволяет сделать все необходимое.

Если имя буффера, которое вы указали, пока не существует, SET BUFFER 
определит (создаст и назовет) данный буффер. SQL*PLUS удалит буффер и его 
содержимое при выходе из SQL*PLUSа.

Выполнение запроса автоматически делает SQL-буффер текущим. Чтобы скопировать 
содержимое буффера в другой буффер, используйте команды GET и SAVE.  Чтобы 
очистить текущий буффер, используйте CLEAR BUFFER. Чтобы очистить SQL-буффер, 
когда он не является текущим, используйте CLEAR SQL.


SET DOCUMENT

     Назначение     Разрешает или запрещает команду DOCUMENT.
      Синтаксис     SET DOC[UMENT] {OFF | ON}

    Рекомендации    SET DOCUMENT ON разрешает использование команды DOCUMENT.  
               SET DOCUMENT OFF запрещает использование данной команды. Если 
               вы запретили использование DOCUMENT, SQL*PLUS интерпретирует 
               последующие строки как команды.

               Смотри описание команды DOCUMENT в данном приложении.

SET TRUNCATE

     Назначение     Упраляет сверткой или отсечением элементов данных, длина 
                    которых больше текущей ширины строки.
      Синтаксис     SET TRU[NCATE] {OFF | ON}

    Рекомендации    Функция ON аналогична SET WRAP OFF, и наоборот. Вы можете 
предпочесть использование WRAP, так как команда SHOW опзнает WRAP, и не 
распознает TRUNCATE.


TTITLE (старая форма)

     Назначение     Выводит заголовок вверху каждой страницы отчета.
      Синтаксис     TTI[TLE] текст

    Рекомендации    Старая форма TTITLE предлагает более ограниченные 
возможности по форматированию, чем новая форма команды, но обеспечивает 
совместимость с UFI (предшественник SQL*PLUS).  Старая форма команды 
описывает верхний заголовок состоящий из строки с датой слева и номером 
страницы справа, на второй строке отцентрированный текст, третья строка- 
пустая.

"текст", который вы указали, задает заголовок, который будет выводиться на 
второй строке.

                                   -- 138 --



SQL*PLUS центрирует текст исходя из установленной длины строки (SET 
LINESIZE). Символ разделитель (|) начинает новую строку; два символа "||" 
означают вставку пустой строки. Можно задать новый символ разделитель строк с 
помощью SET HEADSEP.

Вы можете управлять форматированием номеров страниц в старых формах команд 
TTITLE и BTITLE, определив переменную с именем "_page". По умолчанию она 
имеет значение "page &P4". Чтобы изменить формат, вы можете использовать 
DEFINE _page с новым форматом:

SQL> SET ESCAPE /
SQL> DEFINE _page = 'Page /&P2'

Данная строка форматирования будет выводить "Page" и далее двухсимвольный 
номер страницы. Вы должны обязательно escape-символ, стобы SQL*PLUS не 
интерпретировал амперсанд (&) как подстановочную переменную. Смотри описание 
переменной ESCAPE команды SET в главе 6.

SQL*PLUS интерпретирует TTITLE в старом формате, если сразу за именем команды 
не следует фраза из нового формата команды.

     Примеры   Чтобы используя TTITLE в старом формате, установить верхний 
заголовок с датой слева, номером листа справа и на новой строке текст "SALES 
DEPARTMENT" и на следующей строке "PERSONNEL REPORT", введите:

        SQL> TTITLE 'SALES DEPARTMENT|PERSONNEL REPORT'

































                                   -- 139 --
