【问题标题】:ORA-00917-missing comaORA-00917-缺少逗号
【发布时间】:2013-03-05 18:07:35
【问题描述】:
SELECT 
    XMLELEMENT (
        DECODE ('RF', 'RF', 'Credit', 'Sale'), xmlattributes ('01234567' AS "id")
    ) AS Order
FROM 
    DUAL

当我运行上述查询时,我收到ORA-00917-missing coma 错误。

【问题讨论】:

  • 这个,DECODE ('RF', 'RF', 'Credit', 'Sale') 真的没有意义。您正在检查字符串RF。如果是RF(始终为真),则将其替换为Credit,否则将其替换为Sale。您也可以在其中写Credit 并保持原样。或者,RF 是否意味着是一个列?在这种情况下,请删除引号。

标签: oracle


【解决方案1】:

不确定你要做什么,但如果你想要一个动态元素名称,你需要使用EVALNAME

SELECT 
    XMLELEMENT (
          evalname(       
        DECODE ('RF', 'RF', 'Credit', 'Sale')),
      xmlattributes ('01234567' AS "id")
    ).getstringval() AS "Order"
FROM 
    DUAL

Here is a sqlfiddle demo

【讨论】:

  • 如果退款订单,那么标签应该是信用否则销售我的要求是这样的 RFNF
  • @ChaitanyaKandukuri 这就是 A.B.Cade 向您展示的。添加 OrderType 很简单,只需添加一个 xmlforest 例如:sqlfiddle.com/#!4/d41d8/8410
  • @ChaitanyaKandukuri,a- 你的桌子怎么样? b- 这不是一个有效的 XML - 不能有这样的元素 <id="01234567">。你的意思是这样的吗? sqlfiddle.com/#!4/68902/2
  • 您好我正在尝试通过创建一个过程来创建一个 XML 输出文件,并将该过程用于并发请求。请找到下面的包过程代码。但现在它出错了“原因:FDPSTP 由于 ORA-19202 失败:XML 处理中发生错误 ORA-22806:不是对象或 REF”
  • 下面的程序代码给出错误 XMLELEMENT( evalname(Decode((select ORDER_TYPE FROM My_orders WHERE order_id = mo.order_id),''RF'',''Credit'',''Sale '')).getstringval(), XMLFOREST (mo.order_id AS "orderId", mo.amount AS "amount",' || '''ecommerce''' || ' AS "orderSource" ))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2013-10-07
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
相关资源
最近更新 更多