1

我有一个存储 xml 的长数据类型的 oracle 列。现在我想在这个专栏上执行EXTRACTEXTRACTVALUE功能。为此,我需要将 long 转换为 xmltype。但是当我这样做时:xmltype.createxml(long_col_name),我得到:illegal use of long datatype
我知道 long 已被弃用,但它是遗留数据库。所以...

编辑:根据建议,我尝试了:

SELECT 
EXTRACTVALUE( XMLTYPE (to_lob(long_col_name)), xpath_str) as value_date
FROM table_1;

我得到:

[Error] Execution (2: 24): ORA-00932: inconsistent datatypes: expected - got LONG
4

2 回答 2

1

检查这个链接 很好的例子

简而言之,您需要执行以下操作:

with xml as 
    (select dbms_xmlgen.getxmltype('select long_col_name from table_1') as xml from dual)

    select extractValue(xs.object_value,'/ROW/long_col_name') as value_date
    from xml x, table(xmlsequence(extract(x.xml,'/ROWSET/ROW'))) xs
    where extractValue(xs.object_value,'/ROW/long_col_name') like '%xxxx%';

希望这可以帮助。

于 2016-09-08T11:05:05.147 回答
0

您最好将 LONG 列类型迁移到 CLOB。将来也会让你受益。然后您可以在 CLOB 列上使用 xmltype。

于 2012-08-17T17:21:59.223 回答