Updatexml и пустой тэг

Migelle
Дата: 28.03.2011 15:20:20
Пробую проапдейтить xml с пустым тэгом, и получаю:
select updatexml (xmltype('<a><b>z</b></a>'),'/a/b/text()','xxx').GetstringVal() a,
       updatexml (xmltype('<a><b></b></a>' ),'/a/b/text()','yyy').GetstringVal() b
from dual

----------------------
        A		B
<a><b>xxx</b></a>	<a><b/></a>

А как добавить значение тэга в B?
Data corruption
Дата: 28.03.2011 15:53:51
Migelle,

updateXML(xmltype('<a><b></b></a>'),'/a/b',xmltype('<b>yyy</b>')).GetstringVal()
?
Migelle
Дата: 28.03.2011 16:15:05
Это подходит для простого xml, но когда есть атрибуты становится все сложнее.
xmltype('<a><b bb1="11" bb2="22"></b></a>')
bdsm_sql
Дата: 29.03.2011 10:14:02
как-то так
WITH t AS (
SELECT XMLTYPE('<a><b>z</b></a>') x FROM dual UNION ALL
SELECT XMLTYPE('<a><b c="d"></b></a>') x FROM dual --UNION ALL
)
SELECT
(CASE WHEN XMLEXISTS('/a/b/text()' PASSING x) THEN
  UPDATEXML(x, '/a/b/text()', 'ля-ля') ELSE
  APPENDCHILDXML(x, '/a/b', XMLTYPE('<x>ля-ля</x>').EXTRACT('/x/text()'))
END).getStringVal()
FROM t
Migelle
Дата: 01.04.2011 00:18:58
bdsm_sql,

Спасибо! то что нужно.