Oracle 什么是XMLTABLE

Oracle 什么是XMLTABLE,oracle,oracle10g,Oracle,Oracle10g,什么是XMLTABLE 请告诉我创建XMLTABLE的语法 从XMLTABLE获取记录的示例查询 在创建XMLTABLE之前,是否需要任何数据库级别的先决条件 可能就是您要查找的内容。该函数用于将xml对象转换为单独的字段。 但您可能想要构造一个包含xml内容的表,这是不同的 您可以使用包含xml内容的额外列创建表 CREATE TABLE mytable (my_id NUMBER PRIMARY KEY, my_xml XMLType); 然后在查询中使用xml内容 INSERT INTO

什么是XMLTABLE

  • 请告诉我创建XMLTABLE的语法

  • 从XMLTABLE获取记录的示例查询

  • 在创建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
    

    您好,xquery 1不工作,请告诉我以下错误:SQL>xquery 1 SP2-0042:未知命令“xquery 1”-忽略行的其余部分。你能告诉我原因吗?从XMLTABLE(“/prices/book”passing HTTPURITYPE”file:/D:/Sanjay_Thakur/book.xml”)中选择TITLE、SOURCE、to_number(PRICE)作为PRICE。getXML()列TITLE varchar2(100)path'/book/TITLE',SOURCE varchar2(100)path'/book/SOURCE',PRICE varchar2(40)path'/book/PRICE)这个查询给我以下错误:[1]:(错误):ORA-29273:HTTP请求失败ORA-06512:at“SYS.UTL_HTTP”,第1674行ORA-29261:at“SYS.HTTPURITYPE”错误参数ORA-06512:at“SYS.HTTPURITYPE”,第34行ORA-06512:at“SYS.HTTPURITYPE”,第97行,您能告诉我原因吗?您好,Andrew Russell,谢谢您的回复。您上面编写的测试用例在我这里运行得很好。此外,根据我给出的示例(如我前面的评论所述),如果我直接在浏览器中给出路径(即“file:/D:/Sanjay_Thakur/book.xml),文件确实会打开因为该文件存在于上述路径中。双击该文件时,它也会打开。只是想知道为什么我上面给出的示例不起作用。它给了我指向函数“getXML()”的错误“错误参数”。在浏览器中直接使用该路径与oracle数据库能够看到它不同。url是本地url“文件:”,而utl_http包和HTTPURITYPE仅适用于http:protocol。
     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