Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从XMLTable(Oracle 11gR2)中的XML检索节点值 希望这是一件简单的事情,我只是想不起来,但是考虑一下这个例子: with et as( SELECT xmlType('<Invoice> <InvoiceInformation> <Number>123456</Number> </InvoiceInformation> <InvoiceLines> <InvoiceLine> <Detail> <Amount>100</Amount> <Line>1</Line> </Detail> <Type> <CheesyPotato> <Instructions> <CookTime>120</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>450</CookTemperature> </Instructions> </CheesyPotato> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>10000</Amount> <Line>2</Line> </Detail> <Type> <DeathStar> <Instructions> <CookTime>4</CookTime> <CookTimeUnits>5 "parsecs"</CookTimeUnits> <CookTemperature>1000000</CookTemperature> </Instructions> </DeathStar> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>250</Amount> <Line>3</Line> </Detail> <Type> <Quiche> <Instructions> <CookTime>75</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>350</CookTemperature> </Instructions> </Quiche> </Type> </InvoiceLine> </InvoiceLines> </Invoice> ') xt from dual ) SELECT ext.* FROM et, XMLTABLE( 'for $Invoice in $INV/Invoice for $InvoiceItem in $Invoice/InvoiceLines/InvoiceLine return <row> { $Invoice ,$InvoiceItem } </row>' PASSING et.xt as INV COLUMNS INVOICENUMBER VARCHAR2 (6) PATH 'Invoice/InvoiceInformation/Number' ,InvoiceLineNumber VARCHAR2 (5) PATH 'InvoiceLine/Detail/Line' ,Amount VARCHAR2 (5) PATH 'InvoiceLine/Detail/Amount' ,CookTime VARCHAR2 (5) PATH 'InvoiceLine/Type//Instructions/CookTime' ,CookTimeUnits VARCHAR2 (15) PATH 'InvoiceLine/Type//Instructions/CookTimeUnits' ,CookTemperature VARCHAR2 (10) PATH 'InvoiceLine/Type//Instructions/CookTemperature' ) ext / INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS COOKTEMPERATURE ------------- ----------------- ------ -------- --------------- --------------- 123456 1 100 120 Minutes 450 123456 2 10000 4 5 "parsecs" 1000000 123456 3 250 75 Minutes 350_Xml_Oracle_Xml Parsing_Oracle11g - Fatal编程技术网

从XMLTable(Oracle 11gR2)中的XML检索节点值 希望这是一件简单的事情,我只是想不起来,但是考虑一下这个例子: with et as( SELECT xmlType('<Invoice> <InvoiceInformation> <Number>123456</Number> </InvoiceInformation> <InvoiceLines> <InvoiceLine> <Detail> <Amount>100</Amount> <Line>1</Line> </Detail> <Type> <CheesyPotato> <Instructions> <CookTime>120</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>450</CookTemperature> </Instructions> </CheesyPotato> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>10000</Amount> <Line>2</Line> </Detail> <Type> <DeathStar> <Instructions> <CookTime>4</CookTime> <CookTimeUnits>5 "parsecs"</CookTimeUnits> <CookTemperature>1000000</CookTemperature> </Instructions> </DeathStar> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>250</Amount> <Line>3</Line> </Detail> <Type> <Quiche> <Instructions> <CookTime>75</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>350</CookTemperature> </Instructions> </Quiche> </Type> </InvoiceLine> </InvoiceLines> </Invoice> ') xt from dual ) SELECT ext.* FROM et, XMLTABLE( 'for $Invoice in $INV/Invoice for $InvoiceItem in $Invoice/InvoiceLines/InvoiceLine return <row> { $Invoice ,$InvoiceItem } </row>' PASSING et.xt as INV COLUMNS INVOICENUMBER VARCHAR2 (6) PATH 'Invoice/InvoiceInformation/Number' ,InvoiceLineNumber VARCHAR2 (5) PATH 'InvoiceLine/Detail/Line' ,Amount VARCHAR2 (5) PATH 'InvoiceLine/Detail/Amount' ,CookTime VARCHAR2 (5) PATH 'InvoiceLine/Type//Instructions/CookTime' ,CookTimeUnits VARCHAR2 (15) PATH 'InvoiceLine/Type//Instructions/CookTimeUnits' ,CookTemperature VARCHAR2 (10) PATH 'InvoiceLine/Type//Instructions/CookTemperature' ) ext / INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS COOKTEMPERATURE ------------- ----------------- ------ -------- --------------- --------------- 123456 1 100 120 Minutes 450 123456 2 10000 4 5 "parsecs" 1000000 123456 3 250 75 Minutes 350

