从XML中提取值

时间:2012-12-13 06:08:13

标签: sql xml oracle extract-value

我正在使用此查询从XML

中提取值
SELECT extractvalue(column_value, '/TransactionLimitDTO/idTxn') "TxnId"
FROM TABLE(XMLSequence(XMLType(mg.limits)
            .extract('/ModifyTransactionLimitRequestDTO/transactionLimit/TransactionLimitDTO'))) t,Mstgloballimitspackage mg

但是,我收到了一个错误:

  

ORA-00904:“MG”。“LIMITS”:标识符无效

你能告诉我怎么解决这个问题?

我试过了:

 SELECT extractvalue(column_value, '/TransactionLimitDTO/idTxn') "TxnId"
 FROM TABLE(XMLSequence(XMLType(select mg.limits from Mstgloballimitspackage mg)
                          .extract('/ModifyTransactionLimitRequestDTO/transactionLimit/TransactionLimitDTO'))) t

但这也行不通。

当我在mg.limits的位置放置一个完整的XML文件时,我得到一个太长的字符串文字作为参数错误。

每当我在mg.limits

的位置放置一小段XML时,它就能正常工作

1 个答案:

答案 0 :(得分:1)

这将有效:

 SELECT extractvalue(t.column_value, '/TransactionLimitDTO/idTxn') "TxnId"
     FROM Mstgloballimitspackage mg,
          TABLE(XMLSequence(XMLType(mg.limits,'')
                            .extract('/ModifyTransactionLimitRequestDTO/transactionLimit/TransactionLimitDTO'))) t
相关问题