|
enum in oracle
|
|||
---|---|---|---|
#18+
Прошу помощи, уважаемые форумчане. Задача стара как мир - принять и разобрать XML в соответствии с известной схемой. Последовательность совершаемых действий: 1) регистрирую схему (с созданием типов, но без создания таблиц) 2) преобразовываю XML в объект в соответствии с зарегестрированной схемой: ReqXml.toobject(ReqObj,Schema_Rec.Schema_Url,'main_teg') 3) дальше анализирую значения полей сформированного объекта и раскидываю нужные мне по своим таблицам. При регистрации схемы одно из необходимых мне полей в объекте заводится с типом "XDB"."XDB$ENUM_T": TYPE "x_type" AS OBJECT ("SYS_XDBPD$" "XDB"."XDB$RAW_LIST_T","x_field" "XDB"."XDB$ENUM_T") В исходном XSD файле данный элемент описан как: ... <xs:element name="x_field"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="xxx"/> <xs:enumeration value="yyy"/> </xs:restriction> </xs:simpleType> </xs:element> ... Проблема в том, что не могу понять как в PLSQL обратиться к значению (значениям) поля x_field: что-то вроде my_ReqObj."x_field". Прошу помочь советом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 09:17 |
|
enum in oracle
|
|||
---|---|---|---|
#18+
SBK755, dba_type_methods --> lookupValue() ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 09:55 |
|
enum in oracle
|
|||
---|---|---|---|
#18+
-2-, а можно попросить пример использования метода или ткнуть носом в документацию, где это можно увидеть. Был бы очень признателен Вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 13:13 |
|
enum in oracle
|
|||
---|---|---|---|
#18+
Без манипуляций на права юзеров SYS и XDB вы не сможете сделать прямой select полей указанных Вами типов. Прямое обращение к полям типов проходит только при построении индексов. Единственный быстрый тип select(а) - наподобие SELECT l.column_1, d.column_2 FROM EAIST4T l , XMLtable ( '$t/Data' passing l.OBJECT_VALUE AS "t" columns p1 XMLTYPE PATH 'Tender' ) i , XMLtable ( '$n/Tender' passing i.p1 AS "n" columns p2 XMLTYPE PATH 'Lots', tendregnum PATH 'TenderRegNumber', tendname PATH 'Name', publdate PATH 'PublicationDate' ) d и т.д. Если для вас это важно, пишите на почту в профиль. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2011, 08:53 |
|
enum in oracle
|
|||
---|---|---|---|
#18+
В общем, оказалось, что в гугле до сих пор нет решения, а есть только намеки и два предложения писать в личку (одно из них в этом топике выше, другое на community.oracle.com). И я сегодня тоже уперся в этот енум, как коллеги восьмью годами ранее. Поэтому чтобы никто ломал голову сообщаю - решение простое, просто абсолютно лобовое: Енум надо превратить в VARCHAR2 (для xsd:string). Заранее, до загрузки схемы, для тех элементов, которые содержат xsd:enumeration и превращаются в XDB$ENUM_T , надо указать аннотацию SQLType = VARCHAR2 вручную или с помощью процедуры dbms_xmlschema_annotate.setSQLType(много_аргументов). Да, тем не менее, напоминаю, что использовать сгенерированные при загрузке схемы типы напрямую Oracle не разрешает! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 23:39 |
|
|
start [/forum/topic.php?fid=52&fpage=33&tid=1880761]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 440ms |
0 / 0 |