ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.






                  Справочное руководство по языку SQL        5-78


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DECLARE CURSOR (Встроенный SQL)               F

         Назначение Определение  курсора  путем  задания  ему имени и
                    связывания с ним определенного SQL  -  оператора.
                    Курсор  не  распределяется,  пока не будет открыт
                    (OPEN).

         Предпосылки Нет.

         Синтаксис  EXEC SQL [AT dbname] DECLARE cursor_name CURSOR
                        FOR {SELECT subststment | ststment}

         Ключевые   AT dbname        указывает  необязательную  фразу
         слова и                     AT,  которая использует имя базы
         параметры                   данных,  ранее определенное опе-
                                     ратором DECLARE DATABASE  и  ис-
                                     пользуемое  во встроенном опера-
                                     торе CONNECT.

                    cursor_name      имя, назначаемое курсору.

                    substatment      оператор SELECT без фразы INTO.

                    statement        имя оператора,  заранее  опреде-
                                     ленного  встроенным SQL - опера-
                                     тором DECLARE STATEMENT.

         Замечания  Оператор DECLARE CURSOR относится к декларативным
         по исполь- SQL - операторам и,  следовательно,  должен появ-
         зованию    ляться в исходном тексте прекомпилятора до опера-
                    торов, ссылающихся к данному курсору. ORACLE смо-
                    жет интерпретировать курсор,  если он  был  ранее
                    определен декларативным   оператором.  Контекстом
                    (областью видимости) оператора определения курсо-
                    ра является  весь  исходный файл текущего модуля;
                    это отличается от  правил  видимости  ORACLE  или
                    host - языка. Например, курсор не может быть дек-
                    ларирован (определен) в процедуре, компилирующей-
                    ся отдельно от тела.

                    Каждый оператор  DECLARE  CURSOR должен быть уни-
                    кальным; Вы не можете определить  два  курсора  с
                    одинаковым именем в одной компилируемой единице.

                    Если в операторе SELECT специфицирована фраза FOR
                    UPDATE OF,  на данный курсор  можно  ссылаться  в
                    UPDATE, используя WHERE CURRENT OF CURSOR.  Опре-
                    деленный курсор может быть использован в последу-
                    ющем WHERE CURRENT OF CURSOR,  если курсор открыт
                    и позиционирован на строку с помощью FETCH.




                                   -- 171 --



         Пример     EXEC SQL DECLARE C1 CURSOR
                      FOR SELECT ename, empno, job, sal FROM emp
                                WHERE deptno = :deptno
                                FOR UPDATE OF SAL

         Связанные  Операторы SELECT,  встроенный SELECT,PREPARE,OPEN
         темы       cursor, FETCH, CLOSE cursor.
         
                      Справочник по SQL - операторам         5-79


















































                                   -- 172 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DECLARE DATABASE (Встроенный SQL)             F


         Назначение Определение имени удаленной базы данных, на кото-
                    рую ссылаются  с помощью фразы AT последующие SQL
                    - операторы.

         Предпосылки Необходимо иметь доступ к существующему  в  уда-
                    ленной базе данных пользователю.

         Синтаксис  EXEC SQL DECLARE dbname DATABASE


         Ключевые   dbname           идентификатор, назначаемый  уда-
         слова и                     ленной базе данных.
         параметры

         Замечания  Когда база данных определена,  к ней можно  обра-
         по исполь- щаться во  встроенных  SQL - операторах с помощью
         зованию    фразы AT. К таким операторам относятся следующие:

                         * COMMIT
                         * DECLARE CURSOR
                         * DELETE
                         * INSERT
                         * ROLLBACK
                         * SELECT
                         * UPDATE

                    За дополнительной информацией обратитесь  к  "Ру-
                    ководству программиста"  по соответствующему пре-
                    компилятору.

         Пример     user      :string(1..10);
                    pass      :string(1..10);
                    my_database :string(1..10);

                    user :="scott";
                    pass :="tiger";
                    my_database :="D:CHICAGO";

                    EXEC SQL DECLARE oracle1 DATABASE;

                    EXEXC SQL CONNECT :user
                        IDENTIFIED BY :pass
                        AT oracle1
                        USING :my_database;

                    EXEC SQL AT oracle1 SELET ...;

         Связанные Встроенные   SQL  -  операторы  CONNECT  и  COMMIT
         темы      RELEASE.
                    
                  Справочное руководство по языку SQL        5-80


                                   -- 173 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DECLARE STATEMENT (Встроенный SQL)            F


         Назначение Назначить SQL - оператору имя SQL - переменной.

         Предпосылки Нет.

         Синтаксис  EXEC SQL DECLARE ststement_name STATEMENT

         Ключевые   ststement_name   идентификатор оператора.
         слова и
         параметры

         Замечания  Выполнять оператор DECLARE  STATEMENT  необходимо
         по исполь- только в случае, когда DECLARE CURSOR, ссылающий-
         зованию    ся на определенный оператор,  выполняется до опе-
                    ратора PRERARE. Если оператор PREPARE предшеству-
                    ет оператору OPEN cursor,  DECLARE  STATEMENT  не
                    требуется.

                    Если DECLARE  STATEMENT  используется,  он должен
                    предшествовать операторам  DECLARE  CURSOR,  OPEN
                    cursor, DESCRIBE  или  PREPARE,  выполняющим этот
                    оператор.

                    Контекст определения оператора - вся единица ком-
                    пиляции  текущего  модуля  (идентично  декларации
                    курсора),  что  отличается  от  правил  видимости
                    ORACLE и host - языка.  Например, оператор не мо-
                    жет быть декларирован  (определен)  в  процедуре,
                    компилирующейся отдельно от тела.

         Пример     Данный пример  иллюстрирует  типичную  последова-
                    тельность использования     оператора     DECLARE
                    STATEMENT:

                    EXEC SQL DECLARE s STATEMENT;
                    EXEC SQL PREPARE s USING :my_string;
                    EXEC SQL DECLARE c CURSOR FOR s;

         Связанные  Операторы PREPARE,   OPEN  cursor,  FETCH,  CLOSE
         темы       cursor.
         
                      Справочник по SQL - операторам         5-81












                                   -- 174 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DELETE                                        F


         Назначение Удаление строк из таблицы.

         Предпосылки Вы должны быть владельцем таблицы,  иметь приви-
                    легию DBA или иметь для данной таблицы привилегию
                    DELETE.

         Синтаксис  DELETE [FROM] [user.]table [alias] [WHERE condition]

         Ключевые   user             владелец таблицы.
         слова и
         параметры  table            имя таблицы или обзора, из кото-
                                     рых удаляются строки.

                    alias            алиас, назначенный таблице,  ко-
                                     торый используется в общем  слу-
                                     чае -     при    коррелированных
                                     запросах внутри оператора DELETE.

                    condition        условие, следующее   соглашениям
                                     по написанию  условий  (детально
                                     описаны в Главе 3 "Элементы язы-
                                     ка SQL").  Condition должно при-
                                     водить к  результату  TRUE   или
                                     FALSE.

         Замечания  Если отсутствует фраза WHERE, из таблицы удаляют-
         по исполь- ся все строки.  Если же эта  фраза  используется,
         зованию    удаляются  строки,  для которых условие condition
                    дает TRUE.  Условие может ссылаться на адресуемую
                    таблицу  или включать в себя коррелированный зап-
                    рос.

                    Все удаляемые строки  и  соответствующие  индексы
                    освобождают занимаемую ими память.

         Примеры    Чтобы удалить  все строки из таблицы TEMP_ASSIGN,
                    введите:

                    DELETE FROM TEMP_ASSIGN

                    Чтобы удалить из таблицы EMP всех продавцов,  по-
                    лучивших в  последнем  месяце  менее 100 долларов
                    комиссионных, наберите следующую команду:

                    DELETE FROM EMP
                         WHERE JOB = 'SALESMAN'
                           AND COMM < 100

         Связанные  Оператор DROP TABLE; Фразы FROM и WHERE оператора
                    SELECT.
                    
                  Справочное руководство по языку SQL        5-82

                                   -- 175 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DELETE (Встроенный SQL)                       F


         Назначение Удаление  строк из таблицы или обзора.  Синтаксис
                    встроенного DELETE отличается от синтаксиса стан-
                    дартного SQL  -  оператора  DELETE  во фразах AT,
                    FOR, CURRENT OF и host - переменными.

         Предпосылки Вы должны быть владельцем таблицы  или  иметь  к
                    ней привилегию DELETE, или иметь привилегию DBA.

         Синтаксис  EXEC SQL [AT dbname] [FOR :host_integer]
                       DELETE [FROM] table [alias]
                           [WHERE {condition | CURRENT OF cursor}]

         Ключевые   AT dbname        необязательная  фраза,  вводящая
         слова и                     имя неумалчиваемой    межбазовой
         параметры                   связи, ранее  назначенной  с по-
                                     мощью оператора DECLARE DATABASE.

                    FOR :host_integer специфицирует минимальное коли-
                                     чество итераций        оператора
                                     DELETE, когда во фразе WHERE ис-
                                     пользуются массивы.

                    FROM table       указывает  имя таблицы или обзо-
                                     ра, из которых  Вы намереваетесь
                                     удалять строки.

                    alias            алиас, назначенный таблице,  ко-
                                     торый используется в общем  слу-
                                     чае -     при    коррелированных
                                     запросах внутри оператора DELETE.

                    WHERE            условие поиска строк, подлежащих
                                     удалению. Если отсутствует, уда-
                                     ляться будут все  строки таблицы
                                     или обзора.

                    condition        логическое выражение,    которое
                                     может содержать ссылки на host -
                                     переменные или  host  - массивы.
                                     См. также определение синтаксиса
                                     condition в  Главе 4 - "Операции
                                     и функции".

                    cursor           используется для именования кур-
                                     сора,  определенного в операторе
                                     DECLARE  CURSOR.  До  выполнения
                                     оператора    DELETE   с   фразой
                                     CURRENT OF  курсор  должен  быть
                                     открыт и позиционирован на стро-
                                     ку.



                                   -- 176 --



                      Справочник по SQL - операторам         5-81


         Замечания  Если в  качестве  host  -  переменных в операторе
         по исполь- WHERE указаны массивы, оператор DELETE выполняет-
         зованию    ся лишь однажды для всего набора компонентов мас-
                    сива. Каждое выполнение  оператора  DELETE  может
                    удалить ноль, одну или более строк.

                    Если какая-либо  host - переменная,  используемая
                    во фразе WHERE,  является  массивом,  значит  все
                    host -  переменные должны быть массивами. Массивы
                    могут быть различного размера, но число обрабаты-
                    ваемых компонентов  определяется  размером  мини-
                    мального.

                    Если ни одна строка не удовлетворяет  условию, ни
                    одной строки  удалено  не  будет и SQLCODE вернет
                    условие NOT_FOUND.

                    Общее количество удаленных строк  возвращается  в
                    SQLROWS. Когда во фразе WHERE используются масси-
                    вы, этот счетчик отражает общее количество удале-
                    ний для всех компонентов массива, обработанного в
                    операторе DELETE.

                    Если фраза WHERE опущена,  это отмечается выстав-
                    лением флажка  в  5-й компоненте SQLWARN (SQLCA).
                    Описание SQLCODE,  ORACLE.SQLROWS и SQLCA  приво-
                    дится в  "Руководстве программиста по прекомпиля-
                    торам ORACLE" и в "Дополнении  к  руководству  по
                    прекомпиляторам ORACLE"  для  каждого конкретного
                    языка программирования.

         Примеры    Следующие примеры   демонстрируют   использование
                    оператора DELETE:

                    EXEC SQL DELETE FROM EMP
                       WHERE DEPTNO = :deptno
                       AND SAL :sal;

                    EXEC SQL DECLARE C1 CURSOR
                       FOR SELECT ...;

                    EXEC SQL FETCH C1
                       INTO ...;

                    EXEC SQL DELETE FROM EMP
                       WHERE CURRENT OF C1;

         Связанные  Операторы DECLARE DATABASE и DECLARE STATEMENT.
         темы
                    
                  Справочное руководство по языку SQL        5-84





                                   -- 177 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DESCRIBE (Динамический встроенный SQL: Метод 4)F


         Назначение Распределение  и  инициализация  дескриптора  для
                    хранения описаний host - переменной из SQL - опе-
                    ратора, предварительно подготовленного оператором
                    PREPARE.

         Предпосылки Необходимо с помощью оператора PREPARE  подгото-
                    вить SQL  - оператор,  содержащий host - перемен-
                    ные, которые надо описать (DESCRIBE).

         Синтаксис  Для связанных переменных:

                    EXEC SQL DESCRIBE BIND VARIABLES FOR statement_name
                        INTO descriptor_name

                    Для элементов списка SELECT:

                    EXEC SQL SESCRIBE [SELECT LIST FOR] statement_name
                        INTO descriptor_name


         Ключевые   BIND             требуется для   специфицирования
         слова и    VARIABLES        того, что  этот  оператор  будет
         параметры                   описывать входные переменные.

                    SELECT LIST      специфицирует,  что будет описы-
                                     ваться список выходных  перемен-
                                     ных. Явное   использование  этой
                                     фразы необязательно.

                    statement_name   указывает на  ранее определенный
                                     SQL - оператор.  Может содержать
                                     правильные ссылки  на   массивы
                                     host - переменных.

                    descriptor_name..указывает имя,  по которому ссы-
                                     лаются на дескриптор.

         Замечания  Дескриптор должен быть предварительно определен в
         по исполь- программе. Входные и выходные переменные не долж-
         зованию    ны включаться в один дескриптор.

                    Вообще говоря,  DESCRIBE выполняется после опера-
                    тора PREPARE.

         Пример     Чтобы посмотреть  пример применительно к конкрет-
                    ному языку программирования,  обратитесь к  соот-
                    ветствующему "Дополнению к руководству по преком-
                    пиляторам ORACLE".





                                   -- 178 --



         Связанные  Оператор PREPARE;  Дополнение  к  руководству  по
                    прекомпиляторам ORACLE.
                             
                      Справочник по SQL - операторам         5-85


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                    F

E         DROP CLUSTER                                  F


         Назначение Удаление  из базы данных специфицированного клас-
                    тера.

         Предпосылки Вы должны быть либо владельцем  этого  кластера,
                    либо иметь привилегию DBA.

         Синтаксис  DROP CLUSTER [user.]cluster
                        [INCLUDING TABLES]

         Ключевые   user             имя владельца кластера.
         слова и
         параметры  cluster          имя существующего кластера.

                    INCLUDING TABLES удаляет все таблицы, принадлежа-
                                     щие кластеру.  Если эта фраза не
                                     специфицирована, до     удаления
                                     кластера необходимо  удалить все
                                     входящие в него таблицы.


         Замечания  Кластер, владельцем  которого Вы не являетесь, не
         по исполь- может быть удален, если у Вас нет привилегии DBA.
         зованию
                    Удаление кластера удаляет также индекс кластера и
                    возвращает всю  память  (включая блоки индекса) в
                    соответствующие табличные пространства.

                    Удаление кластеризованной таблицы  имеет побочным
                    эффектом удаление ее из кластера.  Отдельную таб-
                    лицу раскластеризовать нельзя. Чтобы получить та-
                    кой эффект, необходимо выполнить следующее:

                       1. Создать новую таблицу с такой же структурой
                          и содержанием, но без опции CLUSTER:

                          CREATE TABLE new
                              AS SELECT * FROM old

                       2. Удалить старую таблицу:

                          DROP TABLE old

                       3. И наконец, воспользуйтесь оператором RENAME
                          для переименования новой таблицы в старую:

                          RENAME new TO old


                                   -- 179 --



                    Привилегии, предоставленные к старой таблице не пе-
                    реносятся на  новую  и  при необходимости их надо
                    предоставить заново.

         Пример     Для отмены кластера GEORGAPHY вместе с включенны-
                    ми в него таблицами необходимо ввести:

                    DROP CLUSTER GEOGRAPHY INCLUDING TABLES

         Связанные  Оператор DROP TABLE.
         темы
                    
                  Справочное руководство по языку SQL        5-86














































                                   -- 180 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP DATABASE LINK                            F


         Назначение Удаление специфицированной межбазовой связи.

         Предпосылки Необходимо быть владельцем межбазовой связи. Для
                    отмены общей (PUBLIC) связи необходимо иметь при-
                    вилегию DBA.

         Синтаксис  DROP [PUBLIC] DATABASE LINK link

         Ключевые   PUBLIC           должен быть  специфицирован  для
         слова и                     отмены PUBLIC - связи.
         параметры
                    link             имя отменяемой связи.


         Замечания  Если связь  общая,  должно  быть  специфицировано
         по исполь- PUBLIC; эту фразу может применять только DBA. Ес-
         зованию    ли межбазовая связь личная,  фраза PUBLIC  должна
                    быть опущена.

                    DBA может отменить связь,  владельцем которой яв-
                    ляется другой DBA.

         Пример     Для отмены межбазовой связи с именем BOSTON необхо-
                    димо выполнить следующую команду:

                    DROP DATABASE LINK BOSTON

         Связанные  Оператор CREATE DATABASE LINK; "Руководство поль-
                    зователя по SQL*Net" для Вашего протокола SQL*Net.
                    
                      Справочник по SQL - операторам         5-87






















                                   -- 181 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP INDEX                                    F


         Назначение Удалить из базы данных специфицированный индекс.

         Предпосылки Необходимо быть  владельцем  индекса  или  иметь
                    привилегию DBA.

         Синтаксис  DROP INDEX [user.]index

         Ключевые   user             имя владельца индекса.
         слова и
         параметры  index            название отменяемого индекса.


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

                    В качестве user предполагается пользователь,  вы-
                    давший команду DROP.

         Пример     Для удаления индекса MONOLITH введите:

                    DROP INDEX MONOLITH

         Связанные  Операторы ALTER INDEX, CREATE INDEX, CREATE TABLE.
                    
                  Справочное руководство по языку SQL        5-88

























                                   -- 182 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP ROLLBACK SEGMENT                         F


         Назначение Удаление указанного сегмента отката.

         Предпосылки Требуется привилегия DBA.

         Синтаксис  DROP [PUBLIC] ROLLBACK SEGMENT segment

         Ключевые   PUBLIC           должно специфицироваться для об-
         слова и                     щих (PUBLIC) сегментов.
         параметры
                    segment          специфицируется имя существующе-
                                     го сегмента отката.

         Замечания  Отменяться могут  только  неиспользуемые сегменты
         по исполь- отката.  Для определения,  используется  или  нет
         зованию    данный  сегмент отката,  запросите столбец STATUS
                    обзора словаря данных DBA_ROLLBACK_SEGS.  Если он
                    используется,  Вы можете либо ждать, пока все не-
                    выполненные транзакции не завершаться,  либо  вы-
                    полнить команду SHUTDOWN с параметром IMMEDIATE и
                    затем стартовать (STARTUP) базу данных  в  режиме
                    EXCLUSIVE.

                    Вся распределенная сегменту отката память возвра-
                    щается в соответствующее табличное пространство.

         Пример     Для отмены общего сегмента  ACCOUNTING  выполните
                    следующую команду:

                    DROP PUBLIC ROLLBACK SEGMENT ACCOUNTING

         Связанные  Операторы ALTER ROLLBACK SEGMENT, CREATE ROLLBACK
         темы       SEGMENT, CREATE TABLESPACE.
         
                      Справочник по SQL - операторам         5-89



















                                   -- 183 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP SEQUENCE                                 F


         Назначение Удаление указанной последовательности.

         Предпосылки Необходимо быть владельцем последовательности ли-
                     бо иметь привилегию DBA.

         Синтаксис  DROP SEQUENCE [user.]sequence

         Ключевые   user             владелец последовательности.
         слова и
         параметры  sequence         имя отменяемой последовательнос-
                                     ти.

         Замечания  В качестве user подразумевается пользователь, вы-
         по исполь- давший команду DROP.
         зованию
                    Один из  методов повторного старта последователь-
                    ности - ее отмена и повторное создание. Например,
                    у Вас  есть последовательность,  имеющая значение
                    150, а Вы хотите начать с 27. Для этого необходи-
                    мо:

                           1. Отменить последовательность.
                           2. Создать  последовательность  с  тем  же
                              именем, указав в START WITH значение 27.

         Пример     Для отмены  последовательности  ESEQ пользователя
                    ELLY введите:

                    DROP SEQUENCE ELLY.ESEQ

         Связанные  Операторы ALTER SEQUENCE и CREATE SEQUENCE.
         темы
                    
                  Справочное руководство по языку SQL        5-90



















                                   -- 184 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP SYNONYM                                  F


         Назначение Удалить из базы данных указанный синоним.

         Предпосылки Для удаления личного синонима вы должны быть его
                    владельцем. Для удаления общего синонима или  си-
                    нонима, владельцем которого Вы не являетесь,  не-
                    обходимо иметь привилегию DBA.

         Синтаксис  DROP [PUBLIC] SYNONYM [user.]synonym

         Ключевые   PUBLIC           должно специфицироваться при от-
         слова и                     мене общего синонима.
         параметры
                    synonym          имя удаляемого синонима.

         Замечания  Вы не  сможете удалить личный синоним, владельцем
         по исполь- которого не являетесь,  если не имеете привилегии
         зованию    DBA.

                    Изменить синоним можно отменив его и назначив за-
                    ново.

         Пример     Чтобы отменить синоним  MARKET, введите:

                    DROP SYNONYM MARKET

         Связанные  Оператор CREATE SYNONYM.
         темы
                          
                      Справочник по SQL - операторам         5-91
























                                   -- 185 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP TABLE                                    F


         Назначение Удалить из базы таблицу вместе с ее содержимым.

         Предпосылки Необходимо  быть  либо владельцем таблицы,  либо
                    иметь привилегию DBA.

         Синтаксис  DROP TABLE [user.]table

         Ключевые   user             владелец удаляемой таблицы.
         слова и
         параметры  table            имя подлежащей удалению таблицы.

         Замечания  Вы не сможете удалить таблицу, Вам не принадлежа-
         по исполь- щую, если не имеете привилегии DBA.
         зованию
                    Когда Вы удаляете таблицу, автоматически удаляют-
                    ся ее индексы,  даже если они были созданы другим
                    пользователем,  а также привилегии, предоставлен-
                    ные к этой таблице. Обзоры и синонимы, ссылающие-
                    ся  на эту таблицу,  не удаляются,  но становятся
                    ошибочными. Вы можете удалить их и создать заново
                    или  создать другую таблицу таким образом,  чтобы
                    обзоры и синонимы  вновь  стали  действительными.
                    Естественно,  вместе  с таблицей удаляются все ее
                    строки.

                    Если таблица не входит в кластер,  вся  принадле-
                    жавшая ей память, включая индексы, возвращается в
                    табличное пространство.

                    Чтобы не удалять таблицы кластера по отдельности,
                    можно удалить весь кластер, выполнив команду DROP
                    CLUSTER с параметром INCLUDING TABLES.

                    Перед удалением таблицы необходимо запросить  об-
                    зор словаря данных USER_CROSS_REFS на предмет оп-
                    ределения зависимости от данной других таблиц.

         Пример     для отмены таблицы TEST_DATA введите:

                    DROP TABLE TEST_DATA

         Связанные  Операторы DROP CLUSTER, ALTER TABLE CREATE INDEX,
         темы       CREATE TABLE.

                        
                  Справочное руководство по языку SQL        5-92







                                   -- 186 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP TABLESPACE                               F


         Назначение Удаление табличного пространства  с  возможностью
                    удаления всех объектов базы данных, ему принадле-
                    жащих.

         Предпосылки Требуется привилегия DBA. Табличное пространство
                    может быть как в online, так и в offline.

         Синтаксис  DROP TABLESPACE tablespace
                        [INCLUDING CONTENTS]

         Ключевые   tablespace       специфицируется имя существующе-
         слова и                     го табличного пространства. Таб-
         параметры                   личное пространство  SYSTEM   не
                                     может быть отменено.

                    INCLUDING        специфицирует, что     табличное
                    CONTENTS         пространство должно быть удалено
                                     даже если  содержит данные. Если
                                     этот аргумент  опущен  и  прост-
                                     ранство не  содержит данных, оно
                                     отменяется. Если же при  опущен-
                                     ном аргументе  табличное  прост-
                                     ранство содержит данные,  оно не
                                     отменяется.

         Замечания  Перед удалением табличное пространство необходимо
         по исполь- перевести в offline,  так как  если  пользователи
         зованию    обращаются в нем к сегментам данных, индекса, от-
                    ката или временным,  табличное пространство отме-
                    нено не будет.

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

                    DROP TABLESPACE MFRG
                        INCLUDING CONTENTS

         Связанные..Операторы ALTER   TABLESPACE,   CREATE  DATABASE,
         темы       CREATE TABLESPACE.
                    
                      Справочник по SQL - операторам         5-93












                                   -- 187 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         DROP VIEW                                     F


         Назначение Удалить специфицированный обзор из базы данных.

         Предпосылки Необходимо быть владельцем обзора или иметь при-
                    вилегию DBA.

         Синтаксис  DROP VIEW [user.]view

         Ключевые   user             владелец обзора.
         слова и
         параметры  view             имя существующего обзора.

         Замечания  Если у  Вас  есть привилегия DBA,  можно отменить
         по исполь- обзор другого пользователя.
         зованию
                    Когда Вы отменяете обзор,  синонимы и обзоры,  на
                    него ссылающиеся,  не  отменяются,  но становятся
                    неверными. Их можно отменить  или переопределить,
                    а также можно переопределить другие обзоры и таб-
                    лицы, с ним связанные,  чтобы обзоры  и  синонимы
                    стали вновь  действительны.  Однако привилегии на
                    удаляемый обзор также отменяются.

                    Обзор можно "изменить" путем его отмены  и  пере-
                    создания.

                    Перед отменой  обзора можно воспользоваться обзо-
                    ром словаря данных USER_CROSS_REFS для  определе-
                    ния, связаны   ли  с  данным  обзором  какие-либо
                    другие таблицы или обзоры.

         Пример     Для удаления обзора VIEW_DATA введите:

                    DROP VIEW VIEW_DATA

         Связанные  Операторы CREATE  TABLE,  CREATE   VIEW,   CREATE
         темы       SYNONYM.
             
                  Справочное руководство по языку SQL        5-94















                                   -- 188 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         EXECUTE (Динамический встроенный SQL: Метод 2)F


         Назначение Выполнить оператор INSERT, DELETE или UPDATE, ра-
                    нее подготовленный  в операторе PREPARE. Оператор
                    может ссылаться на host -  переменные,  используя
                    фразу USING.

         Предпосылки Перед  выполнением необходимо выполнить оператор
                    PREPARE.

         Синтаксис  EXEC SQL [AT dbname] [FOR :host_integer]
                       EXECUTE statement_name
                           [USING values_list]

         Ключевые   AT dbname        определяет имя связи для неумал-
         слова и                     чиваемой базы данных.
         параметры
                    FOR :host_integer специфицирует максимальное чис-
                                     ло итераций  оператора  EXECUTE,
                                     когда во фразе WHERE используют-
                                     ся массивы.

                    statement_name   имя подготовленного   оператора,
                                     который Вы хотите выполнить. Оно
                                     не должно быть именем оператора
                                     SELECT.

                    USING            обеспечивает список host - пере-
                                     менных или   выражений,  которые
                                     подставляются как входные host -
                                     переменные в  ранее подготовлен-
                                     ный оператор. Заметьте себе, что
                                     если одна из этих переменных яв-
                                     ляется массивом, остальные пере-
                                     менные фразы  USING также должны
                                     быть массивами.

                    values_list      values_element [,values_element...]

                    values_element   host_variable [:indicator] |
                                         literal | expression

         Пример     Следующий пример демонстрирует использование опе-
                    ратора EXECUTE:

                    my_own_statement : string(1..100);
                    my_var : float;
                    get(my_own_statement);

                    EXEC SQL PREPARE s FROM :my_own_statement;
                    EXEC SQL EXECUTE s USING :my_var;




                                   -- 189 --



         Связанные  Оператор PREPARE;   Применительно  к  конкретному
         темы       языку программирования  документы:   "Руководство
                    программиста по прекомпиляторам ORACLE" и "Допол-
                    нение к руководству по прекомпиляторам ORACLE".
         
                      Справочник по SQL - операторам         5-95


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         EXECUTE IMMEDIATE (Динамический встроенный SQL: Метод 1)F


         Назначение Подготовить и выполнить SQL - оператор, не содер-
                    жащий ссылок на host - переменные.

         Предпосылки Нет.

         Синтаксис  EXEC SQL [AT dbname]
                     EXECUTE IMMEDIATE [:host_string | string_literal]

         Ключевые   AT dbname        необязательная фраза, специфици-
         слова и                     рующая неумалчиваемую       базу
         параметры                   данных.

                    :host_string     host -  переменная,   содержащая
                                     подлежащий выполнению SQL - опе-
                                     ратор.

                    string_literal   строчный литерал,     содержащий
                                     текст SQL  - оператора,  который
                                     должен быть выполнен.


         Замечания  Оператор EXECUTE   IMMEDIATE   воспринимает  либо
         по исполь- строчный символьный литерал, либо host - перемен-
         зованию    ную, содержащую SQL - оператор и создает выполни-
                    мую форму этого  оператора.  Далее  он  выполняет
                    этот оператор и уничтожает выполнимую форму.

                    Когда выполняется оператор EXECUTE IMMEDIATE, за-
                    данный SQL - оператор анализируется и проверяется
                    на предмет  обнаружения ошибок.  Если он окажется
                    ошибочным, ничего  не  выполняется  и  в  SQLCODE
                    возвращается код ошибки.  Если оператор синтакси-
                    чески правильный,  но ошибка возникает на  стадии
                    выполнения, код ее также помещается в SQLCODE.

                    Оператор EXECUTE  IMMEDIATE  наиболее полезен для
                    операторов, которые надо выполнить  лишь однажды.
                    Для многократного выполнения операторов надо вос-
                    пользоваться командой PREPARE  -  для  подготовки
                    SQL - оператора и затем - EXECUTE. При многократ-
                    ном выполнении это имеет  преимущества,  так  как
                    не требует  для каждого выполнения нового синтак-
                    сического разбора.

         Пример     get(my_string)

                                   -- 190 --



                    EXEC SQL EXECUTE IMMEDIATE :my_string


                    EXEC SQL EXECUTE IMMEDIATE
                        "DELETE FROM EMP WHERE EMPNO = 9460"

         Связанные  Операторы PREPARE и EXECUTE.
         темы
                                                
                  Справочное руководство по языку SQL        5-96

















































                                   -- 191 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F
                 
E         EXPLAIN PLAN                                  F


         Назначение Определяет план выполнения,  которому будет следо-
                    вать ORACLE для выполнения указанного SQL -  опе-
                    ратора. Заносит в специфицированную таблицу стро-
                    ки, описывающий каждый шаг плана выполнения.

         Предпосылки Вы должны быть владельцем или  иметь  привилегию
                    INSERT для таблицы,  в которую будут записываться
                    результаты плана выполнения.

         Синтаксис  EXPLAIN PLAN
                        [SET STATEMENT ID = char]
                        [INTO [user.]table]
                        FOR sql_statement


         Ключевые   SET              специфицируется       содержимое
         слова и    STATEMENT_ID     столбца  STATEMENT_ID  для  всех
         параметры  = char           строк плана выполнения в  выход-
                                     ной таблице.  Если опущено, зна-
                                     чение этого столбца  будет NULL.

                    INTO [user.]table  описывает  выходную   таблицу.
                                     user - владелец этой таблицы. По
                                     умолчанию user  -  пользователь,
                                     выполнивший оператор EXPLAIN PLAN
                                     По умолчанию table - PLAN_TABLE.

                    FOR sql_statement текст оператора SELECT, INSERT,
                                     UPDATE или    DELETE.   Оператор
                                     EXPLAIN PLAN генерирует план вы-
                                     полнения для sql_statement.


         Замечания  Выходная таблица должна быть создана до  выполне-
         по исполь- ния оператора  EXPLAIN  PLAN.  Можно  создать эту
         зованию    таблицу, воспользовавшись  примером,   данным   на
                    дистрибутивном носителе в файле XPLAINPL.SQL. Ес-
                    ли Вы захотите воспользоваться  другой  таблицей,
                    она должна  содержать столбцы с теми же именами и
                    типом данных,  что и приведенная в  примере.  Для
                    информации о  расположении  файла  XPLAINPL.SQL в
                    Вашей операционной системе  обратитесь  к  "Руко-
                    водству пользователя по инсталяции".

                    После выполнения оператора EXPLAIN PLAN требуемые
                    строки можно  определить  по  содержанию  столбца
                    STATEMENT_ID. Для строк конкретного оператора это
                    значение равно указанному  в  операторе  значению
                    char  в  SET  STATEMENT_ID.  Так как по умолчанию
                    значение этого столбца (STATEMENT_ID) предполага-
                    ется "NULL",  необходимо  удостовериться,  что вы
                    указали соответствующее SET -  значение, особенно

                                   -- 192 --



                    если выходная таблица содержит информацию о плане
                    выполнения нескольких операторов.
                    
                      Справочник по SQL - операторам         5-97


                    Оператор EXPLAIN  PLAN  можно также выполнить как
                    составную часть средства трассировки SQL.

                    За информацией об интерпретации  результатов  вы-
                    полнения оператора EXPLAIN PLAN обратитесь к Гла-
                    ве 7 - "Средства  диагностики производительности"
                    - документа "ORACLE RDBMS Руководство по настрой-
                    ке производительности".

         Пример     Рассмотрим следующий оператор EXPLAIN PLAN:

                    EXPLAIN PLAN
                       SET STATEMENT_ID = 'RAISE_IN_CHICAGO'
                       INTO OUTPUT
                       FOR UPDATE EMP
                              SET SAL = SAL * 1.10
                              WHERE DEPTNO =
                                     (SELECT DEPTNO
                                          FROM DEPT
                                          WHERE LOC = 'CHICAGO')

                    Данный оператор выполняет следующие функции:

                         * определяет план  выполнения  специфициро-
                           ванного оператора SELECT
                         * вставляет строки,  описывающие план выпол-
                           нения в указанную таблицу OUTPUT
                         * назначает     всем     строкам     столбца
                           STATEMENT_ID  значение 'RAISE_IN_CHICAGO'.

                    Следующий оператор   SELECT  запрашивает  таблицу
                    OUTPUT и возвращает план выполнения:

                    SELECT OPERATION, OPTIONS, OBJECT_NAME
                       FROM OUTPUT
                       WHERE STATEMENT_ID = 'RAISE_IN_CHICAGO'

                    Результат запроса будет выглядеть следующим обра-
                    зом:

                    OPERATION          OPTIONS      OBJECT_NAME
                    --------------------------------------------

                    FILTER
                    TABLE ACCESS       FULL         EMP
                    TABLE ACCESS       FULL         DEPT

         Связанные  Глава 7 - "Средства диагностики производительнос-
         темы       ти"  -  документа  "ORACLE  RDBMS  Руководство по
                    настройке производительности".
             
                  Справочное руководство по языку SQL        5-98

                                   -- 193 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         FETCH (Встроенный SQL)                        F


         Назначение Выбирает из базы данных одну  строку.  Встроенный
                    оператор SQL FETCH позиционирует курсор на следу-
                    ющую выбираемую строку и назначает элементы теку-
                    щей строки соответствующим host - переменным.

         Предпосылки Предварительно Вы должны открыть курсор, который
                    содержит SQL - оператор SELECT. Для динамического
                    SQL  Вы  должны подготовить (PREPARE) оператор и,
                    возможно,  установить дескрипторы  для  оператора
                    перед выполнением OPEN.

         Синтаксис  EXEC SQL [FOR :host_integer]
                       FETCH cursor_name
                         INTO host_variable_list

                    Для динамического SQL, метод 4:

                    EXEC SQL [FOR :host_integer]
                       FETCH cursor_name
                          USING descriptor

         Ключевые   FOR :host_integer максимальное число строк, выби-
         слова и                     раемых в выходные переменные.
         параметры
                    cursor_name      указывает имя  курсора,  опреде-
                                     ленного оператором       DECLARE
                                     CURSOR, который должен предшест-
                                     вовать в   программе   оператору
                                     FRTCH.

                    INTO             эта фраза определяет host -  пе-
                  host_variable_list ременные, которые   должны быть
                                     определены в программе. Если ка-
                                     кая-либо из  этих  переменных  -
                                     массив, то все host - переменные
                                     должны быть массивами.

                  host_variable_list множество,  состоящее  из  одной
                                     или более  host  -   переменных,
                                     разделенных запятыми (каждая мо-
                                     жет ассоциироваться с индикатор-
                                     ной переменной).

                    descriptor       имя дескриптора,   определенного
                                     ранее оператором DESCRIBE.


         Замечания  Курсор должен  быть  определен (DECLARE) и открыт
         по исполь- (OPEN). На момент выполнения оператора FETCH кур-
         зованию    сор должен быть открыт.  См. ниже описание опера-
                    тора OPEN.


                                   -- 194 --



                    Оператор SELECT, связанный с запросом, может и не
                    содержать фразы INTO; вместо того эта фраза вмес-
                    те со списком host - переменных может быть  вклю-
                    чена в оператор FETCH.
                    
                      Справочник по SQL - операторам         5-99





















































                                   -- 195 --




                    Оператор FETCH считывает строки в активные host -
                    переменные, которые  будут  содержать  результат.
                    Индикаторная переменная устанавливается  в  "-1",
                    если соответствующая host - переменная имеет зна-
                    чение null.

                    Количество выбираемых строк определяется  размер-
                    ностью выходных  переменных  и значением необяза-
                    тельной переменной во фразе FOR.  Например,  если
                    выходная переменная  описана  как  массив размер-
                    ностью 100,  ORACLE попытается выбрать 100 строк.
                    Фраза FOR может быть использована для ограничения
                    выборки до 75 строк.

                    Если в таблице еще остались строки,  курсор пози-
                    ционируется на следующую строку, а выбранные зна-
                    чения присваиваются host - переменным, специфици-
                    рованным фразой INTO оператора FETCH и/или фразой
                    USING оператора OPEN CURSOR.

                    Если курсор в настоящий момент  позиционирован на
                    последнюю строку  в  таблице или за ней,  SQLCODE
                    устанавливается в +100 (или +1403 в  режиме  сов-
                    местимости с Версией 5). В этом случае если выби-
                    раются значения  null,  значения  соответствующих
                    host - переменных не изменяются.

                    Обратите внимание,  что с оператором FETCH не ас-
                    социируется фраза "AT". Соответствующая база дан-
                    ных специфицируется в операторе DECLARE CURSOR.

                    FETCH может двигаться по выбираемым строкам толь-
                    ко в одном направлении. Если Вам надо выбрать од-
                    ну из предыдущих строк, необходимо заново открыть
                    курсор и выбирать строку за строкой.

        Пример     Следующий пример иллюстрирует использование опера-
                    тора FETCH:

                    EXEC SQL FETCH my_cursor INTO :empno, :ename

         Связанные  Операторы PREPARE,  DECLARE CURSOR,  OPEN cursor,
         темы       CLOSE cursor.
                    
                  Справочное руководство по языку SQL        5-100













                                   -- 196 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         Фраза FOR (Встроенный SQL)                    F


         Назначение Ограничивает количество повторений при  работе  с
                    массивами в  операторах SELECT,  DELETE,  INSERT,
                    FETCH и EXECUTE.

         Предпосылки Нет.

         Синтаксис  FOR :host_integer


         Ключевые   FOR :host_integer  при  использовании  фразы  FOR
         слова и                     количество  выполнений оператора
         параметры                   равно минимуму   между   размер-
                                     ностью массивов host -  перемен-
                                     ных (включая  массивы индикатор-
                                     ных переменных) и host_integer.

         Замечания  Фраза FOR  не   обязательна.   Массивы   host   -
         по исполь- переменных могут иметь различную размерность. Ес-
         зованию    ли фраза FOR опущена,  для вычисления  количества
                    обработанных элементов   выбирается   минимальная
                    размерность.

         Пример     Следующий пример демонстрирует использование фра-
                    зы FOR:

                    limit : constant integer := 200
                    ename_1 : name_array (1..100) -- Замечание: массивы
                    ename_2 : name_array (1..50)  -- могут быть разной
                                                  -- размерности
                    EXEC SQL FOR :limit
                       DELETE FROM EMP            -- delete будет
                           WHERE ENAME = :ename_1 -- выполнено
                             AND ENAME = :ename_2 -- 50 раз

         Связанные  Операторы EXECUTE и FETCH.
         темы
                    
                      Справочник по SQL - операторам         5-101















                                   -- 197 --




E    ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                        F

E    GRANT (Форма I)                                    F


         Назначение Предоставить доступ к базе данных

         Предпосылки За исключением случая, когда пользователь меняет
                    свой  собственный  пароль,  требуется  привилегия
                    DBA.

         Синтаксис  GRANT database_priv [,database_priv] ...
                      TO user [,user] ...
                      [ IDENTIFIED BY password [,password] ...]

         Ключевые слова
         и параметры
                 database_priv      специфицируется одна или несколь-
                                    ко   привилегий   базы    данных:
                                    CONNECT, DBA, RESOURCE.
                 user               задается новое  или  существующее
                                    имя пользователя базы данных. Ес-
                                    ли это имя уже  существует, тогда
                                    оператор используется для предос-
                                    тавления привилегий.  Если же та-
                                    кого пользователя нет,  он добав-
                                    ляется         вместе          со
                                    специфицированными привилегиями.
                 password           специфицируется пароль для каждо-
                                    го пользователя. Список пользова-
                                    телей и паролей  должны содержать
                                    одинаковое  количество элементов.
                                    Этот аргумент  используется  либо
                                    для назначения пароля вновь заво-
                                    димым пользователям, либо для из-
                                    менения  у  существующих.  Пароль
                                    обязательно должен быть задан ес-
                                    ли  оператор  GRANT  используется
                                    для добавления привилегий сущест-
                                    вующим пользователям.

         Замечания  Привилегия CONNECT  вводит (устанавливает) в базу
         по исполь- данных нового пользователя.  Имея эту привилегию,
         зованию    он  может подключаться к базе данных и работать с
                    объектами,  к которым он имеет привилегии по дос-
                    тупу. Например - все пользователи могут выполнять
                    запросы по  таблице  словаря  данных  DICTIONARY.
                    Имея привилегию CONNECT,  пользователь может соз-
                    давать обзоры, синонимы и межбазовые связи.
                    Привилегия RESOURCE разрешает пользователю созда-
                    вать объекты базы данных,  включая:  таблицы, ин-
                    дексы,  кластеры и последовательности.  Эта форма
                    оператора GRANT RESOURCE не ограничивает привиле-
                    гии  по  ресурсам для всех табличных пространств.
                    Для работы с  определенными  пространствами  вос-



                                   -- 198 --



                    пользуйтесь Формой II команды GRANT.
         
                  Справочное руководство по языку SQL        5-102


                    Привилегия DBA  позволяет   пользователю   многие
                    стандартные  привилегии,  требуемые  для работы с
                    объектами базы данных. Кроме того, привилегия DBA
                    разрешает   пользователю  выполнять  определенные
                    действия администратора  базы  данных,  например:
                    CREATE TABLESPACE или CREATE ROLLBACK SEGMENT.

                    Имея привилегию DBA, пользователь может:

                    * выполнять  команду  SELECT  для любой таблицы и
                      обзора
                    * создавать объекты для  других пользователей
                    * отменять объекты других  пользователей, включая
                      таблицы, обзоры, синонимы и межбазовые связи
                    * предоставлять различные привилегии
                    * создавать общие (PUBLIC) синонимы и связи
                    * выполнять полный экспорт/импорт базы данных

         Примеры    Для предоставления пользователю SCOTT  с  паролем
                    TIGER доступ к базе и полномочия по созданию таб-
                    лиц, введите следующую команду:

                    GRANT CONNECT, RESOURCE TO SCOTT IDENTIFIED BY TIGER

                    Теперь SCOTT может создавать объекты  в табличном
                    пространстве SYSTEM.

                    Чтобы предоставить  привилегию DBA уже существую-
                    щему пользователю SCOTT,  наберите следующую  ко-
                    манду:

                    GRANT DBA TO SCOTT

                    Задание пароля  здесь  не  обязательно,  так  как
                    SCOTT - уже существующий пользователь  базы  дан-
                    ных.

                    Пользователь SCOTT  может изменить свой пароль на
                    COWSLIP, введя следующую команду:

                    GRANT CONNECT TO SCOTT IDENTIFIED BY COWSLIP

         Связанные  Операторы ALTER USER и REVOKE.
         темы
    
                      Справочник по SQL - операторам         5-103








                                   -- 199 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         GRANT (Форма II)
                                                         F

         Назначение Предоставлять  доступ  к памяти базы данных (таб-
                    личному пространству)  с  возможностью  наложения
                    ограничения на объем памяти, получаемый пользова-
                    телем для работы.

         Предпосылки Требуется привилегия DBA.

         Синтаксис  GRANT RESOURCE [ (quota [K|M]) ]
                      ON tablespace
                      TO { PUBLIC | user [,user] ...}

         Ключевые слова
         и параметры
                 RESOURCE            указывает на  то,   что   список
                                     пользователей   может  создавать
                                     объекты   в   данном   табличном
                                     пространстве.
                 quota               специфицируется как целое число,
                                     представляющее  собой количество
                                     байтов памяти, которое может для
                                     себя  распределить пользователь.
                                     Отсутствие параметра quota озна-
                                     чает  неограниченное использова-
                                     ние  ресурса  табличного  прост-
                                     ранства. Назначение 0 отменяет у
                                     пользователя привилегию RESOURCE
                                     для  данного  табличного  прост-
                                     ранства.  Если за числом следует
                                     "К", оно умножается на 1024, ес-
                                     ли - "М", умножается на 1048576.
                 tablespace          имя существующего     табличного
                                     пространства
                 user                специфицирует существующего  поль-
                                     зователя.  Ключевое  слово  PUBLIC
                                     означает предоставление привилегий
                                     на  ресурсы   данного   табличного
                                     пространства   всем  пользователям
                                     базы данных.


         Замечания  Форма II оператора GRANT предоставляет по сравнению
         по исполь- с Формой I дополнительную  гибкость.  Использование
         зованию    второй  формы  предпочтительнее,  так как DBA имеет
                    дополнительную возможность управления распределени-
                    ем памяти в базе данных.


         Пример     Если Вы - DBA,  то можете предоставить пользователю
                    SCOTT возможность использовать максимально - 10 ме-
                    габайтов памяти в табличном  пространстве  FINANCE,
                    введя следующую команду:


                                   -- 200 --



                    GRANT RESOURCE (10M) ON FINANCE TO SCOTT

         Связанные  Операторы ALTER USER, REVOKE, CREATE SEQUENCE.
         темы
    
                  Справочное руководство по языку SQL        5-104





















































                                   -- 201 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         GRANT (Форма III)                             F


         Назначение Предоставляет различные типы доступа к объектам ба-
                    зы данных,  таким как таблицы,  обзоры и последова-
                    тельности.

         Предпосылки Вы должны быть  владельцем  объекта,  иметь  GRANT
                    OPTION  для этого объекта или иметь привилегию DBA.

         Синтаксис  GRANT {object_priv [,object_priv] ...} | {ALL
                          [PRIVILEGES] } ON [user.]object
                       TO { user | PUBLIC } [,user] ...
                       [ WITH GRANT OPTION ]

         Ключевые слова
         и параметры
                 object_priv         для таблиц  -  одна  из:  ALTER,
                                     DELETE, INDEX,INSERT,REFERENCES,
                                     SELECT, UPDATE.
                                     для обзоров  -  одна из: DELETE,
                                     INSERT, SELECT,UPDATE.
                                     для последовательностей    ALTER
                                     или SELECT.
                                     Привилегии UPDATE  и  REFERENCES
                                     могут  ограничивать  возможность
                                     изменений  и  ссылок для опреде-
                                     ленных столбцов.  Синтаксис пре-
                                     доставления    привилегии    для
                                     столбцов следующий:

                                  GRANT column_priv [,column_priv]
                                   (column [,column]...)
                                      ON [user.]table
                                      TO {user | PUBLIC} [,user] ...
                                      [WITH GRANT OPTION]
                 column              специфицирует столбец таблицы
                 ALL PRIVILEGES      это  ключевое  слово  аналогично
                                     заданию      всех     привилегий
                                     object_priv.
                 ON [user.]object    специфицирует таблицу, обзор или
                                     синоним,  на которые дается при-
                                     вилегия.
                 TO user             указывает пользователя(лей), ко-
                                     торым  предоставляется  привиле-
                                     гия.
                 PUBLIC              представляет всех   пользователей
                                     базы данных,  а также  -  будущих
                                     пользователей,  которым предос-
                                     тавляется указанная привилегия.
                 WITH GRANT          указывает,  что пользователь, ко-
                 OPTION              торому  предоставляется  привиле-
                                     гия, может в свою очередь предос-



                                   -- 202 --



                                     тавлять ее  другим пользователям.
                 
                      Справочник по SQL - операторам         5-105


         Замечания  Владелец всегда  имеет все привилегии по доступу к
         по исполь- таблице.
         зованию    ALTER -  привилегия  на выполнение оператора ALTER
                    TABLE.
                    DELETE - привилегия на удаление строк из таблицы.
                    INDEX - привилегия на создание индекса на таблице.
                    INSERT - привилегия на вставку строк в таблицу.
                    REFERENCES -  привилегия  для  ссылки  на  таблицу
                    внутри ограничения для таблицы или столбца.
                    SELECT - привилегия для запроса по  таблице. Чтобы
                    ограничить  возможности  по  запросу  определенных
                    столбцов таблицы, создайте обзор на основании этих
                    столбцов  и  и  предоставьте привилегию по запросу
                    для этого обзора.
                    UPDATE -  привилегия на модификацию строк в табли-
                    це. Могут быть изменены только те столбцы, которые
                    указаны.
                    Привилегии, предоставленные определенным пользова-
                    телям  не  зависят  от  данных при этом привилегий
                    PUBLIC.  Например,  если Scott  предоставил  Blake
                    привилегию SELECT для таблицы EMP, а также предос-
                    тавил т же привилегию всем  (PUBLIC),  то  отменив
                    привилегию  PUBLIC  он  не  отменит  привилегию  у
                    Blake, хотя последний и является членом PUBLIC.
                    Ограничивать доступ  к  таблице можно прежде всего
                    созданием на ее базе обзоров и предоставления при-
                    вилегий для обзоров.

                    Команда GRANT  для синонимов преобразует их в при-
                    вилегии к соответствующим объектам.

         Последовательности

                    Для использования   последовательности   кем-либо,
                    кроме владельца необходимо предоставление ему при-
                    вилегии SELECT.  Соответственно - привилегия ALTER
                    предназначена  для  выполнения  над последователь-
                    ностью команды ALTER SEQUENCE.  Привилегии по  ис-
                    пользованию последовательности можно передать дру-
                    гому пользователю, указав фразу WITH GRANT OPTION.

                    ORACLE может определить, что Вы предоставили право
                    доступа к последовательности,  а не к таблице, так
                    как все объекты (последовательности,  таблицы, об-
                    зоры,  индексы  и  кластеры)  пользователя  должны
                    иметь различные имена.
    
                  Справочное руководство по языку SQL        5-106






                                   -- 203 --




         Пример     Чтобы предоставить  все права по доступу к таблице
                    BONUS пользователю JONES включая возможность  пре-
                    доставления привилегий другим пользователям,  вве-
                    дите:

                    GRANT ALL ON BONUS TO JONES WITH GRANT OPTION

                    Для разрешения всем пользователям возможность зап-
                    роса  и изменения таблицы GOLF_HANDICAP, наберите:

                    GRANT SELECT, UPDATE ON GOLF_HANDICAP TO PUBLIC

         Пример последовательности

                    Чтобы предоставить   доступ  к  последовательности
                    ESSEQ пользователя ELLY  пользователю  BLAKE,  она
                    должна выполнить следующий SQL - оператор:

                    GRANT SELECT ON ESSEQ TO BLAKE

                    Теперь BLAKE  может генерировать номер из последо-
                    вательности пользователя ELLY такой командой:

                    SELECT ELLY.ESSEQ.NEXTVAL FROM DUAL

         Связанные  Оператор REVOKE.
         темы
                                 
                      Справочник по SQL - операторам         5-107





























                                   -- 204 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         INSERT                                        F


         Назначение Добавление  новых  строк к таблице или к таблице,
                    лежащей в основе обзора.

         Предпосылки Вы должны быть владельцем таблицы или  иметь для
                    нее привилегию INSERT или иметь привилегию DBA.

         Синтаксис  INSERT INTO[user.]table [column [,column] ...)]
                        {VALUES (value [,value]...) | query}

         Ключевые   user             имя пользователя   -   владельца
         слова и                     таблицы.
         параметры
                    table            имя существующей таблицы, обзора
                                     или синонима.  По  умолчанию   -
                                     пользователь, выдавший   команду
                                     INSERT.

                    column           столбец таблицы или обзора.

                    value            значение, соответствующее по по-
                                     зиции столбцу  из  списка столб-
                                     цов. value может быть  выражени-
                                     ем. Если   value  не  NULL,  оно
                                     должно соответствовать по столб-
                                     цу по типу данных.

                    query            оператор SELECT,    возвращающий
                                     столько значений, сколько указа-
                                     но в  списке столбцов.  Не может
                                     содержать фраз ORDER BY и UPDATE.

         Замечания  Оператор INSERT,  применяемый  с  фразой  VALUES,
         по исполь- всегда добавляет  не  более одной строки.  Полям,
         зованию    определяемым columns, назначаются специфицирован-
                    ные значения.   Столбцы,   опущенные   в   списке
                    columns, будут содержать значения NULL и,  следо-
                    вательно, не могут быть описаны NOT NULL.

                    Оператор INSERT,  в  котором  используется запрос
                    (query) вместо фразы VALUES,  может добавлять бо-
                    лее одной  строки  (столько,  сколько  возвращено
                    запросом). После того, как запрос выполнится, его
                    столбцы сопоставляются  по  позиции со столбцами,
                    специфицированными после ключевого  слова  INSERT
                    (или всем,  если ничего не специфицировано). Зап-
                    рос может ссылаться на ту же таблицу,  в  которую
                    строки вставляются.

                    Значение обязательно   должно  быть  сопоставлено
                    всем столбцам, определенным как NOT NULL.



                                   -- 205 --



                    Если в скобках указывается  список  столбцов,  им
                    должны быть  поставлены  в соответствие значения;
                    если нет, то значения должны быть обеспечены всем
                    столбцам. Если  список столбцов опущен,  значения
                    должны указываться в порядке внутреннего располо-
                    жения столбцов таблицы. Эти позиции можно опреде-
                    лить, запросив     обзор      словаря      данных
                    USER_TAB_COLUMNS.

                    Если подзапрос внутри оператора INSERT не возвра-
                    щает строк, в таблицу не будет добавлено ни одной
                    строки.
                    
                  Справочное руководство по языку SQL        5-108













































                                   -- 206 --




         Примеры    Для вставки новой строки в таблицу DEPT введите:

                    INSERT INTO DEPT VALUES(50, 'PRODUCTION',
                                                'SAN FRANCISCO')

                    Для вставки  строки  с шестью столбцами в таблицу
                    EMP, включая значение NULL и числовое  в  научной
                    нотации введите:

                    INSERT INTO ENP (EMPNO,ENAME,JOB,SAL,COMM,DEPTNO)
                       VALUES(7890,'JINKS','CLERK',1.2E3,NULL,40)

                    Для копирования менеджеров и президентов: а также
                    сотрудников, чьи  комиссионные  превышают 25%,  в
                    таблицу BONUS, вве-
                    дите:

                    INSERT INTO BONUS
                       SELECT ENAME, JOB, SAL, COMM
                          FROM EMP
                          WHERE COMM < 25 * SAL
                            OR JOB IN ('PRESIDENT','MANAGER')

         Связанные  Операторы DELETE и UPDATE.
         темы
                    
                      Справочник по SQL - операторам         5-109































                                   -- 207 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         INSERT (Встроенный SQL)                       F


         Назначение Добавление строк к таблице.

         Предпосылки Вы должны быть владельцем таблицы или  иметь для
                    нее привилегию INSERT или иметь привилегию DBA.

         Синтаксис  EXEC SQL [AT dbname] [FOR :host_integer]
                     INSERT INTO [user.]table [(column [,column]...)]
                     {VALUES(values_element [,values_element]...) | query}

         Ключевые   AT dbname        необязательная фраза, определяю-
         слова и                     щая неумалчиваемую базу данных.
         параметры
                    FOR :host_integer  ограничивает  число  элементов
                                     массива, связанных с выполнением
                                     операции INSERT.

                    [user.]table     имя существующей таблицы, обзора
                                     или синонима.  Каждый специфици-
                                     руемый столбец должен  принадле-
                                     жать таблице, указанной во фразе
                                     INTO.

                    VALUES           представляет одну строку  значе-
                                     ний, подлежащую добавлению. Зна-
                                     чениями строки  будут   значения
                                     ключевых слов,  констант,  SQL -
                                     выражений или host - переменных,
                                     специфицированных во фразе. Каж-
                                     дая host - переменная,  специфи-
                                     цированная как  значение, должна
                                     быть описана в программе как пе-
                                     ременная. Количество  значений в
                                     этом списке  должно  быть  равно
                                     количеству имен  столбцов.

                    values_element   может быть:
                                        * host - переменной с необяза-
                                          тельной индикаторной  пере-
                                          менной, либо
                                        * любым выражением

                    query            оператор SELECT,    возвращающий
                                     столько значений, сколько указа-
                                     но в  списке столбцов.  Не может
                                     содержать фраз ORDER  BY  и  FOR
                                     UPDATE.

         Замечания  Если host - переменные в списке VALUES - массивы,
         по исполь- оператор будет выполняться количество раз, равное
         зованию    минимуму среди  размерностей массивов и значением
                    в параметре FOR.


                                   -- 208 --



                    Если фраза WHERE не возвращает  строк,  ни  одной
                    строки в таблицу вставлено не будет и SQLCODE ус-
                    танавливается в +100 (или +1403 - в  режиме  сов-
                    местимости с версией 5).
                    
                  Справочное руководство по языку SQL        5-110





















































                                   -- 209 --




         Режим совместимости с Версией 5

                    ANSI предполагает   стандартный   код    возврата
                    "+100" для ситуации "конец выборки".  Версия 6 по
                    умолчанию также подразумевает +100.  За описанием
                    опции совместимости  с  версией  5,  заставляющей
                    ORACLE возвращать в этой ситуации +1403,  обрати-
                    тесь к "Руководству пользователя по прекомпилято-
                    рам ORACLE".

         Примеры    Следующие примеры иллюстрируют использование  ко-
                    манды INSERT:

                    EXEC SQL FOR :array_size INSERT INTO EMP
                           (ENAME, EMPNO, SAL)
                           VALUES(:ename, :empno, :sal);

                    EXEC SQL INSERT INTO new_emp (ENAME,EMPNO,SAL)
                         SELECT ENAME, EMPNO, SAL FROM EMP
                         WHERE DEPTNO = :deptno;

         Связанные  Оператор EXECUTE; фраза FOR.
         темы
                    
                      Справочник по SQL - операторам         5-111

































                                   -- 210 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         LOCK TABLE                                    F


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

         Предпосылки Необходимо  быть  владельцем  таблицы  или иметь
                    привилегию DBA,  или  иметь   привилегии   ALTER,
                    DELETE, INSERT, SELECT или UPDATE.

         Синтаксис  LOCK TABLE [user.]table [, [user.]table]...
                      IN lockmode MODE [NOWAIT]

         Ключевые   user             владелец таблицы.
         слова и
         параметры  table            существующая таблица,  к которой
                                     Вы имеете доступ.

                    lockmode         один из:ROW SHARE,ROW EXCLUSIVE,
                                     SHARE UPDATE, SHARE, SHARE  ROW
                                     EXCLUSIVE или EXCLUSIVE.

                    NOWAIT           специфицирует, что   ORACLE   не
                                     должен ожидать таблицы, если она
                                     заблокирована другим пользовате-
                                     лем. Вместо   ожидания    ORACLE
                                     возвращает  управление программе
                                     пользователя.

         Замечания  Исключительные блокировки  (exclusive)  разрешают
         по исполь- выполнение запросов по этим таблицам, но запреща-
         зованию    ют любую иную работу.

                    Разделяемые блокировки (share)  разрешают  парал-
                    лельное выполнение запросов, но запрещают модифи-
                    кации таблиц.

                    Блокировки типа     "Row     share"     допускают
                    параллельный доступ к таблице. Они запрещают пол-
                    ьзователям блокирование всей  таблицы  в  исключи-
                    тельном режиме. ROW SHARE и SHARE UPDATE являются
                    синонимами.

                    Блокировки типа "Row  Exclusive"  аналогичны  ROW
                    SHARE, но кроме того - запрещают блокировку в ре-
                    жиме SHARE. Такие блокировки выполняются автомати-
                    чески при изменении, вставке и удалении.

                    Блокировки типа "Share Row Exclusive" используют-
                    ся для просмотра всей таблицы и  позволяют другим
                    пользователям просматривать строки,  но запрещают
                    блокировку таблицы в режиме SHARE  и  модификацию
                    строк.

                                   -- 211 --



                    Блокировки типа "Share Update" являются синонимом
                    ROW SHARE и присутствуют для совместимости с ран-
                    ними версиями ORACLE RDBMS.
                    
                  Справочное руководство по языку SQL        5-112






















































                                   -- 212 --




                    Некоторые типы блокировок можно применять к одной
                    и той  же  таблице одновременно,  другие - только
                    индивидуально. Например,  несколько пользователей
                    могут установить SHARE - блокировки к одной и той
                    же таблице  одновременно,  но   блокировку   типа
                    EXCUSIVE -  только  один пользователь.  За полным
                    описанием и взаимодействием  режимов блокирования
                    обратитесь к Главе 12 - "Непротиворечивость и па-
                    раллельная обработка" документа "ORACLE RDBMS Ру-
                    ководство администратора базы данных".

                    При блокировании   таблицы   Вы  должны  оценить,
                    сколько еще пользователей может к ней обращаться.
                    Однажды заблокированная, таблица остается таковой
                    до окончания транзакции (до выполнения commit или
                    rollback).

                    Если запрос  LOCK  TABLE  не может быть выполнен,
                    например - так как другой пользователь уже забло-
                    кировал таблицу,  LOCK TABLE либо ожидает,  когда
                    запрос сможет быть обслужен,  либо возвращает уп-
                    равление пользователю    (если    специфицировано
                    NOWAIT). Если NOWAIT специфицирован, а ресурс за-
                    резервирован другим пользователем, ORACLE возвра-
                    щает управление пользователю вместе с кодом ошиб-
                    ки.

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

                    Блокировка обзора преобразовывается  в блокировку
                    соответствующей таблицы или таблиц.

         Пример     Для блокировки таблицы EMP в исключительном режи-
                    ме (но с условием - не ожидать, если таблица заб-
                    локирована другим    пользователем),   необходимо
                    ввести:

                    LOCK TABLE EMP IN EXCLUSIVE MODE NOWAIT

         Связанные  Операторы DELETE,   INSERT,    UPDATE,    COMMIT,
         темы       ROLLBACK,  SAVEPOINT.  Глава 12 - "Непротиворечи-
                    вость и параллельная обработка" документа "ORACLE
                    RDBMS Руководство администратора базы данных".
               
                      Справочник по SQL - операторам         5-113










                                   -- 213 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         NOAUDIT (Форма I)                             F


         Назначение Частично  или полностью отменяет эффект предшест-
                    вующего системного оператора AUDIT.

         Предпосылки Эта форма оператора NOAUDIT нуждается в привиле-
                    гии DBA.

         Синтаксис  NOAUDIT {system_option [,system_option]...| ALL}
                       WHENEVER [NOT] SUCCSESSFUL]

         Ключевые   system_option    одна из следующих системных  оп-
         слова и                     ций: CONNECT,DBA,NOT  EXISTS или
         параметры                   RESOURCE.

                    ALL              представляет все опции сразу.

                    WHENEVER         специфицирует, что   регистрация
                    [NOT]            должна быть выключена для успеш-
                    SUCCSESSFUL      ного или  неудачного  обращения.
                                     Если данная  фраза опущена,  ре-
                                     гистрация отключается  как   для
                                     успешного, так  и для неудачного
                                     обращения.

         Замечания  Полное описание системных опций  См.  в  описании
         по исполь- оператора AUDIT.
         зованию
         Примеры    Для прекращения регистрации успешного запроса ре-
                    сурсов необходимо ввести:

                    NOAUDIT RESOURCE WHENEVER SUCCSESSFUL

         Связанные  Операторы AUDIT Формы I и GRANT.
         темы
                                                    
                  Справочное руководство по языку SQL        5-114


















                                   -- 214 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         NOAUDIT (Форма II)                            F


         Назначение Частично  или полностью меняет на противоположный
                    эффект предшествующего оператора AUDIT или  умал-
                    чиваемых опций регистрации доступа к таблицам.

         Предпосылки Вы должны быть владельцем объекта, с которым ра-
                    ботает NOAUDIT.  Для изменения опций регистрации,
                    устанавливаемых по умолчанию (DEFAULT), необходи-
                    мо иметь привилегию DBA.

         Синтаксис  NOAUDIT {option [,option]... | ALL}
                       ON {object | DEFAULT }
                       [WHENEVER [NOT] SUCCSESSFUL}

         Ключевые   option           Для таблиц приемлемы следующие опции
         слова и                     AUDIT,COMMENT,DELETE,GRANT,INDEX,
         параметры                   INSERT,LOCK,RENAME,SELECT,UPDATE.
                                     Для обзоров приемлемы следующие опции
                                     AUDIT,COMMENT,INSERT,DELETE,GRANT,
                                     LOCK,RENAME,SELECT,UPDATE.
                                     Для последовательностей приемлемы
                                     опции ALTER,AUDIT,GRANT,SELECT.
                                     Для синонимов приемлемы те  же  оп-
                                     ции, что и для таблиц (так как все
                                     действия реально производятся с таб-
                                     лицами).

                    ALL              обозначает все приемлемые опции.

                    object           существующая таблица,  обзор или
                                     синоним,  владельцем которого Вы
                                     являетесь.

                    DEFAULT          ссылается на  умалчиваемые опции
                                     регистрации доступа,  устанавли-
                                     ваемые администратором базы дан-
                                     ных для всех  вновь  создаваемых
                                     таблиц. DEFAULT  не  применим  к
                                     обзорам и последовательностям.

                    WHENEVER         специфицирует, что   регистрация
                    [NOT]            должна быть выключена для успеш-
                    SUCCSESSFUL      ного или  неудачного  обращения.
                                     Если данная  фраза опущена,  ре-
                                     гистрация отключается  как   для
                                     успешного, так  и для неудачного
                                     обращения.

         Замечания  Команда NOAUDIT указывает ORACLE  прекратить  ре-
         по исполь- гистрацию использования таблиц или обзоров. Буду-
         зованию    чи оператором DDL, NOAUDIT также записывает теку-
                    щую транзакцию.


                                   -- 215 --



         Примеры    Для прекращения   регистрации  попыток  изменения
                    таблицы EMP введите:

                    NOAUDIT UPDATE ON EMP

                    Для прекращения всякой регистрации неудачных  по-
                    пыток работы  с  таблицей EMP выполните следующий
                    оператор:

                    NOAUDIT ALL ON EMP WHENEVER NOT SUCCSESSFUL

         Связанные  Операторы AUDIT Форма II и GRANT.
         темы
                                                     
                      Справочник по SQL - операторам         5-115












































                                   -- 216 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         OPEN cursor (Встроенный SQL)                  F


         Назначение Распределяется  ранее  явно  объявленного курсор.
                    Затем выполняется запрос из объявления  курсора с
                    подставлением имен host - переменных, назначенных
                    фразой USING во фразу запроса WHERE.

         Предпосылки Перед открытием курсор должен быть объявлен.

         Синтаксис EXEC SQL OPEN cursor_name [USING host_variable_list]

                    Для динамического SQL, метод 4:

                   EXEC SQL OPEN cursor_name [USING DESCRIPTOR_name]


         Ключевые   cursor_name      указывает на ранее объявленный с
         слова и                     помощью оператора DECLARE CURSOR
         параметры                   курсор. См.  описание этого опе-
                                     ратора выше в этой главе.

                    USING              список host - переменных,  кото-
                    host_variable-list рые будут подставляться в опера-
                                     тор из DECLARE  CURSOR.  Подста-
                                     новка   выполняется  позиционно:
                                     имена переменных во  фразе USING
                                     обычно отличаются от имен, зада-
                                     ваемых в операторе PREPARE.

                    descriptor_name  ссылка на  результат предыдущего
                                     оператора DESCRIBE.


         Замечания  Оператор OPEN cursor определяет активное множест-
         по исполь- во строк  и  инициализирует курсор в начало этого
         зованию    множества. Значения host -  переменных  в  момент
                    открытия подставляются в оператор.  Оператор OPEN
                    cursor действителен только при включении в  прик-
                    ладную программу.

                    Все курсоры  при старте программы закрыты.  Кроме
                    того, их можно закрыть явно, выдав оператор CLOSE.

                    Оператор OPEN cursor распределяет курсор и  пози-
                    ционирует  его непосредственно перед первой стро-
                    кой активного множества.  В данный момент  строки
                    не выбираются, это делается в операторе FETCH.

                    После открытия  курсора входные host - переменные
                    не проверяются до повторного открытия.  Чтобы из-
                    менить какую-либо  входную  host  - переменную и,
                    следовательно, активное   множество,   необходимо



                                   -- 217 --



                    вновь открыть курсор.
                    
                  Справочное руководство по языку SQL        5-116


                    Курсор можно открывать заново без предварительно-
                    го  закрытия.  Этим  можно  сэкономить на анализе
                    оператора,  если он не изменился.  Для более под-
                    робной информации обратитесь к опциям прекомпиля-
                    тора HOLD_CURSOR и RELEASE_CURSOR  в "Руководстве
                    программиста по прекомпиляторам ORACLE".

                    Если используется Динамический SQL, метод 4 (опе-
                    ратор DESCRIBE),  host - переменные,  на  которые
                    ссылаются через дескриптор, подставляются в SQL -
                    оператор, определенный в объявлении курсора.

         Пример     Приводимый ниже пример показывает типичную после-
                    довательность использования оператора OPEN cursor.
                    Вы должны объявить курсор,  открыть его,  выбрать
                    информацию и, наконец, закрыть курсор:

                    EXEC SQL DECLARE c CURSOR
                       FOR SELECT ename, empno, job, sal
                              FROM emp
                              WHERE deptno=30;

                    EXEC SQL OPEN c;

                    example: loop
                      EXEC SQL FETCH c INTO :ename, :empno, :job,
                                                    :sal:sal_ind;
                      if sqlca.sqlcode=oracle.error.not_found then
                          exit loop example;
                      end if;

                    EXEC SQL CLOSE c;

         Связанные  Операторы PREPARE,  DECLARE CURSOR, FETCH и CLOSE
         темы       cursor.
             
                      Справочник по SQL - операторам         5-117

















                                   -- 218 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         PREPARE (Динамический встроенный SQL)         F


         Назначение Выполняет грамматический разбор SQL  - оператора,
                    задаваемого в host - переменной.

         Предпосылки Нет.

         Синтаксис  EXEC SQL PREPARE statement_name
                      FROM {:host_string | string_literal}

         Ключевые   statement_name   назначает имя разбираемому  опе-
         слова и                     ратору.  Если это имя уже назна-
         параметры                   чено  существующему   оператору,
                                     предыдущее  назначение будет пе-
                                     рекрыто. Это имя идентификатора,
                                     используемое   системой  ORACLE,
                                     оно не является host -  перемен-
                                     ной.

                    :host_string     host -   переменная,  содержащая
                                     любой SQL - оператор, подлежащий
                                     разбору (подготовке  к  выполне-
                                     нию). Эта   переменная    должна
                                     иметь тип  varchar,  string и им
                                     подобные.

                    string_literal   строчный литерал,     содержащий
                                     текст SQL - оператора.


         Замечания  Оператор PREPARE выполняет разбор SQL - оператора
         по исполь- и дает  ему имя.  SQL - оператору не предшествует
         зованию    фраза EXEC SQL,  в то время как оператору PREPARE
                    - предшествует.  Оператор  может  быть оператором
                    SELECT с фразой FOR  UPDATE.  См.  ниже  описание
                    оператора SELECT.

                    host -  переменные,  перечисленные в host_string,
                    являются шаблонами.  Действительные имена host  -
                    переменных назначаются   фразой  USING  оператора
                    OPEN cursor (входные) или фразой  INTO  оператора
                    FETCH (выходные). Подстановка выполняется позици-
                    онно.

                    SQL - оператор подготавливается только однажды, а
                    выполняться может произвольное число раз.

         Пример     Следующий пример  иллюстрирует использование опе-
                    ратора PREPARE:

                    my_string : string(1..80);
                    get(my_string);

                    EXEC SQL PREPARE s FROM :my_string;

                                   -- 219 --



                    EXEC SQL EXECUTE s;

         Связанные  Операторы DECLARE  CURSOR,  OPEN  cursor,  FETCH,
         темы       CLOSE cursor.
             
                  Справочное руководство по языку SQL        5-118





















































                                   -- 220 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         RENAME                                        F

         Назначение Переименование таблицы, обзора или синонима.

         Предпосылки Необходимо  быть  владельцем  переименовываемого
                    объекта.

         Синтаксис  RENAME old TO new

         Ключевые   old              старое имя таблицы,  обзора  или
         слова и                     синонима.
         параметры
                    new              вновь назначаемое  имя  таблицы,
                                     обзора, синонима.


         Замечания  Этот оператор меняет имя таблицы,  обзора или си-
         по исполь- нонима с "old" на "new".  old - имя объекта, под-
         зованию    лежащее замене,  а new - новое его имя (предпола-
                    гается, что new -  правильное  в  системе  ORACLE
                    имя, не используемое другими объектами).

                    Привилегии и индексы,  принадлежащие старому име-
                    ни, переносятся на новое.

                    С помощью этой команды  невозможно переименование
                    столбцов. Один  из способов такого переименования
                    - это выполнение оператора вида: CREATE TABLE ...
                    AA SELECT...  Например,  таблица STATIC,  имеющая
                    всего один столбец - OLDNAME,  должна быть  пере-
                    создана с  именем  столбца NEWNAME.  Это делается
                    следующим образом:

                    CREATE TABLE TEMPORARY (NEWNAME)
                       AS SELECT OLDNAME FROM STATIC

                    DROP TABLE STATIC

                    RENAME TEMPORARY TO STATIC

         Пример     Для изменения  имени  таблицы  с DEPT на EMP_DEPT
                    необходимо выполнить следующую команду:

                    RENAME DEPT TO EMP_DEPT

         Связанные  Операторы CREATE SYNONYM,  CREATE  TABLE,  CREATE
         темы       VIEW.
             
                      Справочник по SQL - операторам         5-119







                                   -- 221 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         REVOKE (Форма I)                              F


         Назначение Отмена привилегий базы данных для одного или нес-
                   кольких пользователей.

         Предпосылки Требуется привилегия DBA.

         Синтаксис  REVOKE { [CONNECT] [,RESOURCE] [,DBA] }
                      FROM user [,user] ...

         Ключевые   user             существующий пользователь.
         слова и    CONNECT,         привилегии, которые  должны быть
         параметры  RESOURCE,        отменены. Значение этих аргумен-
                    DBA              тов в точности совпадает  с  ко-
                                     мандой GRANT.


         Замечания  Команда REVOKE завершается успешно даже  если  не
         по исполь- существует привилегий, которые пытались отменить.
         зованию    REVOKE не влияет на какие-либо объекты,  владель-
                    цем которых является данный пользователь.  Напри-
                    мер,  отмена привилегии  CONNECT  у  пользователя
                    Blake никак не повлияет на его таблицу SALES. Ос-
                    тальные пользователи, когда-либо получившие право
                    доступа  к этой таблице,  могут продолжать ее ис-
                    пользовать. Если Blake вновь получит доступ к ба-
                    зе данных,  за ним сохранится право собственности
                    на старые объекты.  Из этого следует рекомендация
                    удалять объекты пользователя, прежде чем отменять
                    привилегию CONNECT у этого пользователя.

         Пример     Чтобы отменить   у    пользователей    SCOTT    и
                    JOLLY_ROGER полномочия RESOURCe, введите:

                    REVOKE RESOURCE FROM SCOTT, JULLY_ROGER

         Связанные  Операторы AUDIT и GRANT.
         темы

















                                   -- 222 --



                  Справочное руководство по языку SQL        5-120


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         REVOKE (Форма II)                             F



         Назначение Отмена привилегии на использование памяти в опре-
                   деленном табличном пространстве.

         Предпосылки Необходима привилегия DBA.

         Синтаксис  REVOKE space_privilege ON tablespace
                       FROM user [,user] ...

         Ключевые   space_privilege  Это привилегия   RESOURCE.  Пока
         слова и                     это только привилегия на исполь-
         параметры                   зование памяти.
                    tablespace       существующее табличное    прост-
                                     ранство,  в котором пользователю
                                     была  предоставлена   привилегия
                                     RESOURCE.
                    user             существующий пользователь, ранее
                                     получивший  привилегию  RESOURCE
                                     для  данного  табличного  прост-
                                     ранства.

         Замечания  Эта форма  команды REVOKE отбирает у пользователя
         по исполь- возможность создавать объекты в указанном таблич-
         зованию    ном пространстве. Никакие другие объекты не могут
                    создаваться  пользователем  в  данном   табличном
                    пространстве,  а  существующие не могут распреде-
                    лять дополнительную память.

         Пример     Чтобы отобрать у пользователя  SCOTT  возможность
                    создавать   объекты   в   табличном  пространстве
                    SYSTEM, выполните SQL - оператор:

                    REVOKE RESOURCE ON SYSTEM FROM SCOTT

                    Предыдущий оператор эквивалентен следующему:

                    GRANT RESOURCE(0) ON SYSTEM TO SCOTT

         Связанные  Операторы AUDIT форма II и GRANT форма II.
         темы
    
                      Справочник по SQL - операторам         5-121









                                   -- 223 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         REVOKE (Форма III)                            F


         Назначение Отмена привилегий пользователя по доступу к опре-
                   деленным таблицам,  обзорам и последовательностям.

         Предпосылки Вы должны быть владельцем  объекта  базы  данных
                   или  иметь  предоставленную  привилегию на его ис-
                   пользование WITH GRANT OPTION.

         Синтаксис  REVOKE { object_priv [,object_priv]... | ALL }
                       ON [user.]object
                       FROM { user | PUBLIC } [,user]...

         Ключевые   object_priv      для таблиц  -  одна  из:  ALTER,
         слова и                     DELETE, INDEX,INSERT,REFERENCES,
         параметры                   SELECT, UPDATE.
                                     для обзоров-   одна   из:DELETE,
                                     INSERT, SELECT,UPDATE.
                                     для последовательностей    ALTER
                                     или SELECT.
                    ALL              отмена всех привилегий
                    ON object        специфицируется имя таблицы, об-
                                     зора или последовательности, для
                                     которых Вы отменяете привилегии.
                                     Таблица  должна  быть либо вашей
                                     собственной,  либо  на  нее  Вам
                                     должна быть предоставлена приви-
                                     легия WITH GRANT OPTION.
                    user             имя пользователя,  у которого Вы
                                     отбираете    привилегии.    FROM
                                     PUBLIC отменяет привилегии, пре-
                                     доставленные соответствующим об-
                                     разом,  но  не отбирает привиле-
                                     гий,     данных      конкретному
                                     пользователю.
                    PUBLIC           имеет в виду всех существующих и
                                     будущих пользователей.

         Замечания  Эта форма  команды отменяет привилегии на таблицы
         по исполь- или обзоры у одного или нескольких пользователей.
         зованию    Если пользователь имеет полномочия к определенной
                    таблице,  предоставленные более чем одним пользо-
                    вателем,  он  будет их сохранять,  пока каждый из
                    этих пользователей не отменит  привилегий. Отмена
                    привилегий  у пользователя автоматически отменяет
                    их и у пользователей, которым он передал привиле-
                    гии.

    
                  Справочное руководство по языку SQL        5-122





                                   -- 224 --




         Пример     Для отмены у пользователя JONES привилегий по из-
                    менению таблицы DEPT10, введите:

                    REVOKE ALTER, DELETE, INSERT, UPDATE
                    ON     DEPT10
                    FROM JONES

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

                    REVOKE ALL ON DEPT10 FROM PUBLIC

                    Для отмены привилегий пользователя BLAKE на  пос-
                    ледовательность ESSEQ, Elly должна набрать коман-
                    ду:

                    REVOKE ALL ON ESSEQ FROM BLAKE

                    Если у Elly есть привилегия DBA,  она может отме-
                    нить  привилегию  SELECT  для последовательности,
                    которой владеет Blake,  у пользователя Scott сле-
                    дующим оператором:

                    REVOKE SELECT ON BLAKE.ESSEQ FROM SCOTT

         Связанные  Операторы AUDIT и GRANT.
         темы
                                            

KOAP Open Portal 2000