powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix XML и именованый ROW type
2 сообщений из 2, страница 1 из 1
Informix XML и именованый ROW type
    #37208638
xelainis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги!

Захотелось чуда. Получиьть результат запроса как XML. В Informix есть соответствующие процедуры, например: getxmlelem.

В документации написано, что запрос SELECT genxmlelemclob(employee, “employee”) FROM employee; дас результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<employee>
<row>
<givenname>Roy</givenname>
<familyname>Connor</familyname>
<address>
<address1>123 First Street</address1>
<city>Denver</city>
<state/>CO</state>
<zipcode>80111</zipcode>
</address>
<phone>303-555-1212</phone>
</row>
</employee>

Обратите внимание на содержание блока <address></address>. На просторах сайта IBM вычитал, что такое можно получить если использовать именованные row type в таблице.

Пробую:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create row type address_t(
city varchar( 20 ),
zip char( 6 )
);
create table ab(
fio varchar( 20 ),
address address_t,
phone varchar( 10 )
);
insert into ab values('P.Dmitriev',row('Moscow','123321')::address_t,'7766554');
Но результат не радует:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<ab>
<row>
<fio>P.Dmitriev</fio>
<ROW>
<city>Moscow</city>
<zip>123321</zip>
</ROW>
<phone>7766554</phone>
</row>
</ab>

может кто-нибудь сталкивался и подскажет в чем тут загвоздка?
...
Рейтинг: 0 / 0
Informix XML и именованый ROW type
    #37209372
xelainis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решена.
Как оказалось надо использовать не именованный row type, а multiset. Приблизительно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table ab (
   fio char( 10 ),
   address multiset(row(city char( 20 ),zip char( 6 )) not null),
   phone char( 10 )
);

insert into ab values('P.Dmitriev',"multiset{ROW('Citi1','zipzip')}",'7766554');

select genxmlelem(ab,'ab') from ab;

И тогда получаем ожидаемый результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<ab>
   <row>
      <fio>P.Dmitriev</fio>
      <address>
         <city>Citi1               </city>
         <zip>zipzip</zip>
      </address>
      <phone> 7766554    </phone>
   </row>
</ab>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Informix XML и именованый ROW type
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]