Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / достать значение из XML / 4 сообщений из 4, страница 1 из 1
03.07.2017, 11:37
    #39481566
sergnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
достать значение из XML
хочу написать функцию, которая вытаскивает значение (значения) тегов из XML
для начала:
select unnest(xpath('prm1/row/text()', '<parameters><prm1><row>1</row><row>2</row></prm1></parameters>'::XML))
результат:
1
2

Всё OK
теперь функция:

CREATE FUNCTION dba.get_xml_element( v_xml VARCHAR,v_tag varchar(50))
RETURNS refcursor
as $$
declare rc refcursor;
begin
OPEN rc FOR select unnest(xpath((v_tag||'/row/text()'), v_xml::xml)) ;
return rc;
end;
$$ LANGUAGE plpgsql

OK

select dba.get_xml_element('<param><prm1><row>1</row><row>2</row></prm1></param>','prm1')

результат:

<unnamed portal 1>

что бы это значило?
...
Рейтинг: 0 / 0
03.07.2017, 11:50
    #39481588
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
достать значение из XML
sergnn,

так refcursor это и есть.
...
Рейтинг: 0 / 0
03.07.2017, 11:55
    #39481601
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
достать значение из XML
Код: sql
1.
2.
3.
4.
5.
CREATE FUNCTION dba.get_xml_element( v_xml VARCHAR,v_tag varchar(50)) 
RETURNS setof xml
as $$
 select unnest(xpath((v_tag||'/row/text()'), v_xml::xml)) ;
$$ LANGUAGE sql;



Или если вам потом дописывать ещё логику, то пример на plpgsql
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION dba.get_xml_element( v_xml VARCHAR,v_tag varchar(50)) 
RETURNS setof xml
as $$
begin
 return query select unnest(xpath((v_tag||'/row/text()'), v_xml::xml)) ;
end;
$$ LANGUAGE plpgsql;
...
Рейтинг: 0 / 0
03.07.2017, 11:58
    #39481604
sergnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
достать значение из XML
Спасибо
работал с Оракулом, Sybase
но тут всё несколько по другому...
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / достать значение из XML / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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