首页 > 解决方案 > XMLTABLE 有原子值问题

问题描述

我对 XMLTABLE 很陌生,这可能是一个非常愚蠢的问题。

对于以下查询:

   Select T1.*
    From XmlTable ('$d/Order/OrderHeader'                                      
         Passing '
         <Order>
            <OrderHeader>
                <OrderId>a</OrderId>

            </OrderHeader>
         </Order>'  As "d"  
   Columns                                                                          
   OrderId Char(7) Path    'OrderId'           


   ) as T1;

我收到一个错误

 SQL 状态:10507 供应商代码:-16011 消息:[SQ16011] XPath 表达式中的中间步骤表达式的结果包含原子值

我不确定为什么会这样。如果有人可以指导我解决问题,那就太好了

标签: xmlibm-midrange

解决方案


尝试显式解析 XML 而不是传递字符串值:

SELECT T1.*
FROM XMLTABLE (
  '$d/Order/OrderHeader'
  PASSING XMLPARSE (DOCUMENT '
    <Order>
      <OrderHeader>
        <OrderId>a</OrderId>
      </OrderHeader>
    </Order>') AS "d"  
  COLUMNS
  OrderId CHAR(7) PATH 'OrderId'
) AS T1;

推荐阅读