增强PL/SQL中查询CLOB或者LONG类型的可读性

本文介绍了解决CLOB或LONG字段查询时可读性问题的方法,包括使用TO_LOB、PL/SQL、DBMS_XMLGEN等技术手段,并推荐通过XML格式转换增强数据查询能力。

一般CLOG或者LONG类型的字段,查询出来是如下所示,影响可读性:


而且我们无法在子查询中查询LONG/CLOB字段:



我们可以从下面的连接中找到方法:

http://www.oracle-developer.net/display.php?id=430

There are several workarounds we can use to solve our sample problem. We will examine each of the following in turn:

  • TO_LOB;
  • PL/SQL;
  • DBMS_XMLGEN;
  • Dictionary Long Application (oracle-developer.net utility).
个人偏向于第三种,先转换为XML格式的数据,再使用Oracle中处理XML相关的函数进行查询,示例如下:

WITH xml AS
 (SELECT dbms_xmlgen.getxmltype('SELECT *
                                 FROM user_tab_subpartitions a 
                                 WHERE  a.table_name = ''CSS_CUST_ACCT_ITEM''') AS xml
  FROM   dual)
SELECT *
FROM   (SELECT EXTRACTVALUE(xs.object_value, '/ROW/TABLE_NAME')      AS table_name,
               EXTRACTVALUE(xs.object_value, '/ROW/TABLESPACE_NAME') AS tablespace_name,
               EXTRACTVALUE(xs.object_value, '/ROW/HIGH_VALUE')      AS high_value
        FROM   xml x, TABLE(xmlsequence(extract(x.xml, '/ROWSET/ROW'))) xs) v
WHERE  v.high_value = 512;


这样我们不仅增强了CLOB/LONG类型字段的可读性,同时还能对数据进行子查询。

XMLSEQUENCE相关的使用说明如下:

http://www.stanford.edu/dept/itss/docs/oracle/10gR2/server.102/b14200/functions226.htm


XMLSequence divides up an XML document with multiple elements into VARRAY single-element documents

就是说XMLSEQUENCE将XML文档中的各个节点的多个元素分为只存放单个元素的数组

the TABLE keyword instructs Oracle Database to consider the collection a table value that can be used in the FROM clause of the subquery

最终是以表的方式展现出来,并实现能够在from子句中使用子查询。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值