从XMLTable(Oracle 11gR2)中的XML检索节点值 希望这是一件简单的事情,我只是想不起来,但是考虑一下这个例子: with et as( SELECT xmlType('<Invoice> <InvoiceInformation> <Number>123456</Number> </InvoiceInformation> <InvoiceLines> <InvoiceLine> <Detail> <Amount>100</Amount> <Line>1</Line> </Detail> <Type> <CheesyPotato> <Instructions> <CookTime>120</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>450</CookTemperature> </Instructions> </CheesyPotato> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>10000</Amount> <Line>2</Line> </Detail> <Type> <DeathStar> <Instructions> <CookTime>4</CookTime> <CookTimeUnits>5 "parsecs"</CookTimeUnits> <CookTemperature>1000000</CookTemperature> </Instructions> </DeathStar> </Type> </InvoiceLine> <InvoiceLine> <Detail> <Amount>250</Amount> <Line>3</Line> </Detail> <Type> <Quiche> <Instructions> <CookTime>75</CookTime> <CookTimeUnits>Minutes</CookTimeUnits> <CookTemperature>350</CookTemperature> </Instructions> </Quiche> </Type> </InvoiceLine> </InvoiceLines> </Invoice> ') xt from dual ) SELECT ext.* FROM et, XMLTABLE( 'for $Invoice in $INV/Invoice for $InvoiceItem in $Invoice/InvoiceLines/InvoiceLine return <row> { $Invoice ,$InvoiceItem } </row>' PASSING et.xt as INV COLUMNS INVOICENUMBER VARCHAR2 (6) PATH 'Invoice/InvoiceInformation/Number' ,InvoiceLineNumber VARCHAR2 (5) PATH 'InvoiceLine/Detail/Line' ,Amount VARCHAR2 (5) PATH 'InvoiceLine/Detail/Amount' ,CookTime VARCHAR2 (5) PATH 'InvoiceLine/Type//Instructions/CookTime' ,CookTimeUnits VARCHAR2 (15) PATH 'InvoiceLine/Type//Instructions/CookTimeUnits' ,CookTemperature VARCHAR2 (10) PATH 'InvoiceLine/Type//Instructions/CookTemperature' ) ext / INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS COOKTEMPERATURE ------------- ----------------- ------ -------- --------------- --------------- 123456 1 100 120 Minutes 450 123456 2 10000 4 5 "parsecs" 1000000 123456 3 250 75 Minutes 350,xml,oracle,xml-parsing,oracle11g,Xml,Oracle,Xml Parsing,Oracle11g,但是,我想在这个查询中获取类型值。因此,如何获取类型为“Name”的子节点,使结果保持原样 INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS COOKTEMPERATURE ------------- ----------------- ------ -------- --------------- --------------- 123456 1 100

但是,我想在这个查询中获取类型值。因此,如何获取类型为“Name”的子节点,使结果保持原样

    INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS   COOKTEMPERATURE 
------------- ----------------- ------ -------- --------------- --------------- 
123456        1                 100    120      Minutes         450             
123456        2                 10000  4        5 "parsecs"     1000000         
123456        3                 250    75       Minutes         350
TypeChild       INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS   COOKTEMPERATURE 
------------------- ------------- ----------------- ------ -------- --------------- --------------- 
CheesyPotato    123456        1                 100    120      Minutes         450             
DeathStar       123456        2                 10000  4        5 "parsecs"     1000000         
Quiche          123456        3                 250    75       Minutes         350
我尝试过各种方法;沿着“,$InvoiceItem/Type/child/name”的行,如果没有任何帮助,将不胜感激,谢谢

    INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS   COOKTEMPERATURE 
------------- ----------------- ------ -------- --------------- --------------- 
123456        1                 100    120      Minutes         450             
123456        2                 10000  4        5 "parsecs"     1000000         
123456        3                 250    75       Minutes         350

还是我只是走错了路?(但是,无法更改的是,我需要能够将此XML使用到查询中!)

工作得非常完美,多么简单!(我就是想不起来!)
    INVOICENUMBER INVOICELINENUMBER AMOUNT COOKTIME COOKTIMEUNITS   COOKTEMPERATURE 
------------- ----------------- ------ -------- --------------- --------------- 
123456        1                 100    120      Minutes         450             
123456        2                 10000  4        5 "parsecs"     1000000         
123456        3                 250    75       Minutes         350