【问题标题】:What is an XMLTABLE什么是 XMLTABLE
【发布时间】:2010-11-16 09:25:15
【问题描述】:
  1. 什么是 XMLTABLE。

  2. 请告诉我创建 XMLTABLE 的语法

  3. 从 XMLTABLE 中获取记录的示例查询。

  4. 在创建 XMLTABLE 之前是否需要任何数据库级别的先决条件。

【问题讨论】:

    标签: oracle oracle10g


    【解决方案1】:

    XMLTABLE 可能就是你要找的东西。

    【讨论】:

      【解决方案2】:

      函数XMLTABLE 用于将xml 对象转换为单独的字段。 但是你可能想构造一个带有xml内容的表,这不一样。

      您可以创建一个包含 xml 内容的额外列的表

      CREATE TABLE mytable (my_id NUMBER PRIMARY KEY, my_xml XMLType);
      

      然后在查询中使用 xml 内容。

      INSERT INTO mytable VALUES (1,xmltype('<myxml id="D45"/>'));
      
      SELECT my_id
            ,my_xml.extract('/myxml@id').getstringval()
      from mytable
      

      完成。

      OK 回复第二条评论:

      所以你确实想使用 XMLTABLE 函数, 您的错误表明您根本没有获取该文件。 因此,您需要制作您的网址以正确加载它。 我用嵌入式 xml 构建的一个测试用例是:

       1  SELECT seq
       2        , id
       3        , content
       4  FROM XMLTABLE('/xml/myrec'
       5        PASSING XMLType('<xml>'
       6                      ||'<myrec id="D12"><content>hello1</content></myrec>'
       7                      ||'<myrec id="D13"><content>hello2</content></myrec>
       8                      ||</xml>')
       9        COLUMNS   seq FOR ORDINALITY
      10                , id VARCHAR2(100) PATH '@id'
      11                , content VARCHAR2(100) PATH 'content'
      12*      ) AS my_table
      

      输出是:

       SEQ ID    CONTENT
      ---- ----- --------------------
         1 D12   hello1
         2 D13   hello2
      

      【讨论】:

      • 嗨,xquery 1 不起作用并给我以下错误: SQL> xquery 1 SP2-0042: unknown command "xquery 1" - 其余行被忽略。可以告诉我原因吗?
      • 从 XMLTABLE('/prices/book' 传递 HTTPURITYPE 'file:/D:/Sanjay_Thakur/book.xml').getXML() 列 TITLE 中选择 TITLE、SOURCE、to_number(PRICE) 作为 PRICE varchar2(100) path '/book/title', SOURCE varchar2(100) path '/book/source', PRICE varchar2(40) path '/book/price' ) 这个查询给我以下错误:[1]: (错误):ORA-29273:HTTP 请求失败 ORA-06512:在“SYS.UTL_HTTP”,第 1674 行 ORA-29261:错误参数 ORA-06512:在“SYS.HTTPURITYPE”,第 34 行 ORA-06512:在“SYS. HTTPURITYPE",第 97 行你能告诉我原因吗?
      • 您好 Andrew Russell,感谢您的回复。你上面写的测试用例在我这边工作得很好。此外,根据我给出的示例(如我之前的评论中所述),如果我直接在浏览器中提供路径(即'file:/D:/Sanjay_Thakur/book.xml)作为文件,文件确实会打开存在于所述路径中。双击文件也会打开它。只是想知道为什么我上面给出的例子不起作用。它给了我指向函数'getXML()'的错误“错误参数”。
      • 在浏览器中直接使用路径和oracle数据库能看到是不一样的。 url 是本地 url “file:”,utl_http 包和 HTTPURITYPE 只针对 http: 协议。您需要找到另一种将文件放入数据库的方法,阅读将 xml 文件加载到数据库中的内容 (stackoverflow.com/questions/998055/…)。
      猜你喜欢
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2016-02-28
      • 2013-10-31
      • 1970-01-01
      • 2012-03-08
      • 2019-02-16
      • 2017-04-13
      相关资源
      最近更新 更多