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



Pdf көрінісі
бет170/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   166   167   168   169   170   171   172   173   ...   177
Объект-столбец
 (column object) занимает ровно один столбец табли-
цы.  Для  создания  таблицы,  содержащей  объект-столбец,  нужно  просто 
указать  объектный  тип  в  качестве  типа  столбца  в  операторе CREATE 
TABLE.  Допускается  в  такой  таблице  наличие  и  скалярных  типов.  Для 
примера создадим таблицу BOOK_DELIVERY на базе описанного выше 
типа BOOK_T: 
CREATE  TABLE  BOOK_DELIVERY  
(SALESMAN  VARCHAR2(15),  
QUANTITY  NUMBER(7), 
BOOK  BOOK_T); 
Таблица BOOK_DELIVERY  состоит  из  трех  столбцов,  один  из  кото-
рых является объектным типом. В данном случае ввести информацию в 
таблицу без конструктора нельзя, т. е. для ввода новых значений необхо-
димо использовать следующую конструкцию: 
INSERT INTO BOOK_DELIVERY 
VALUES ('Иванов И. И.', 5, BOOK_T(10, 'Казаки', 'Толстой Л.', 5000)); 
В противном случае будет выдана ошибка. 
Информацию из таблицы можно выбрать обычным способом с помо-
щью оператора SELECT: 
SELECT * FROM  BOOK_DELIVERY; 
На экран будет выведено: 
Иванов И. И.   5   BOOK_T(10, 'Казаки', 'Толстой Л.', 5000)); 
То  есть  столбец BOOK_T рассматривается  как  единое  целое,  обра-
титься непосредственно к какому-то отдельному элементу нельзя. 
Кроме  того,  можно  сослаться  на  объект-столбец  в  условии WHERE, 
указав перечень значений атрибутов этого объекта. Ниже приведен при-
мер использования оператора SELECT. 
SELECT SALESMAN FROM BOOK_DELIVERY 
WHERE BOOK = BOOK_T(10, 'Казаки', 'Толстой Л.', 5000); 
То же самое касается операторов DELETE, UPDATE. 
Отметим, что в блоке PL/SQL для выполнения данного оператора для 
таблицы необходимо указать псевдоним.  
 
194


 
DECLARE 
    CURRENT_BOOK  BOOK_T; 
BEGIN 
     SELECT  BOOK  INTO CURRENT_BOOK   
     FROM BOOK_DELIVERY  D 
     WHERE  D.BOOK.ID = 10;  
END; 
Иногда  на  практике  такие  таблицы,  в  которых  имеются  объекты-
столбцы, учитывая, что существует таблица, где эти строки присутству-
ют,  строят  следующим  образом.  В  столбце  указывается  не  объектный 
тип, а ссылка на этот тип. 
CREATE  TABLE  BOOK_DELIVERY_M  
(SALESMAN  VARCHAR2(15),  
QUANTITY  NUMBER(7), 
BOOK  REF  BOOK_T); 
Для  вставки  информации  в  такую  таблицу  используют  следующую 
конструкцию: 
INSERT INTO BOOK_DELIVERY_M 
SELECT 'Иванов И. И.', 5, REF(B) 
FROM BOOK_S  B 
WHERE ID = 10; 
Строка с ID = 10 имеет уникальный идентификатор, который извлека-
ется  с  помощью  операции REF(B) и  размещается  в  столбце.  В  данном 
случае  также  необходимо  использование  синонима.  Для  просмотра  ин-
формации таблицы можно использовать следующий оператор: 
SELECT * FROM BOOK_DELIVERY_M; 
Но  в этом случае на экран выведется вместо третьего атрибута очень 
длинное число – идентификатор объекта. Поэтому для выдачи информа-
ции лучше использовать следующий вариант: 
SELECT SALESMAN,  QUANTITY  ,  
DEREF(BOOK)  FROM  BOOK_DELIVERY_M; 
В результате получим следующую строку: 
Иванов И. И.   5   BOOK_T(10, 'Казаки', 'Толстой Л.',5000)); 
В данном случае операция DEREF возвращает объект по ссылке. Если 
необходимо изменить информацию в таблице, то оператор UPDATE за-
писывают в следующем виде: 
 
195


 
UPDATE BOOK_DELIVERY_M  SET SALESMAN = 'Петров П. П.' 
WHERE  DEREF(BOOK) = BOOK_T(10, 'Казаки', 'Толстой Л.', 5000); 


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




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

    Басты бет