如何在XMLTABLE中使用条件语句

时间:2017-10-23 18:49:52

标签: xml oracle xpath xmltable

我想知道是否可以在带有XPATH的Oracle XMLTABLE结构中使用if或条件语句。出于设计原因,我被限制在XMLTABLE中仅使用xpath。我在XQUERY中使用了if语句,它在过去运行良好。

这是我想要实现的一个例子

SELECT X.* 
FROM emp, 
XMLTABLE ('*:Foo/*[contains(name(), "example")]' passing doc as "d" 
   COLUMNS
   Y varchar2(4000) PATH 'if (/*:Hotel) then ''Hotel'' else if (/*:Hostel) then ''HOSTEL'' else null' 
) AS X

这是我收到的错误消息:

ORA-19109: RETURNING keyword expected
19109. 00000 -  "RETURNING keyword expected"
*Cause:    The keyword RETURNING was missing.
*Action:   Specify the RETURNING keyword.
Error at Line: 24 Column: 69

1 个答案:

答案 0 :(得分:1)

似乎我需要使用引号而不是2个单撇号,所以现在这是正确的方法:

SELECT X.* 
FROM emp, 
XMLTABLE ('*:Foo/*[contains(name(), "example")]' passing doc as "d" 
   COLUMNS
   Y varchar2(4000) PATH 'if (/*:Hotel) then "Hotel" else if (/*:Hostel) then "HOSTEL" else null' 
) AS X