|
Справочное руководство по языку 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.
темы
|