Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712083
  • 博文数量: 94
  • 博客积分: 1937
  • 博客等级: 上尉
  • 技术积分: 1618
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 18:46
个人简介

专注数据库开发管理

文章分类

全部博文(94)

文章存档

2015年(1)

2014年(2)

2013年(19)

2012年(32)

2011年(10)

2010年(30)

分类: Oracle

2013-09-25 11:36:55

-- 例1:
DECLARE
    v_xmlstr VARCHAR2(1000);    
    v_xml    XMLTYPE;    
    v_title  VARCHAR2(50);    
    v_language  VARCHAR2(50);    
    v_body  VARCHAR2(50);    
BEGIN    
    v_xmlstr := '    
                        
                        This IS title.    
                        JavaScript    
                        
                    I am BODY.     
                 ';    
    v_xml := XMLTYPE(v_xmlstr);    -- 生成XML
    
    SELECT EXTRACTVALUE(VALUE(t),'/html/head/title')     
           ,EXTRACTVALUE(VALUE(t),'/html/head/LANGUAGE')     
           ,EXTRACTVALUE(VALUE(t),'/html/body')     
           INTO v_title ,v_language ,v_body    
    FROM TABLE(XMLSEQUENCE(EXTRACT(v_xml, '/html'))) t;    -- 提取XML节点值
    
    dbms_output.put_line(v_title);    
    dbms_output.put_line(v_language);
    dbms_output.put_line(v_body);    
END;    
/
结果:
This IS title.
JavaScript
I am BODY.


-- 例2:
DECLARE
    TYPE v_languageset IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
    v_language      v_languageset;
    v_xmlstr VARCHAR2(1000);
    v_xml    XMLTYPE;
BEGIN    
    v_xmlstr := '
                    JavaScript
                    VBScript
                    JAVA
                 ';
    v_xml := XMLTYPE(v_xmlstr);
    
    -- 多个值放在表集合中
    SELECT EXTRACTVALUE(VALUE(t),'/LANGUAGE')
           BULK COLLECT INTO v_language
    FROM TABLE(XMLSEQUENCE(EXTRACT(v_xml, '/html/LANGUAGE'))) t;
    
    FOR i IN v_language.first .. v_language.last LOOP
        dbms_output.put_line(v_language(i));
    END LOOP;
    
END;
/
结果:
JavaScript
VBScript
JAVA

注意:XML是区分大小写的


-- The End --
阅读(8767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~