Классика баз данных - статьи

       

с данными адаптер СН стратегии


При непосредственной работе с данными адаптер СН стратегии осуществляет динамическую трансляцию базовых операций манипулирования объектами того или иного типа в соответствующую последовательность вызовов PL/SQL функций и процедур. На следующем примере можно проследить логику генерации подобных последовательностей. Аналогичным образом реализуются операции модификации, удаления и поиска объектов на основе хранимых идентификаторов, объектных типов и маршрутов навигации.

-- Фрагмент исходного файла с данными в формате ISO-10303-21 #10=POSTALADDRESS(.OFFICE., $,
('25, B.Kommunisticheskaya str., Moscow, 109004, Russia')); #11=ORGANIZATION(770901001, 'ISP RAS', $,
('Research','Development','Teaching'), (#10));

-- Фрагмент PL/SQL скрипта для занесения данных в БД DECLARE type Agg_Level_Type is table of Aggregates.agg_type%TYPE index by binary_integer; type Agg_Level_ID is table of Aggregates.agg_id%TYPE index by binary_integer; l_Sch_ID Schemas.sch_id%TYPE; l_Ent_ID Entities.ent_id%TYPE; l_Ins_ID Instances.ins_id%TYPE; l_Atr_ID Attributes.atr_id%TYPE; l_Agg_Type Agg_level_Type; l_Agg_ID Agg_level_ID; … BEGIN … l_Ent_ID := lb_entity.get_entity('Organization',l_Sch_ID); l_Ins_ID := lb_instance.init_instance (l_Ent_ID,l_MO_ID,l_Rep_ID,'#11'); lb_instance.init_attribute_list(l_Ent_ID); l_Atr_ID := lb_entity.get_attribute(1); lb_instance.put_simple_attribute_i (l_Ins_ID,l_Atr_ID,770901001); l_Atr_ID := lb_entity.get_attribute(2); lb_instance.put_simple_attrib_s (l_Ins_ID,l_Atr_ID,'ISP RAS'); l_Atr_ID := lb_entity.get_attribute(4); l_Agg_Type(1) := lb_defined_types.get_type ('ActorRole',l_Sch_ID); l_Agg_ID(1) := lb_instance.put_aggregate(l_Agg_Type(1), NULL,NULL,l_Atr_ID,l_Ins_ID,l_MO_ID,NULL,NULL); lb_instance.put_element_s(0,'Research', NULL,l_Agg_ID(1),NULL); lb_instance.put_element_s(1,'Development', NULL,l_Agg_ID(1),NULL); lb_instance.put_element_s(2,'Teaching', NULL,l_Agg_ID(1),NULL); l_Atr_ID := lb_entity.get_attribute(5); l_Agg_Type(1) := lb_defined_types.get_type ('Address',l_Sch_ID); l_Agg_ID(1) := lb_instance.put_aggregate (l_Agg_Type(1),NULL,NULL,l_Atr_ID,l_Ins_ID, l_MO_ID,NULL,NULL); lb_instance.put_association (l_Ins_ID,l_Atr_ID,'#10',0,l_Agg_ID(1),NULL);

l_Ent_ID := lb_entity.get_entity ('PostalAddress',l_Sch_ID); l_Ins_ID := lb_instance.init_instance (l_Ent_ID,l_MO_ID,l_Rep_ID,'#10'); lb_instance.init_attribute_list(l_Ent_ID); l_Atr_ID := lb_entity.get_attribute(1); lb_instance.put_simple_attribute_e (l_Ins_ID,l_Atr_ID,'office'); l_Atr_ID := lb_entity.get_attribute(3); l_Agg_Type(1) := lb_defined_types.get_type ('Label',l_Sch_ID); l_Agg_ID(1) := lb_instance.put_aggregate(l_Agg_Type(1), NULL,NULL,l_Atr_ID,l_Ins_ID,l_MO_ID,NULL,NULL); lb_instance.put_element_s(0,'25, B.Kommunisticheskaya str.,Moscow, 109004, Russia',NULL,l_Agg_ID(1),NULL); … END;


Содержание  Назад  Вперед