如何解析Oracle PL / SQL中的简单XML片段并将其加载到全局临时表
发布时间:2020-12-12 16:23:40 所属栏目:百科 来源:网络整理
导读:在SQL Server中,很容易解析包含由属性构造的简单 XML片段的vachar变量,并将其加载到临时表中 – 请参阅下面的示例: declare @UpdateXML VARCHAR(8000)set @UpdateXML='ArrayOfRecords Record Field01="130" Field02="1700" Field03="C" / Record Field01="1
在SQL Server中,很容易解析包含由属性构造的简单
XML片段的vachar变量,并将其加载到临时表中 – 请参阅下面的示例:
declare @UpdateXML VARCHAR(8000) set @UpdateXML='<ArrayOfRecords> <Record Field01="130" Field02="1700" Field03="C" /> <Record Field01="131" Field02="1701" Field03="C" /> <Record Field01="132" Field02="1702" Field03="C" /> </ArrayOfRecords>' DECLARE @hdoc int EXEC sp_xml_preparedocument @hdoc OUTPUT,@UpdateXML INSERT INTO #tblTemp( [Field01],[Field02],[Field03] ) SELECT * FROM OPENXML(@hdoc,'//ArrayOfRecords/Record') WITH ( Field01 int,Field02 int,Field03 char(1) ) EXEC sp_xml_removedocument @hdoc 是否有一个简单的示例在Oracle PL / SQL中与此相同? 在Oracle中有一个DBMS_XMLSTORE包,但它需要使用ROWSET和ROW元素的特定规范格式的XML片段. DBMS_XMLSTORE似乎不适用于XML属性. 此外,我不能100%确定是否需要创建XML片段的XSD并在我可以使用任何其他PL / SQL XML工具/查询之前在Oracle数据库上注册它. 谢谢! Oracle的XML数据库实现有一些令人困惑的令人眼花缭乱的选项,并且在任何给定的场景中并不总是清楚(至少对我而言).在这种特殊情况下,你想要的是 XMLTable(),它将XQuery变成一组行.首先我们创建一个表. SQL> create table t23 2 (field01 number 3,field02 number 4,field03 char(1) 5 ) 6 / Table created. SQL> 然后我们填充它… SQL> declare 2 x varchar2(2000) := '<ArrayOfRecords> 3 <Record Field01="130" Field02="1700" Field03="C" /> 4 <Record Field01="131" Field02="1701" Field03="C" /> 5 <Record Field01="132" Field02="1702" Field03="C" /> 6 </ArrayOfRecords>'; 7 begin 8 insert into t23 9 select * 10 from xmltable 11 ( '/ArrayOfRecords/Record' 12 passing xmltype (x) 13 columns f1 number path '@Field01' 14,f2 number path '@Field02' 15,f3 char(1) path '@Field03' 16 ) 17 ; 18 end; 19 / PL/SQL procedure successfully completed. SQL> 最后我们证明它有效…… SQL> select * from t23 2 / FIELD01 FIELD02 F ---------- ---------- - 130 1700 C 131 1701 C 132 1702 C SQL> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |