我想知道是否可以在带有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
答案 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