我有一个包含XML数据的简单表
create table emp
(dept xmltype)
其中的数据
insert into emp values ('<dept bldg="101">
<employee id="901">
<name>
<first>John</first>
<last>Doe</last>
</name>
<office>344</office>
<salary currency="USD">55000</salary>
</employee>
</dept>')
insert into emp values ('<dept bldg="103">
<employee id="902">
<name>
<first>Peter</first>
<last>Pan</last>
</name>
<office>216</office>
<phone>905-416-5004</phone>
</employee>
</dept>')
insert into emp values ('<dept bldg="114">
<employee id="903">
<name>
<first>Mary</first>
<last>Jones</last>
</name>
<office>415</office>
<phone>905-403-6112</phone>
<phone>647-504-4546</phone>
<salary currency="USD">64000</salary>
</employee>
</dept>')
当我在下面执行时,会抛出ORA-19100:PASSING或RETURNING关键字预期
select XMLCAST(XMLQUERY('$INPT_XML/dept/employee/office/text()' PASSING dept
AS "INPT_XML") AS VARCHAR(20))
FROM emp;
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
不确定你在做什么,但是你的错误告诉你错误,你需要RETURNING CONTENT条款。
SELECT
XMLCAST(XMLQUERY('$INPT_XML/dept/employee/office/text()' PASSING dept AS "INPT_XML" RETURNING CONTENT) AS VARCHAR2(20) )
这 EMP;
给我这个输出:
XMLCAST(XMLQUERY('$I
--------------------
344
216
415
关于Oracle XML here
的好消息,操作方法答案 1 :(得分:0)
问题在于错过了RETURNING CONTENT条款。
似乎Oracle强制使用它。
https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions236.htm#SQLRF06209
RETURNING CONTENT表示XQuery评估的结果是XML 1.0文档或符合XML 1.0语义的文档片段。