Оператор create schema
Схемы создаются с помощью оператора CREATE SCHEMA. Синтаксис этого оператора ясен из примера:
CREATE SCHEMA AUTHORIZATION USER1
CREATE TABLE EMP
(ID NUMBER NOT NULL,
NAME VARCHAR2(10) NOT NULL)
CREATE TABLE CUST
(ID NUMBER NOT NULL,
NAME VARCHAR2(10) NOT NULL)
GRANT SELECT ON TBLl TO USER2
GRANT SELECT ON TBL2 TO USER2
Ключевое слово AUTHORIZATION - только в Oracle.
Удаление схем
Схема может быть удалена из базы данных с помощью оператора DROP SCHEMA. Этот оператор имеет две опции. Применение первой из них, опции RESTRICT, заставит сервер базы данных при удалении схемы выдать сообщение об ошибке, если эта схема содержит какие-нибудь объекты. Чтобы такое сообщение не появлялось, следует применить другую опцию, а именно опцию CASCADE. Помните о том, что при удалении схемы из базы данных удаляются все связанные с этой схемой объекты.
Синтаксис соответствующего оператора следующий.
DROP SCHEMA ИМЯ__СХЕМЫ { RESTRICT | CASCADE }
В схеме может не оказаться никаких объектов потому, что объекты (например, таблицы) могут быть удалены с помощью соответствующих команд SQL (например, DROP TABLE). В некоторых реализациях языка предлагается процедура или команда для удаления пользователя, которую можно использовать также и для удаления схемы. Если в используемой вами реализации SQL команда DROP SCHEMA не поддерживается, вы можете удалить схему, удалив из базы данных пользователя, являющегося владельцем схемы.
Блок кода pl/sql
PL/SQL является расширением SQL, предлагаемым Oracle. Подобно расширению Transact-SQL, PL/SQL является процедурным языком, структурированным в виде логических блоков программного кода. Блок PL/SQL состоит из трех разделов, два из которых необязательны. Первый раздел представляет собой раздел DECLARE (раздел объявлений) и яшшется необязательным. В разделе DECLARE содержатся переменные, курсоры и константы. Второй раздел — это раздел PROCEDURE (раздел выполняемых операторов), состоящий из условных команд и операторов SQL. Именно в этом разделе осуществляется управление всем блоком, поэтому раздел PROCEDURE является в блоке обязательным. Третий раздел называется разделом EXCEPTION (разделом исключительных состояний), и в нем задается реакция программы на ошибки выполнения и заданные программистом исключительные ситуации. Раздел EXCEPTION в блоке является необязательным.
Вот пример оператора PL/SQL.
DECLARE
CURSOR EMP_CURSOR IS SELECT EMP_ID, LAST_NAME, FIRST_NAME, MID_INIT
FROM EMPLOYEE_TBL;
EMP_REC EMP_CURSOR%ROWTYPE;
BEGIN
OPEN EMP_CURSOR;
LOOP
FETCH EMP_CURSOR INTO EMP_REC;
EXIT WHEN EMP_CURSOR%NOTFOUND;
IF (EMP_REC.MID_INIT IS NULL) THEN
UPDATE EMPLOYEE_TBL
SET MID_INIT = 'X'
WHERE EMP_ID = EMP_REC.EMP_ID;
COMMIT;
END IF;
END LOOP;
CLOSE EMP_CURSOR;
END;
В данном операторе представлены два из упомянутых выше разделов блока — разделы DECLARE и PROCEDURE. Сначала с помощью запроса объявляется курсор EMP_CURSOR. После этого объявляется переменная EMP_REC, чей тип данных совпадает с типом данных (%ROWTYPE) столбцов объявленного курсора. Первым шагом в разделе PROCEDURE (начинающемся оператором BEGIN) является открытие курсора. После этого для просмотра всех записей курсора используется оператор LOOP, заканчивающийся ключевыми словами END LOOP. %NOTFOUND – это атрибут, возвращаемый курсором в состоянии TRUE, если строка не найдена Для всех строк курсора, в которых средний инициал имени служащего пропущен (т. е. равен NULL), данные таблицы EMPLOYEE_TBL должны быть обновлены. Обновление состоит в добавлении среднего инициала 'X'. После этого изменения подтверждаются, и курсор, наконец, закрывается.
Создание хранимой процедуры Oracle PL/SQL, команда CREATE PROCEDURE, вызов хранимой процедуры (http://www.askit.ru/custom/oracle10sql/m19/lab19_02.htm )
