Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет168/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   164   165   166   167   168   169   170   171   ...   177
Объект-строка
 (row object) занимает  целую  строку  таблицы  базы 
данных, причем в строке не должно содержаться других полей. Таблица, 
состоящая из таких строк, называется объектной (object table) и создается 
при помощи следующего оператора: 
CREATE TABLE имя_таблицы OF объектный_тип; 
где имя_таблицы – это имя создаваемой таблицы, а объектный_тип – тип 
объекта-строки.  В  качестве  примера  создадим  объектную  таблицу 
BOOK_S на базе объектного типа BOOK_T: 
CREATE    TABLE    BOOK_S  OF   BOOK_T; 
 
190


 
В  каждой  строке  таблицы BOOK_S  находится  экземпляр  типа 
BOOK_T, являющийся строкой, атрибуты которой определены в объект-
ном типе BOOK_T. Следовательно, в эту таблицу можно вводить только 
объекты.  Ниже  приведен  ряд  примеров  ввода  объектов  в  таблицу 
BOOK_S.  Как  указывалось  выше  вставка  новых  значений  в  таблицу 
осуществляется через функцию-конструктор
INSERT  INTO  BOOK_S 
VALUES (BOOK_T(10, 'Казаки', 'Толстой Л.',5000)); 
INSERT  INTO  BOOK_S 
VALUES (BOOK_T(20, 'Война и мир', 'Толстой Л.',15000)); 
Объектные таблицы очень похожи на обычные реляционные таблицы. 
Поэтому  при  заполнении  объектной  таблицы  в  целях  сопряжения  с 
обычными  реляционными  таблицами,  которые  были  до  этого  в  БД,  до-
пускается  и  обычная  вставка  при  условии,  что  в  списке  атрибутов  нет 
других встроенных объектных типов. К примеру, можно ввести данные в 
таблицу BOOK_S с помощью следующего оператора INSERT:  
INSERT  INTO  BOOK_S 
VALUES(30, 'Дюна', 'Герберт Ф.', 8000); 
Во время такой модернизации различные реляционные таблицы мож-
но  создать  заново  как  объектные,  причем  существующие  приложения 
изменять вовсе не обязательно.  
Операции DML, выполняемые  над  таблицами,  в  которых содержатся 
объекты-строки, абсолютно идентичны реляционным операциям DML. 
В операторах UPDATE и DELETE можно указывать объекты в каче-
стве переменных привязки. В этом случае операции DELETE и  UPDATE 
можно  выполнять,  как  над  обычными  реляционными  таблицами.  Пока-
жем это на примерах: 
UPDATE  BOOK_S  SET  TITLE = ’Дети Дюны’  WHERE  ID = 30; 
DELETE  FROM  BOOK_S  WHERE  ID = 30; 
В  запросе  объект-строка  может  вести  себя  по-разному.  Если  просто 
написать оператор вывода информации, перечислив все нужные атрибу-
ты, то система будет рассматривать их как обычный набор атрибутов, а 
не объект, поскольку объектная таблица описывается точно так же, как и 
реляционная.  Поэтому  для  выбора  объекта  нужно  использовать  опера-
цию VALUE. 
Операция VALUE (значение) возвращает объект. В качестве аргумен-
та VALUE используется переменная корреляции, которая в данном кон-
 
191


 
тексте представляет собой псевдоним таблицы. Использование VALUE и  
обычного варианта запроса иллюстрируется в следующем примере: 
DECLARE 
CURRENT_ID               BOOK_S.ID%TYPE; 
CURRENT_TITLE        BOOK_S.TITLE%TYPE; 
CURRENT_AUTHOR   BOOK_S.AUTHOR%TYPE; 
CURRENT_PRICE         BOOK_S.PRICE%TYPE; 
CURRENT_BOOK         BOOK_T;  
BEGIN 
SELECT *  INTO CURRENT_ID, CURRENT_TITLE, 
CURRENT_AUTHOR, CURRENT_PRICE  FROM BOOK_S  
WHERE ID = 10; 
SELECT VALUE(B)  INTO CURRENT_BOOK  FROM 
BOOK_S  B  WHERE    ID    =   10;  
      END;  
При формировании объектной таблицы, где объекты – строки, каждо-
му объекту присваивается идентификатор. Идентификатор объекта — 
это уникальный указатель на устойчивый объект конкретного типа,  ко-
торый  однозначно  определяет  объект.  Идентификаторы  объектов  уни-
кальны  по  всему  пространству  БД Oracle: два  объекта  не  могут  иметь 
один  и  тот  же  идентификатор.  Если  даже  объект  удаляется,  этот  номер 
никакому  другому  объекту  никогда  не  присваивается.  Идентификатор 
объекта – это внутрисистемная структура; общее число идентификаторов 
составляет 2
128
 различных значений. 
Идентификаторы  объекта  имеются  только  у  объектов-строк  и  строк 
объектных  представлений.  Если  объект  имеет  идентификатор,  на  этот 
объект  можно ссылаться.  Ссылка на объект описывается  в разделе объ-
явлений  или  указывается  в  описании  таблицы  и  выглядит  следующим 
образом: 
имя_переменной REF объектный_тип, 
где имя_переменной – это имя ссылки на объект, а объектный_тип – оп-
ределенный ранее объектный тип.  
Ссылки  на  объекты  можно  указывать  в  блоках PL/SQL и  в SQL-
операторах, используя при этом операции VALUE и REF. 


Достарыңызбен бөлісу:
1   ...   164   165   166   167   168   169   170   171   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет