рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрд┐рдирд╛рд░реЗ XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ?
рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рд░ рдПрдХ рдХрд╛ рдЕрдкрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ, рдореЗрд░реЗ рд╕рд╣рд┐рдд, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рддрд░реНрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рддрд┐рд░рд╕реНрдХреГрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХреЛ рдпрд╣ рдПрдХ рдкреБрд░рд╛рддрди рдЕрд╡рд╢реЗрд╖ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдПрдХ DBMS рдореЗрдВ XML рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реЛрдиреЗ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдХреБрдЫ рдЖрдкрддреНрддрд┐ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдереЛрдХ рд╡реНрдпрд╛рдкрд╛рд░реА рдХреА рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЙрд╕рдиреЗ рдХреБрдЫ рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдХреЛрдбрд┐рдВрдЧ рдХреА рдХрдореА рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдк рджрд┐рдпрд╛ред рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ 20k рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ - рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдХреБрддреНрддреЗ рдиреЗ рдЕрдлрд╡рд╛рд╣ рдХрд╣рд╛рдВ рд░рдЦреА, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд╣рдордд рд╣реВрдБ, рдХреНрдпреЛрдВрдХрд┐ XML рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рднреА рдкрджреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ? рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛ рдЬреЛ рдПрдХреНрд╕рдПрдордПрд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рдЦреБрдж рдХреЛ рдУрд░реЗрдХрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рдореЗрд░реЗ рдФрд░ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд┐рдХрд▓рд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдУрд░реЗрдХрд▓ рдбрд╛рдЯрд╛рдмреЗрд╕ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдХреЗ XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣рд╛рдБ DOM рдкрд╛рд░реНрд╕рд░ рдХреЛ рдирд╣реАрдВ рдЫреВрдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╣реИ, рдпрд╣ DBMS_XMLDOM рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрдИ рдмрд╛рд░, рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЛрдо рдкрд╛рд░реНрд╕рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред
Oracle рдХреА рдПрдХ рдЕрднрд┐рдирд╡ рд╡рд┐рд╢реЗрд╖рддрд╛ XMLType рдкреНрд░рдХрд╛рд░ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдзрди рд╣реИред рдпрд╣ рдкреНрд░рдХрд╛рд░ XML DB рддрдХрдиреАрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ 9.2 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред
XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЛ XMLType рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ CLOB, BLOB, VARCHAR2, Berm рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдмрд╛рдпрд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдорд╛рд░рд╛ XML рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рд╣реИ рдФрд░ рдпрд╣ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж XML рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рджреЗрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд░реНрд╡рд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реАред
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде XMLType рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
select XMLType( '<hello-world> <word seq="1">Hello</word> <word seq="2">world</word> </hello-world> ') XML from dual
XMLType рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдХрд░, рдЖрдк рд╣рдорд╛рд░реЗ XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдбрд░рдкреЛрдХ рдХрджрдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдПрдордЯрд╛рдЗрдк рдЯрд╛рдЗрдк рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ рдореЗрдердб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХреНрд╕рдкреАрдЪ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗрддреЗ рд╣реБрдП, рдПрдХреНрд╕рдПрдордПрд▓ рдЯреБрдХрдбрд╝рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдПрдХ XML рдЯреБрдХрдбрд╝рд╛ (XML Fragment), рдПрдХ рдареАрдХ рд╕реЗ рдирд┐рд░реНрдорд┐рдд XML (whellformed XML) рдХреЗ рд╡рд┐рдкрд░реАрдд, рд░реВрдЯ рддрддреНрд╡ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ (рдпрд╛, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд░реВрдЯ рддрддреНрд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рддреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреАрди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рддреАрди XML рдЯреБрдХрдбрд╝реЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╢рдмреНрдж рддрддреНрд╡ рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдШрдЯрдирд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рддреАрд╕рд░рд╛ рд╢рдмреНрдж рддрддреНрд╡ рдХреЗ рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП seq рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди рджреЛ рд╣реЛрддрд╛ рд╣реИред
SQL> with demo1 as ( 2 select XMLType( 3 '<hello-world> 4 <word seq="1">Hello</word> 5 <word seq="2">world</word> 6 </hello-world> 7 ') xml 8 from dual 9 ) 10 select t.xml.extract('//word') case1 11 ,t.xml.extract('//word[position()=1]') case2 12 ,t.xml.extract('//word[@seq=2]/text()') case3 13 from demo1 t; CASE1 CASE2 CASE3
рдпрд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрдереНрдп рдкрд░ рдПрдХ рдмреЛрд▓реНрдб рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХреНрд╕рдПрдордПрд▓ рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд░ рддрднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЗрд╕ рдорд╛рди рдореЗрдВ & amp ;, & gt; рдХрд┐рд╕реА рддрддреНрд╡ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, extractValue рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореБрдЦреНрдп XMLType рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ SQL рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, XMLType рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, extractValue рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред extractValue рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред XMLType, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, extractValue рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
SQL> with demo2 as (select xmltype('<a><&hello&></a>') xml from dual) 2 select t.xml.extract('a/text()').getStringVal() case1 3 ,extractValue(t.xml,'a') case2 4 from demo2 t; CASE1 CASE2
рд╢рд╛рдпрдж рд╣рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд░ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдЗрди рдХрд╛рд░реНрдп рддрдВрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕рд╣реА рд╕рдордЭ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдФрд░ рд╡рд┐рдзрд┐) рдЕрд░реНрдХ, рдЕрд░реНрдХрд╡реИрд▓реНрдпреВ, рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рд╡рд┐рд╡рд░рдг рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕рдкреАрде рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред XML рдФрд░ XPatch рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА URI, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред
SQL> select extractValue(t.xml,'a') case1 2 ,extractValue(t.xml,'a','xmlns="foo"') case2 3 ,extractValue(t.xml,'y:a/@z:val','xmlns:y="foo" xmlns:z="bar"') case3 4 from (select XMLType('<a xmlns="foo" xmlns:x="bar" x:val="a-val">a-text</a>') XMl from dual) t; CASE1 CASE2 CASE3
рдЗрд╕рд▓рд┐рдП, рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╕реАрдЦрд╛, рдЕрдм рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ, рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ XML рд╕реЗ рд╕рднреА рд╢рдмреНрдж рддрддреНрд╡реЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рд╣рдо рд╕рдлрд▓ рд░рд╣реЗ, рд╣рдореЗрдВ рджреЛ рд╢рдмреНрдж рддрддреНрд╡ рдорд┐рд▓реЗ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ред рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд░реВрдЯ рддрддреНрд╡реЛрдВ рд╡рд╛рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рдореВрд▓ рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреНрдб XMLSeqence рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди XMLSequenceType рджреЗрддрд╛ рд╣реИ, рдЬреЛ XMLType рдорд╛рдиреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдХреЛрдИ рднреВрд▓ рдЧрдпрд╛, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рдЗрд╕рд▓рд┐рдП, рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЦреБрдж рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрдЪреБрдЕрд▓ рдХреЙрд▓рдо column_value, рдпрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╡реИрд▓реНрдпреВ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЯреЗрдмрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (рдЯреЗрдмрд▓ рдХрд▓реЗрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди) рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдерд╛, рддреЛ рдореИрдВ рдЗрд╕реЗ рдордВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛рдж рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рд╕рдордЭ рд╕рдордп рдХреЗ рд╕рд╛рде рдЖрдПрдЧреА, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред
XMLSequence рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
SQL> select extractValue(value(t),'b') result 2 from table(XMLSequence(XMLType('<a><b>b1</b><b>b2</b></a>').extract('a/b'))) t; RESULT
рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд░реВрд╕реА рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рдХрдерди рд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ XMLType рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ XML рдкрд╛рда рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЙрди рд╕рднреА рдмреА рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рддрддреНрд╡ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдореА XML рдЯреБрдХрдбрд╝реЗ рдХреЛ XMLSequence рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддрд╛рд▓рд┐рдХрд╛ рдЦрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд╛рдХреНрдп рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд░рд┐рдХреЙрд░реНрдб рд╕реЗрдЯ рдХреЛ рдЙрдкрдирд╛рдо рдЯреА рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред Select-list'e рдореЗрдВ рд╣рдореЗрдВ рдЯреЗрдмрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди t рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ XMLType рдкреНрд░рдХрд╛рд░ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реНрд░реЛрдд XML рдХреЗ рддрддреНрд╡ b рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ extractValue рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдЪреЗрд╣рд░реЗ рдкрд░ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рдЬрдЯрд┐рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВред рдЗрд╕реЗ рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рд▓реЗрдХрд┐рди рдорд╕реНрддрд┐рд╖реНрдХ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реЗрдмрд▓ рдореЗрдВ рдХрдИ XML рдХрд╛ рд╕реНрд░реЛрдд рдкрд╛рда рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмрд╛рдПрдВ рд╕рд╣рд╕рдВрдмрдВрдз рдХреНрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рд╕реИрдиреНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЪреАрдЬрд╝ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдУрд░реЗрдХрд▓ рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯреЗрдмрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (рдЯреЗрдмрд▓ рдХрд▓реЗрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рдордиреЗ (рдмрд╛рдИрдВ рдУрд░) рдХреЗ рдХрдерди рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╕реЗ рдорд╛рди (рдХреЙрд▓рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХрд╛рди рд╕реЗ рдЙрддрдирд╛ рднрдпрд╛рдирдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ:
SQL> with demo3 as(select 1 id, XMLType('<a><b>b1</b><b>b2</b></a>') xml from dual 2 union all select 2 id, XMLType('<a><b>b3</b><b>b4</b></a>') xml from dual) 3 select id xml_id 4 ,extractValue(value(t),'b') result 5 from demo3 s,table(XMLSequence(s.xml.extract('a/b'))) t; XML_ID RESULT
рдпрд╣рд╛рдВ, рдЯреЗрдмрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди t рдореЗрдВ, рдбреЗрдореЛ 3 рдЯреЗрдмрд▓ рдХреЗ xml рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдореЛ 3 рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдЗрд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдмрд╛рдпрд╛рдВ рд╕рд╣рд╕рдВрдмрдВрдзред
рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╢рд╛рдпрдж, рдХреЗрд╡рд▓ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдЬреНрдЮрд╛рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдбреЗрдЯрд╛ рдХрд╛ рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ XML рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП XSLT рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред XSLT рд░реВрдкрд╛рдВрддрд░рдг XMLTransform рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ XMLType, рджреВрд╕рд░реЗ XMLType XSL рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдо рдХреЗ XMLType рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ XML рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрднреА-рдХрднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
SQL> with demo4 as( 2 select XMLType( 3 '<master> 4 <id>mater id</id> 5 <details> 6 <detail> 7 <id>detail 1 id</id> 8 <sub_details> 9 <sub_detail> 10 <id>sub_detail 1.1 id</id> 11 </sub_detail> 12 <sub_detail> 13 <id>sub_detail 1.2 id</id> 14 </sub_detail> 15 </sub_details> 16 </detail> 17 <detail> 18 <id>detail 2 id</id> 19 <sub_details> 20 <sub_detail> 21 <id>sub_detail 2.1 id</id> 22 </sub_detail> 23 <sub_detail> 24 <id>sub_detail 2.2 id</id> 25 </sub_detail> 26 </sub_details> 27 </detail> 28 <detail> 29 <id>detail 3 id</id> 30 </detail> 31 </details> 32 </master>' 33 ) xml from dual) 34 select extractValue(s.xml,'master/id') master_id 35 ,extractValue(value(dtl),'detail/id') detail_id 36 ,extractValue(value(subdtl),'sub_detail/id') sub_detail_id 37 from demo4 s 38 ,table(XMLSequence(s.xml.extract('master/details/detail'))) dtl 39 ,table(XMLSequence(value(dtl).extract('detail/sub_details/sub_detail')))(+) subdtl; MASTER_ID DETAIL_ID SUB_DETAIL_ID
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд╕рднреА рдПрдХ рд╣реА рдмрд╛рдПрдВ рд╕рд╣рд╕рдВрдмрдВрдзред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рд╡рд╣ рд╣реИ (+) рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдмрдбреЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ 3 рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред
рддреЛ, рд╣рдорд╛рд░реА рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реАрдорд┐рдд рд╕реЗрдЯ рд╣реИ, рдЬреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕реАрдорд┐рдд рд╕реЗрдЯ рджреЗрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЖрд╢реНрдЪрд░реНрдп рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╣реИ рдХрд┐ рдУрд░реЗрдХрд▓ рдХреЙрд░реНрдк рдХреЛ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕рднреА рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ - рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди, рдЯреЗрдмрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрдХрдиреАрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмреЛрд▓реНрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдУрд░реЗрдХрд▓ рдХреЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдЬрди рдХреА рд╢рдХреНрддрд┐ рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдиреЛрдЯ рдкрд░, рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд┐рд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рд╡рд╣ рдореБрдЭреЗ рд╢рд╛рдВрддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдлрдЯрдХрд╛рд░ рдХреЗ рд╕рд╛рдеред тАЬрдпрд╛рд░, рддреБрдо рдХрд┐рд╕ рд╕рджреА рдореЗрдВ рдЬреА рд░рд╣реЗ рд╣реЛ, рдХреНрдпрд╛ рддреБрдордиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХреИрд▓реЗрдВрдбрд░ рдХреЛ рджреЗрдЦрд╛ рд╣реИ? рд╡рд░реНрд╖ 2011 рд╡рд░реНрд╖ рдХреЗ рдЕрдВрдд рдХреЗ рдХрд░реАрдм рд╣реИ, рдкрд╣рд▓реЗ рдЙрддреНрдкрд╛рджрди рд╕реЗ рджреВрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ 11r2 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рднреА рдиреМрд╡реЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░ рдЪрдмрд╛рддреЗ рд╣реИрдВред тАЭ рд╣рд╛рдВ, рдореЗрд░реЗ рдкреАрдЫреЗ рдРрд╕рд╛ рдкрд╛рдкреА рд╣реИред рдореИрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ 10 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрджреНрднреБрдд XMLTable рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдПрдХреНрд╕рдПрдордПрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдФрд░ рднреА рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, XMLTable рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЗрддрдирд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╕реЗ рдкрд░реЗ рдХреБрдЫ рднреА рдХрд╣ рд╕рдХреВрдБред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг рдкрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛:
34 select master_id 35 ,details_id 36 ,sub_details_id 37 from demo4 s 38 ,XMLTable('master' 39 passing (s.xml) 40 columns master_id varchar2 (20) path 'id' 41 ,details XMLType path 'details/detail') mstr 42 ,XMLTable('detail' 43 passing (mstr.details) 44 columns details_id varchar2 (20) path 'id' 45 ,sub_details XMLType path 'sub_details/sub_detail')(+) dtl 46 ,XMLTable('sub_detail' 47 passing (dtl.sub_details) 48 columns sub_details_id varchar2 (20) path 'id')(+) sub_dtl; MASTER_ID DETAILS_ID SUB_DETAILS_ID
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрддреНрд░ рд╣реИрдВ, рдПрдХ рдирд┐рд╖реНрдкрдХреНрд╖ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдирд╡рд╛рдЪрд╛рд░ рдХрд╛ рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ? рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ XMLTable рдореЗрдВ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм XPath рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди XQueryред рддреЛ, рд╕рдВрдШ рдЕрдкрдиреЗ рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ SQL рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ред XMLTable рдЕрднреА рднреА рд╣реЛрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ, рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЕрдм рддрдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред