Oracle XML

krl
Дата: 04.10.2004 09:20:22
Есть запрос

with s1 as 
(
select 	/*to_clob(*/
	XMLElement("ATTR", XMLAttributes('OPERTYPE' 	as "CODE", RPOData.OperType 	as "VALUE")) OPERTYPE,
	XMLElement("ATTR", XMLAttributes('OPERDATE' 	as "CODE", RPOData.OperDate 	as "VALUE")) OPERDATE,
	XMLElement("ATTR", XMLAttributes('BARCODE' 		as "CODE", RPOData.BarCode  	as "VALUE")) BARCODE,
	XMLElement("ATTR", XMLAttributes('COMMENT'	 	as "CODE", 'I01.00;'||RPOData.StrComment||
		(case when COUNTRYFROM IS NOT NULL then ';CountryFrom='||RPOData.CountryFrom 	ELSE '' end)||				(case when INTERNUM IS NOT NULL then ';InterNum='||RPOData.InterNum 					ELSE '' end)	as "VALUE"))	COMMENT_,		     
	XMLElement("ATTR", XMLAttributes('POSTMARK' 	as "CODE"), 
		                              XMLElement("VAL", XMLAttributes('1' as "INDEX", decode(bitand(RPOData.PostMark, 1),		 1,	1,0) as "VALUE" )),
		                              XMLElement("VAL", XMLAttributes('2' as "INDEX", decode(bitand(RPOData.PostMark, 2),		 2,	1,0) as "VALUE" )),
		                              XMLElement("VAL", XMLAttributes('10' as "INDEX", decode(bitand(RPOData.PostMark,512),512,	1,0) as "VALUE" ))
	) PostMark,
	to_char(RPOData.OperDate, 'DD.MM.YYYY HH24:MI:SS') EXECDT  --      
from table(pk_xxxexport.XXXExport('02/01/2004','03/01/2004')) RPOData
where rownum < 100
), s2 as
(
select XMLElement("OPR", XMLAttributes('ÓÒÎ×ÍÈÒÜ' 	as "REFER", 
                                               '0' 					as "UNDO",
												 s1.EXECDT 		as "EXECDT",
		 trunc(to_date(s1.EXECDT, 'DD.MM.YYYY HH24:MI:SS' ), 'DD') as "DOPER"),
               OperType,
 	  OperDate,
  	  BarCode,
	COMMENT_,
	PostMark) OPR 
from s1
)
select 
        to_clob((XMLElement("MSG"  , XMLAttributes('EXPOPR' as "FORMAT",
	                                  'A' as "SENDER",
	                                  'B' as "RECIPIENT",
	to_char(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') as "TIME"
			 )   ,
	XMLAGG(value(e)))
	)) msg 
from s2, TABLE(XMLSequence(Extract(s2.OPR, '/'))) e

Он выдает XML без начального (<?xml version >) тега.


Вопросы:

1) Как получить начальный тег, при том, что SYS_XMLGEN дает дополнительный, совершенно ненужный тег (ROWSET).

2) Обратите внимание, что в запросе s1 есть ограничение по выводу строк (<100). Почему то иначе возникает ошибка ORA-19011, хотя to_clob стоит в итоговом запросе, где в строку преобразуется. В чем может быть дело?
Если использовать не to_clob, а getClobValue(), то вообще возникает 600 ошибка (внутренняя ошибка Oracle).

Заранее спасибо.