IBM DB2 9.7 User Manual

IBM DB2 9.7 Linux f"UNIX fM Windows f
򔻐򗗠򙳰
pureXML 8O
S151-1180-00
IBM DB2 9.7 Linux f"UNIX fM Windows f
򔻐򗗠򙳰
pureXML 8O
S151-1180-00
"b
9CKE"0d'VDz70,kHDAZ 447 3D=< E, :yw;BD#fE"#
^)fyw
zIZ_r(}1XD IBM zm&): IBM vfo#
v *Z_):
vfo,k*A IBM vfoPD,x7*:www.ibm.com/shop/publications/order
v *iR1XD IBM zm&,k*A IBM +r*5K?<,x7*:www.ibm.com/planetwide
*S@zrSCsD DB2 P!Mz[?): DB2 vfo,kBg 1-800-IBM-4YOU(426-4968)#
1zr IBM "ME"1,4,bZh IBM @;^~D(&T
|O*J1R;aTzlINN0lD==9CrV"C
E"#
© Copyright International Business Machines Corporation 2006, 2009.
?<
XZ>i ..............vii
Z 1 B pureXML Ev - DB2 w*
XML }]b .............1
XML }]`M..............3
XML dkMdvEv ...........3
HO XML #MMX5#M .........7
XQuery M XPath }]#M .........8
rPMn...............8
-S5 ...............9
ZccNa9 .............10
ZctT ..............11
ZcV` ..............12
ZcDD53r ............14
Zcj6 ..............14
ZcD`M5MV{.5 .........15
'V XML D$_ ............15
pureXML D*O'V ...........17
pureXML D4F
XZ XML 'VDDB...........17
MB~"<'V .......17
Z 2 B pureXML LL ........19
NL 1:4(ITf" XML }]D DB2 }]bM
m .................20
NL 2:4(yZ XML }]Dw} ......20
NL 3:+ XML D5ek= XML `MPP ...21 NL 4:|Bf"Z XML PPD XML D5 ...22
NL 5:>} XML }] ..........23
NL 6:i/ XML }] ..........24
NL 7:kT XML #=i$ XML D
NL 8:9C XSLT y=mxPd; ......29
5 ....27
Z 3 B XML f"w .........33
XML f"Ts .............33
XML y>mPf"w ...........33
XML D5Df"*s ...........34
Z 4 B ek XML }] .......37
4(_P XML PDm...........37
+ XML PmSAVPm ..........38
ek= XML PP ............38
XML bv ...............39
XML }]j{T ............43
XML PDli<x ...........43
XML }]D%"w&m .........45
XML i$ ..............46
XSR_GET_PARSING_DIAGNOSTICS f"}L ..49
T>j8D XML bvMi$ms ......51
v?Dms{"'VD ErrorLog XML #=(e 53
ZG Unicode }]bP9C
XML.......56
Z 5 B i/ XML }] .......61
XQuery ri ..............61
9C XQuery /}lw DB2 }] .......62
9C SQL i/ XML }]ri ........63
XQuery k SQL DHO ..........64
HOCZi/ XML }]D=(........64
8( XML {FUd ...........65
>}:|D*XD{FUd0: ........67
XMLQUERY /}Ev ...........69
XMLQUERY 5XDGUrP .......69
XMLQUERY 5XDUrP ........70
+ XMLQUERY a{D}]`M*;*
`M ................71
}]`M.dD?F*; .........72
XMLQUERY.............79
XMLTABLE /}Ev ...........82
>}:ek XMLTABLE P5XD5 .....83
>}:9C XMLTABLE T3nD?v5}5X;
P ................84
>}:9C XMLTABLE &m XML D5P`v
wy|,D*X ............85
>}:9C XMLTABLE &mVc}] ....87
XMLTABLE.............89
i/ XML }]1D XMLEXISTS =J
XMLEXISTS =JC> ..........93
XMLEXISTS =J ...........94
Z SQL odk XQuery mo=.d+]N} ...96
+]A XMLEXISTS M XMLQUERY D#?MN
}jG ...............96
9C XMLEXISTS"XMLQUERY r XMLTABLE
+]Dr%P{ ............97
+N}S XQuery +]A SQL.......99
9C XQuery lw}]...........99
CZ%dw}ki/D<rEv .......101
w}(eD^F............102
8( text() Zc1
Vf5D}]`M ...........105
,S=J*; ............105
#}i/s5 ............107
XML D5PD+D>Qw .........108
+ XML PPD}]lwAOgf>D DB2 M'z 108
CZ9l XML 5D SQL/XML "</} ....109
"< XML 5D>} ..........110
9C XSLT y=mxPd; .......114
SQL/XML "</}PDXbV{&
XML rP/.............123
f"Mlws XML D5PDnp .....125
i5 XML D5D}]`M ........126
D"bBn .......104
G XML
.....92
m ....122
Z 6 B * XML }]("w} ....127
w} XML #=mo= ..........128
© Copyright IBM Corp. 2006, 2009 iii
XML {FUdyw ...........129
kw} XML #=mo=X*D}]`M ....130
yZ XML }]Dw}D}]`M*; .....131
^' XML 5 ............132
D5b\r CREATE INDEX od'\ ....134
XZ*;*w} XML }]`MD\am ...134
XML #=Mw}|zI ..........135
UNIQUE X|Voe ...........136
k* XML }]("w}`
yZ XML }]D_-w}Momw} ....137
k XML PX*Dd{}]bTs .....138
XB4(yZ XML }]Dw} ......139
CREATE INDEX ............139
kTyZ XML }]Dw}Dy>i/ .....156
TyZ XML }]Dw}D^F .......158
#{ XML ("w}Jb .........160
oO INSERT r UPDATE od"
SQL20305N {" ...........160
oO CREATE INDEX odTndDm"vD
SQL20306N {" ...........162
X*D}]bTs ...137
vD
Z 7 B |B XML }] .......165
Zd;mo=P9C|BYw ........166
9Cd{mPDE"|B XML D5 ......169
SmP>} XML }] ..........170
Z 8 B XML #=f"b.......171
XSR Ts ..............171
XSR Ts"a .............171
(}f"}L"a XSR Ts .......172
(}|nP&mw"a XSR Ts ......173
T XML #="aM>}D Java 'V ....174
Dd"aD XSR Ts ..........176
]x XML #= ...........176
]x XML #=Df]T*s .......176
=8:]x XML #= .........183
i! XML #=E"D>} .........185
P>Qr XSR
lwQr XSR "aD XML #=DyPiI?
V ................185
lw XML D5D XML #= .......186
"aD XML #= .....185
Z 9 B XML }]F/ .......187
PXF/ XML }]DX*"bBn ......188
i/M XPath }]#M ..........189
<kM<v1D LOB M XML D~P* ....189
XML }]5w{ ............190
<v XML }] ............191
<k XML }] ............193
0k XML }] ............194
bv0k XML }]1"zD("w}ms . . 195
Z 10 B &CLr`LoT'V ....203
CLI.................204
CLI &CLrPD XML }]&m - Ev . . 204
CLI &CLrPD XML PekM|B ....205
Z CLI &CLrPlw XML }] .....206
|D CLI &CLrPD1! XML `M&m . . 206
6k= SQL..............207
Z6k= SQL &CLrPyw XML wd? 207 >}:}C6k= SQL &CLrPD XML w
d? ...............208
4P6k=
XZ9C XML M XQuery *"6k= SQL &
CLrD(i ............211
j6 SQLDA PD XML 5 .......211
Java ................211
JDBC...............211
SQLJ...............219
PHP ................223
IBM }]~qwD PHP &CLr*" ....223
9C PHP &CLrlw XML }] .....224
PHP BXM`XJ4 ..........224
Perl .................224
pureXML M Perl ...........224
Perl PD}]b,S ..........227
Perl ^F ..............228
}L ................228
SQL }L..............228
SQL /}..............230
b?}L ..............232
}LDT\ .............246
y>&CLr .............251
pureXML y> ............251
pureXML - \my> .........252
pureXML - &CLr*"y> ......254
SQL &CLrPD XQuery mo= 209
Z 11 B XML T\ .........261
pureXML &\?~M}]i/=8 ......261
ZVx}]b73P9C XQuery d;D>} ...261
+QywY1mk XML }]dO9C .....263
+E/<rk XML }]M XQuery mo=dO9
C .................265
9C XML }]DE/<rD>} .....266
CZ pureXML }]f"T\D DMS mUdDW!
n .................271
Z 12 B XML }]`k .......273
Z?`kD XML }] ..........273
f"r+] XML }]1D`k"bBn ....274
+ XML }]dk}]b1D`k"bBn . . 274
S}]bPlw XML }]1D`k"bBn 274
Z}LN}P+] XML }]1D`k"bBn 275 JDBC"SQLJ M .NET &CLrPD XML }]
`k"bBn
XML `kMrP/TZ}]*;D0l.....276
`kiv:+Z?`kD XML }]dk=}]
bP ...............276
`kiv:+b?`kD XML }]dk=}]
bP ...............277
`kiv:(}~=DrP/Yw4lw XML
}] ...............279
............275
iv pureXML 8O
`kiv:9CT=D XMLSERIALIZE 4lw
XML }] .............281
3dZ?`kD XML }]M CCSID .....283
+`k{3dAQf"D XML }]DP'
CCSID ...............283
+ CCSID 3dArP/ XML dv}]D`k
{ ................295
Z 13 B x"MD XML #=Vb ...301
x"MD XML #=VbDEc .......301
9Cx"MD XML #=4Vb XML D5 ...301
"a XML #="TdtCVb ......302
`v XML D5Vb>} ........303
x"MD XML #=VbM]i XML D5 . . 303
{Cx"MD XML #=Vb ........308
CZx"MD#=VbD xdbDecompXML }L . . 309
DECOMPOSEXMLDOCUMENT.......312
x"MD#=Vb
XDB_DECOMP_XML_FROM_QUERY f"}L . . 313
XML Vb"M .............316
XML Vb"M - f6MwCr ......316
XML Vb"M - \a .........317
db2-xdb:defaultSQLSchema Vb"M .....318
db2-xdb:rowSet Vb"M .........319
db2-xdb:table Vb"M .........323
db2-xdb:column Vb"M ........326
db2-xdb:locationPath Vb"M .......328
db2-xdb:expression Vb"M........331
db2-xdb:condition Vb"M ........334
db2-xdb:contentHandling Vb"M ......337
db2-xdb:normalization Vb"M .......341
db2-xdb:order Vb"M .........343
db2-xdb:truncate Vb"M ........345
db2-xdb:rowSetMapping V
db2-xdb:rowSetOperationOrder Vb"M ....350
x"MD XML #=VbDX|V .....351
x"MD XML #=VbPgNNIVba{ ...352
T XML Vba{xPi$DwC .....353
x"MD XML #=VbPT CDATA ?VD&
m ................353
x"MD XML #=VbPDU5MUV{. 354
CZx"MD XML #=V
*xPx"MD XML #=VbxTIzD4S
`MmSD"M............355
Vb&\D XML #=9l(i ......358
x"MD XML #=VbPD3d>} .....359
x"MD XML #=VbPDP/ .....359
Vb"M>}:3dA XML P ......362
Vb"M>}:;v53dA%v Vb"M>}:;v53dA%vmazz`vP 364
Vb"M>}:;v53dA`vm .....366
Vb"M>}:+3dA%vmD`v5xPVi 367 Vb"M>}:+;,OBDPD`v53dA%
vm ...............369
x"MD#=VbD
x"MD XML #=VbD^F .......374
D
b"M ......347
bDKTm .....355
mazz%vP 363
XML #== SQL `Mf]T 370
x"MD XML #=VbDJOoO"bBn ...376
XML Vb"MD#=...........377
Z 14 B T pureXML D^F ....379
T pureXML &\D^F..........379
=< A. `k3d ..........383
+`k{3dAQf"D XML }]DP' CCSID 383 + CCSID 3dArP/ XML dv}]D`k{ 394
=< B. SQL/XML "</} .....399
XMLAGG...............399
XMLATTRIBUTES............400
XMLCOMMENT ............401
XMLCONCAT.............402
XMLDOCUMENT............403
XMLELEMENT .............404
XMLFOREST .............408
XMLGROUP..............411
XMLNAMESPACES ...........413
XMLPI ...............415
XMLROW..............416
XMLTEXT ..............418
XSLTRANSFORM ............419
=< C. XSR f"}LM|n .....423
XSR f"}L .............423
XSR_REGISTER ...........423
XSR_ADDSCHEMADOC.........424
XSR_COMPLETE ...........425
XSR_DTD .............426
XSR_EXTENTITY ...........427
XSR_UPDATE ............428
XSR |n ..............430
REGISTER XMLSCHEMA ........430
ADD XMLSCHEMA DOCUMENT .....431
COMPLETE XMLSCHEMA ........432
REGISTER XSROBJECT .........433
UPDATE XMLSCHEMA .........435
=< D. DB2 <uE"Ev ......437
2=4r PDF q=D DB2 <ub ......437
):!"fD DB2 i. ..........440
S|nP&mwT> SQL 4,oz ......441
CJ;,f>D DB2 E"PD .......441
Z DB2 E"PDPTzDW!oTT>wb ...441 |B20ZzDFczrZ?x~qwOD DB2 E
"PD................442
V/|B20Z
DB2 E"PD .............443
DB2 LL...............444
DB2 JOoOE"............445
unMu~ ..............445
zDFczrZ?x~qwOD
=< E. yw ............447
?< v
w} ...............451
vi
pureXML 8O
XZ>i
pureXML™8OhvgNZ DB2®}]bP9C XML }]#|+f_zPX XML } ]`MM XML f"wD*6,gN9C SQL M XQuery oT49C XML }], T0gN*T\("w} XML }]#d{wb|( pureXML &CLr"9,}]F
/MQ XML }]Vb*`Xq=#
© Copyright IBM Corp. 2006, 2009 vii
viii pureXML 8O
Z 1 B pureXML Ev - DB2 w* XML }]b
pureXML &\?~Jmz+q=<CD XML D5f"Z_P XML }]`MD}]
bmPP#(}+ XML }]f"Z XML PP,}]I#Vd>zVca9N=,x ;G+dw*D>f"r3d*d{}]#M#
r* pureXML }]f"Qj+/I,yTI{CVP DB2
M\mf"D XML }]#
+ XML }]Td>zVca9N=4f"IT9 XML DQw"lwM|B'J| _#XQuery"SQL rOv~_DiOICZi/M|B XML }]#5X XML }] rIC XML Td?D SQL /}(F* SQL/XML /})9\y]
549lr"< XML }]#
}]b~qw&\4CJ
S}]bPlwD
i/M|B
I9CBP=(i/M|Bf"Z XML PPD XML D5:
XQuery
XQuery GCZbM"lwM^Di/ XML }]D(CoT#DB2 }]b~ qwJm1SwC XQuery rS SQL wC XQuery#r* XML }]f"Z DB2 mMS<P,yTa)K;)/},CZ(}1S|{mrS<r(} ( SQL i/S8(DmMS<Pi! XML }]#XQuery 'VwVCZ&m XML }]"|B*XMtT.`D XML TsM9lB XML TsDmo=# XQuery D`LSZa)K`FZ SQL D&\,CZ4Pi/"lwa{#
SQL odM SQL/XML /}
m` SQL od'V XML }
{}]bYw,}g,4(_P XML PDm"+ XML PmSAVPm"4 (yZ XML PDw}"T_P XML PDm4(%"wT0ek"|Br>
} XML D5#DB2 }]b~qw'VD;i SQL/XML /}"mo= 6{C XML }]`M#
]`M#b9Cz\;T XML }]4Pm`#
8
Mf
ITS SQL i/PwC XQuery#ZbVivB,SQL i/IT+}]Ts(
d?DN=+]A XQuery#
&CLr*"
m``LoT(} SQL Mb?}La)KT&CLr*"D'V:
`LoT'V
TBD pureXML &\D&CLr*"'V9C&CLr\;iO XML MX
5}]DCJMf"#BP`LoT'V XML }]`M:
v C r C++(6k= SQL r DB2 CLI)
v COBOL
v Java
v C# M Visual Basic(IBM
v PHP
© Copyright IBM Corp. 2006, 2009 1
(JDBC r SQLJ)
®
}]~qw .NET a)Lr)
v Perl
SQL Mb?}L
(}Z CREATE PROCEDURE N}Xw{P|, XML }]`MN},I+ XML }]+]A SQL }LMb?}L#VPD}L&\'V'F SQL od
5V}L_-w,|Gzzr{C XML 5T0d?PD XML }]5Y1f "w#
\m
pureXML &\a)CZ\m XML D5D URI @5X5Df"b"JmCZ}]b\ mD XML }]F/:
XML #=f"b(XSR)
XML #=f"b(XSR)GCZfEZ&m XML PPf"D XML 5}D 51yhDyP XML $~ Df"b#|f" XML D5P}CD XML #
="DTD Mb?5e#
<k"<vM0k5CLr
<k"<vM0k5CLrQ|B*'V>z XML }]`M#b)5CLr s&m LOB }];y4&m XML }]:b=V`MD}]<f"Z5JD m.b#Q|BD db2Import"db2Export M db2Load API 9a)KCZ<k" <vM0k XML }
f"Z XML PPD XML D5}],b`FZTX5}]D}]F/'V#
]D&CLr*"'V#b)Q|BD5CLrJmF/
T\
9Cf"Z XML PPD XML D51,I9Ca_T\D&\?~:
yZ XML }]Dw}
Tf"Z XML PPD}]a)Kw}'V#9CyZ XML }]Dw}Ia
_kT XML D5"vDi/D'J#kX5w}`F,XML }]w}TP( "w}# +G,
w};GT?VP("w}#(}8( XML #=(|G\^D XPath mo =),I8w*T XML PDD)?V("w}#
E/w |BKE/w,T'VkT XML }]MX5}]T SQL /}"XQuery
M6kK XQuery D SQL/XML /}xPs5#E/wIC(} XML }]T
04TyZ XML }]Dw}D}]yU/D3FE"zIP'Di/4PF .#
5wM Visual Explain
Q|B5wh)M Visual Explain GUI $_,Tc'VCZi/ XML }]D SQL v?&\"'V XQuery mo=# _Db)|BJmzlYi4 DB2 }]b~qwkT XML }]Ti/od
xPs5D==#
|GDxpZZX5w}GT{vP("w},xXML }]
T5wh)M Visual Explain GUI $
$_
/}
2 pureXML 8O
;)$_'V XML }]`M,b)$_|(XFPD"|nP&mw"IBM Data Stu- dio M DB2 Development Add-In for Microsoft
®
Visual Studio .NET#
XML }]`M
x"MD XML #=Vb
pureXML 9z\;+ICVcq=D XML }]w* XML f"MCJ,+P1I\
h*+ XML }]w*X5}]4CJ#x"MD XML #=Vby] XML #=P 8(D"M4VbD5#
K}]`MCZ(emPf" XML 5DP,b)PPf"DyP XML 5XkGq= <CD XML D5#}kK>z XML }]`M\;+q=<CD XML D5f"Z
}]bPd{X5}]T_D>zVcq=P#
9CZ?m>4&m XML 5,Z?m>;GV
O#(}9C XMLSERIALIZE /}r+ XML 5s(A`M* XML"V{.r~x FD&CLrd?,IT+ XML 5d;Im> XML D5DQrP/V{.5#,
y,(}9C XMLPARSE /}r+&CLrV{."~xFr XML &CLr (A XML 5,IT+m> XML D5DV{.5d;* XML 5#Zf0 XML P
D SQL }]|Dod(g INSERT)P,(}9CQekD XMLPARSE /}+m> XML D5DV{.r~xF5d;I XML 5#k&CLrV{.M~xF}]`M
;;1,IT~=bvrrP/
Za9OT}]bPD XML 5Ds!;P^F#+G,k"b,k DB2 }]b~q w;;DQrP/ XML }]Ds!^F* 2GB#
I9C SQL }]Ywodek"|BM>} XML D5#XML #=f"b(XSR)
'V(#Zekr|BZdkT XML
KCZ9lMi/ XML 5T0<vM<k XML }]DzF#ITT XML P(e XML }]w},SxDF XML }]DQwT\#IT(}wV&CLrSZ+mr S<PPD XML }]w*QrP/DV{.}]lw
XML dkMdvEv
DB2 }]b~qwCZ\mX5}]M XML } ] , |a ) K w V=(4 d k M dv XML D5#
{.,"R;\1SkV{.5xPH
`Ms
XML 5#
#=i$ XML D5#DB2 }]b539a)
#
XML D5f"Z(e* XML }]`MDPP#;v XML PPD?;P<f"%v q=<CD XML D5#f"DD5Vc#f,"R#tK XML }]#M;D54f
"*D>
ITZ|,d{`MDP(b)P#fX5}])DmP(e XML P;IT*%vm (e`v XML P#
r3dAm;}]#M#
dk
Z 4 3D< 1 T>KICZ+ XML }]Ek}]b53PDwV=(#
Z 1 B pureXML Ev 3
4 pureXML 8O
<1.CZdk
XML
}]D=(
9CDdk=(!vZ*jIDNq:
ekr|B
I9C INSERT SQL od+q=<CDD5ek= XML PP#g{\;I &VvD5,G45wD5Dq=<C#Z4Pekr|BYw ZdGqi$
XML D5G I!D#g{ 4Pi$,G 4XkWHr XML #=f"b (XSR)"a XML #=#D5G9C UPDATE SQL odr9C XQuery |
Bmo=|BD#
x"MD XML #=Vb
I9Cx"MD XML #=Vb4Vb XML D5PD}],r_+C}]f "ZX5PM XML
PP#Vbay]mSA XML #=D5D"M+}]f
"ZPP#b)"M+ XML D5PD}]3dAmP#
Vb&\y}CD XML #=D5f"Z XML #=f"b(XSR)P#
<k I9C<k5CLr+ XML D5<k= XML PP#Z<k XML D51G
qxP
i$GI!D #g{4 Pi$,G4XkWHr XML #=f"b
(XSR)"ai$D51y9CD XML #=#
XML #=f"b(XSR)"a
XML #=f"b(XSR)f"CZi$rVb XML D5D XML #=#* T@5Zb)#=D XML D54Pd{Nq,(#h*H"
a XML #=#
XML #=G9Cf"}Lr|nr XSR "aD#
dv
Z 6 3D< 2 T>KICZS}]b53Plw XML }]DwV=(#
Z 1 B pureXML Ev 5
6 pureXML 8O
<2.CZdv
XML
}]D=(
9CDdv=(!vZ*jIDNq:
XQuery
XQuery G;VICZZ XML D5ZxPi/DoT#|zcKi/a9d/ G#sD XML }]DX(hs,ki/a9I$bDX5}]G;,D#
XQuery ITT:wCT:,2IT(} XQuery /} db2-fn:xmlcolumn M db2- fn:sqlquery w C
SQL 4 i/ f"Z DB2 } ]b PD XML#db2-
fn:xmlcolumn +lw{v XML P,x db2-fn:sqlquery +lwyZ SQL +i /D XML 5#
SQL 19C SQL +i/4i/ XML }]1,+ZP6pxPi/#rK,Ci
/;\5X{v XML D5;vv9C SQL G;I\5X XML D5|,D
,ND#
*Z XML D5ZxPi/,Xk9C XQuery#IT9C SQL/
XML /} XMLQUERY r XMLTABLE r_9C XMLEXISTS =J"(} wC SQL 4wC XQuery#XMLQUERY /}+ XQuery mo=Da{T XML
rPN=5X#XMLTABLE /}+ XQuery mo=Da{TmDN=5X# XMLEXISTS SQL =J7( XQuery mo=Gqa5XGUrP#
9I9CtI"</}(}f"Z DB2 }]b~qwPD XML }]49l XML 5#9Cb)"</}9lD XML 5;XGq=<CD XML D5#
<v I9C<v5CLrS XML PP<v XML D5#Q<vD XML }]kw
}]D~P|,DQ<vDX5}]f"Z;,;C#PX?vQ<vD XML
D5Dj8E";P1Sf"ZQ<vDw}]D~P#Zw}]D ~P,b )j8E"GI XML }
HO XML #MMX5#M
hF}]b1,h*7(}]|JO XML #M9GX5#M# hFI{C DB2 } ]bDlOXc,4,,1Z;v}]bP'VX5}]M XML }]D\;#
d;>V[bMKb=v#M.dDw*xpT0JCZ?v#MDrX,+9P\
`rXIozz!qnOJD5V#+>V[w*;v<r,KbI\a0lX(5 VDyPrX#
XML }]kX5}].dDw*xp
XML }]GVc}];X5}]C_-X5#Mm>
XML D5TcNa9N=|,PX}]n.dDX5DE"#TZX5#M,
IT(eD(;X5`MG8mMStmX5#
]5w{(XDS)m>D#
XML }]\;Thv;xX5}];\
XML D5;v|,}]
TP;,`MD}]#TZX5#M,}]DZ]Id P(e(e#PPDy P}]XkG`,`MD}] #
XML }]_PL(Er;xX5}];P
TZ XML D5,Y(8(D}]n =(48(D5ZD3r#TZX5}],}GT;Pr`P8( ORDER BY
Sd,qr;\#$PD3r#
,9|,PXCZ5w}]DEnDjG#%vD5I
3rGD5P}]D3r#(#;Pd{
0l}]#M!qDrX
f"D}]V`Iozz7(f"==#}g,g{}]lzGVcRThvD,G 4IT+|f"* XML }]#+G,d{rX2I\a0lzv(*9CD#M#
h*nsinT1
X5mq-G#OqD#M#}g,+;vmf6/* f6/*;vmI\G#'Q#g{-#|D}]hF,G4+|m>* XML
}]GOCD!q#}g,XML #=If1d]x#
}]lwh*nCT\1
rP/MbM XML }]azz;)*z#g{T\HinT| 5}]I\GOCD!q#
m`mr+m`m4r
X*,G4X
}]Tsw*X5}]&m1
g{T}]Dsx&m!vZ*f"ZX5}]bPD}] ,G49CVb+
?V}]w*X5}]f"I\OOJ#+*zVv&m(OLAP)&CZ}
Z 1 B pureXML Ev 7
]VbPD}]MGby;v>}#Kb,g{h*+T XML D5Dd{& mw*;v{e,G4ZbVivB,OOJD=(G+? V}]w*X5}
]f""f"{v XML D5#
}]i~ZcNa9b_Pbe1
}]>mI\PLPDVcq=
)%I\|,?~E#nC+xP?~EDI:)%T XML D5DN=m># +G,?v?~E<P;vk|X*D?~hv#nC +?~hv|(ZX5 mP,r*?~EM?~hv.dDX %^X#
}]tTJCZyP}],rvJCZ;!?V}]1
;)}]/I\Ps?tT,+;P;!?VtTJCZN NX(}]5#} g,Zc[?<P,I\Pm`}]tT,}g,s! "
y="/("g4hsr<Ohs#TZC?<PDN Nx(n,;P;?V tT`X:g4hsTZgbPbe,+TZ:;Pbe#\QCX 5#Mm >MQwbV`MD}],+9C XML #M4m>MQwM`T*]
}]4STk]?.HO_1
Zm`ivB,Y?}]P|,K_Ha9/DE"# 9CX5#Mm>C} ]+f04SDGM#=,ZC#=P?v,m,SAm` v,m,"RdP
s`}m;PY?P#m>K}]D;V m,"RTCm4(S<,?vS<m>;v,#
,+Si~;h*8i~a)5#}g,I:
5Z_-Ok9Cb)?~EDI:)
OC=(G9C_P XML PD%v
U+"X?"DO"
W;)#
h*}Cj{T1
;\+ XML P(e*}C<xD;?V#rK,g{ XML D5PD5h* Nk}C<x,G4&+}]w*X5}]f"#
h*-#|B}]1
\(}f;{vD54|B XML PPD XML }]#g{h*51|BG
; #sDD5PO!,NZ|,Ds?P,G4+}]f"ZG XML PPI\ a'J|_#+G,g{}Z|BDD5\!"R;N;| BY?D5,G4
w* XML }]f"'J
XQuery M XPath }]#M
XQuery mo=T XQuery M XPath }]#M(XDM)D5}xPKc"5X}]# MD5}#XDM GT;vr`v XML D5r,NDis m>#}]#Ma(e XQuery PDmo=DJm5,|(PdFcZd9CD5#
+ XML }]bv* XDM,"Z XQuery &m}].0k
zI}]#MZd,+bvdk XML D5,"+|*;* XDM D5}#ZbvD5 1,ITxPi$,2IT;xPi$#
XDM G4U-S5MZcrP4xPhvD#
2a\_#
T#=4i$b)}]#Z
rPMn
8 pureXML 8O
XQuery M XPath }]#M(XDM)D5}*rP#
n
O#;v
;vrPIT|,Zc"-S5r_GZcM-S5DNbiO#}g,BfPmP D?vu?<G;vrP:
MG;v-S5r;vZc#
rP
G 0 vnr`vnDPr/
v 36 v <dog/> v (2, 3, 4) v (36, <dog/>, "cat") v ()
}PmPDu?.b,f"Z DB2 }]bD XML PPD XML D5G;vrP#
>}PC4m>rPDm>(,kC49l XQuery PDrPDo(G;BD:
v rPPD?n.dC:EVt#
v {vrPGC2(E(p4D#
v ;TUD2(Em>;vUrP#
v g{;vnZ|TmO=vV,G4`1Z;v;|,;nDrP#
}g,rP (36) k-S5 36 ;Pxp#
;\TrPxP6W#1iO=vrP1,qCDa{<UGZcM-S5D=Lr P#}g
*v;avV6WrP,yT,iOb)rP1";azI (3, 5, 6, (2, 3))#
;|,NNnDrPF*
,+rP (2, 3) 7SArP (3, 5, 6) 1+zI%vrP (3, 5, 6, 2, 3)#r
UrP
#I9CUrP4m>1YDE"r4*E"#
-S5
-S5
String"Integer"Decimal"Date Md{-S`M#b)`M<;hv*-S`M,-r G|G^(Y8VK#
kZc;,DG,-S5;Pj6#-S5D?v5}(}g, ?v5}<j+`,#
BP>}G;)zI-S5D=(:
v (};vF*“-S/D}LSZcPi!#?1h* -S5rP1,mo=Ma
v 8(*}VrV{.DV#XQuery a+DVbM*-
v I9l/}FcqC#}g,TB9l/}+y]V{.“2005-01-01”49(`M*
v IZC/} fn:true() M fn:false() 5X#b)/}+5X<{5 true M false#b
v I`Vmo=(}g,cumo=M_-mo=)5X#
GI XML #=(eDdP;VZC-S}]`MD5}#b)}]`M|(
{} 7)kC5Dd{
9C-S/#
S5#}g,BPDVMa;
bM*-S5:
– “this is a string”(`M* xs:string)
–45(`M* xs:integer)
– 1.44(`M* xs:decimal)
xs:date D5:
xs:date("2005-01-01")
)5;\m>*DV#
Z 1 B pureXML Ev 9
ZccNa9
iI;vr`v
cNa 9rw
DZcrP,b)cNa9rwI;vyZcMISC
yZc1SrdSCJDyPZciI#?vZc;tZ;vcNa9,x?vcN
a9;P;vyZc#DB2 'VTB 6 VZc:D5"*X"tT"D>"&m8> E"M"M#
TB XML D5 products.xml |(;vy*X products,Cy*XV|,;) prod- uct *X#?v product *X<P;v{* pid(z7j6)DtTT0;v{* description DS*X#description *X|,{* name M price DS*X#
<products>
<product pid="10">
<description>
<name>Fleece jacket</name> <price>19.99</price>
</description> </product> <product pid="11">
<description>
<name>Nylon pants</name> <price>9.99</price>
</description> </product>
</products>
Z 11 3D< 3 T> products.xml D}]#MDr/m>#C<P|(D5Zc(D)" *XZc(E)"tTZc(A)MD>Zc(T)#
10 pureXML 8O
<
3. products.xml
D5D}]#M<
g>}Py>,;vZcI+d{Zcw*Sz,SxiI;vr`v
9
DSz#name M price *X<G description *XDSz#5* Fleece Jacket D D>ZcG name *XDSz,xD>Zc 19.99 G price *XDSz#
ZctT
?vZc<_P;) |(:ZcD{F"Sz"8z"tTT0C4hvCZcDd{E"#ZcV`7
(*X(Zca)KD)tT#
;vZcIT_PBfD;vr`vtT:
node-name
8z G10ZcD8zDZc#
ZccNa
#ZC>}P,product *XG products DSz#description *X4G product
XT
,b)XTC4hvCZcDXw#}g,ZcDXTI\
ZcD{F,m>*
QName#
Z 1 B pureXML Ev 11
type-name
Sz G10ZcDSzDZcrP#
tT tZ10ZcD;itTZc#
string-value
typed-value
{FUdwCr
content
ZcV`
DB2 'VTB 6 VZc:D5"*X"tT"D>"&m8>E"M"M#
D5Zc
D5Zc|, XML D5#
ZcD/,(KP1)`M(2F*
ITSZcPi!DV{.5#
ITSZcPi!DIcvr`v-S5iIDrP#
kZc`X*DwCrZ{FUd#
ZcDZ]#
`M"M
)#
D5ZcIT_P`vSz,2IT;PSz# SzITG*XZc" &m8nZ c""MZcMD>Zc#
D5ZcDV{.5HZ+|DyPszD>ZcDZ]4D53rxP"CDa {#V{.5D`M
* xdt:untypedAtomic#
D5Zc_PBPZctT:
v children(I\GUD)
v string-value
v typed-value
ITZ XQuery mo= P 9C - }F c qCD9 l/ } 49 lD 5 Zc # db2- fn:xmlcolumn /}9IT5X;5PD5Zc#
* xs:string#D5ZcD`M5kV{.5`,,+`M5D`M
*XZc
*XZc|, XML *X#
;v*XIT_P;v8z,2IT;P8z;,1,|IT_P`vSz,2IT ;PSz#SzITG*XZc"&m8nZc""MZcMD>Zc#D5ZcM
tTZcv;aG*XZcDSz#+G, z#*XZcDtTXk_P(;D QName#
ITO**XZcG|T:DtTD8
12 pureXML 8O
*XZc_PBPZctT:
v node-name
v parent(I\GUD)
v type-name
v children(I\GUD)
v attributes(I\GUD)
v string-value
v typed-value
v in-scope-namespaces
ITZ XQuery mo=P9C1S9l/}r_-}FcqCD9l/}49l*XZ c#
*XZcD type-name tT8>|D`M5kV{.5.dDX5#}g,g{;v* XZc_P type-name tT xs:decimal M g{*XZcD type-name tTG xdt:untyped,G4*XD`M5HZdV{.5,"
R`M* xdt:untypedAtomic#
V{.5“47.5”,G4`M5MG!}5 47.5#
tTZc
tTZcm> XML tT#
tTZcIT_P;v8z,2IT;P8z#I+5PtTD*XZcO*G|D 8z,!\tTZc;G|D8*XDSz#
tTZc_PBPZctT:
v node-name
v parent(I\GUD)
v type-name
v string-value
v typed-value
ITZ XQuery mo
c#
tTZcD type-name tT8>|D`M5kV{.5.dDX5#}g,g{;vt TZc_P type-name tT xs:decimal MV{.5“47.5”,G4|D`M5MG!}5
47.5#
=P9C1S9l/}r_-}FcqCD9l/}49ltTZ
D>Zc
D>Zc|, XML V{Z]#
D>ZcIT_P;v8z,2IT;P8z#w*D5Zcr*XZcDSzDD
>Zcv;aw*`Z,zvV#19lD5Zcr*XZc1,NN`ZDD>Z c,z<a;O"I%vD>Zc#g{
D>Zc_PBPZctT:
v content(I\GUD)
v parent(I\GUD)
ITZ XQuery mo=P9C-}FcqCD9l/}49lD>Zc,2IT(}1 S*X9l/}DYw49lD>Zc#
qCDD>ZcGUD,G4a+|Oz#
Z 1 B pureXML Ev 13
&m8nZc
&m8nZcab0 XML &m8n#
&m8nZcIT_P;v8z,2IT;P8z#&m8nDZ];\|,V{. ?>#&m8nD?jXkG;v NCName#C?jC4j6*+8>E""MxD&C
Lr#
&m8nZc_PBPZctT
v target
v content
v parent(I\GUD)
ITZ XQuery mo=P9C1S9l/}r_-}FcqCD9l/}49l&m8
nZc#
:
"MZc
"MZc|, XML "M#
"MZcIT_P;v8z,2IT;P8z #"MZcDZ];\|(V{.“--” (=v,V{),"Rns;vV{;\G,V{(-)#
"MZc_PBPZctT:
v content
v parent(I\GUD)
ITZ XQuery mo=P
c#
9C1S9l/}r_-}FcqCD9l/}49l"MZ
ZcDD53r
;vcNa9PDyPZc<*qS3;3r(4, c<+ZdSz0fvV#g{ZccNa9GCQrP/D XML m>D,G4D5 3rkZcDvV3r`T&#
cNa9PDZc4TB3rvV:
v yZcGZ;vZc#
v *XZcZ|GDSz0fv
v tTZctzZk|G`X*D*XZcsfvV#tTZcD`T3rITGN
bD,+GZ&mi/ZdK3r;aDd#
v ,zD`T3rI|GZZccNa9PD3r47(#
v ;vZcDSzMsz+ZCZcsfD
Zcj6
?vZc<P;v(;j6#49=vZcD{FM5<`,,2IT+|GxV *#;x,-S5;Pj6#
Zcj6k ID-type tT;`,#XML D5PD*XIID5w_x( ID-type tT#
;x,Zcj6GI53T/*?vZc8(D,C
V#
D53r
,z0fvV#
'^(1S4{Zcj6#
)#4UC3r,?vZ
14 pureXML 8O
Zcj6CZ&mBP`MDmo=:
v ZcHO#is Kc{9CZcj647(=vZcGq_P`,j6#
v 76mo=#76mo=9CZcj64{}X4DZc#
v rPmo=#union"intersect r except Kc{9CZcj64{}X4D
ZcD`M5MV{.5
Zc#
?vZc<,1P
`M5MV{.5
#b=vZctTCZ3) XQuery Yw(}g,
-S/)M/}(}g,fn:data"fn:string M fn:deep-equal)D(eP#
m1.ZcDV{.5M`M5
ZcV` V{.5 `M5
D5 xs:string }]`MD5},|G+|DyPszD>
ZcDZ]4D53rxP"CDa{#
XML D5P D*X
XML D5P DtT
D> w* xs:string }]`MD5}DZ]# w* xdt:untypedAtomic }]`MD5}DZ]#
"M w* xs:string }]`MD5}DZ]# w* xs:string }]`MD5}DZ]#
&m8n w* xs:string }]`MD5}DZ]# w*
xs:string }]`MD5
szDZ]4D53rxP"CDa{#
xs:string }]`MD5},|m>-< XML D5P DtT5#
},|G+|DyPD>Zc
xdt:untypedAtomic }]`MD5},|G+|DyP szD>ZcDZ]4D53rxP"CDa{#
xdt:untypedAtomic }]`MD5},|G+|DyP D>ZcszDZ]4D53rxP"CDa{#
xdt:untypedAtomic } XML D5PDtT5#
xs:string }]`MD5}DZ]#
]`MD5},| m>-<
'V XML D$_
IBM MZ}=$_'V9C pureXML &\?~#BP$_Gf DB2 }]b~qwa )Dr_GI%@S IBM BXD:
IBM Data Studio:T XML D'V|(TB8n:
v f"}L:IT4(MKP|, XML }]`Mw*dkMdvN}Df"}L#
v }]dv:ITw
v SQL `-w: I4(,19CX5}]M XML }]D SQL odM XQuery m
o=#
v XML #=:IT\m XML #=f"b(XSR)PD#=D5,|("aM>}#
=T0`-#=D5#
v XML D5i$:ITkT
v C'(eD SQL /}: I4("KP9C XML N}DC'(eD SQL /}#
MrD>N=i4|,Z XML PPDD5#
Z XSR P"aD#=i$ XML D5#
DB2 XFPD:DB2 XFPD'VT|Dm`\m&\9C>z XML }]`M#K
|B9}]b\m1\;Z;v GUI $_P&m XML }]MX5
}]#
\'VD\mNqD>}|(:
v 4(xP XML PDm
v 9CBD4(w}r<44( XML Pw}
v i4f"Z XML PPD XML D5DZ]
v 9C&m XML D5yhD XML #="DTD Mb?5e
v U/|,K XML PDmD3FE"
Z 1 B pureXML Ev 15
|nP&mw:tIv DB2 |n'V>zf" XML }]#ITS DB2 |nP&m
w(CLP)9CX5}]T_D XML }]#ITS CLP 4PDNqD>}|(:
v (}T XQuery odSO XQUERY X|V0:4"v XQuery od#
v <kM<v XML }]#
v T XML PU/3
FE"#
v 9C XML }]`MD IN"OUT r INOUT N}4wCf"}L#
v 9C&m XML D5yhD XML #="DTD Mb?5e
v XiyZ XML }]Dw}M|, XML PDm#
v Vb XML D5#
DB2 Development Add-In for Microsoft Visual Studio .NET:IT9 C Devel­opment Add-In for Microsoft Visual Studio .NET 44(_P XML PDmMyZ XML
}]Dw}#
ZK$_Pq4(NNd{P;y4( XML P#;h*+}]`M8(
* XML#IT(}9CK$_PD“XML w}hFw”44(w}#;Xg9C CRE- ATE INDEX o(4(yZ XML }]Dw}1y*sDGyV/8( XML #=mo
=#`4,ITSQ
"aD XML #=DwMm>"XML PPDD5r>XD~PD
XML #=T<N==!qk*("w}D XML Zc#C$_+*zzI XML #= mo=#r_,ITV/8( XML #=mo=#8(KyPd{w}tT.s,C$
_+*zzIw}#
EXPLAIN:ITZ XQuery odM SQL/XML odP"v EXPLAIN od,TclY i4b)odDCJ=8,|( DB2 }]b~qwGq9Cw}#*"v XQuery o dD EXPLAIN od,I9C XQuery X|V,szC%}Er+}E}p4D XQuery od,gTB>}y>:
EXPLAIN PLAN SELECTION FOR XQUERY 'for $c in db2-fn:xmlcolumn("XISCANTABLE.XMLCOL" )/a[@x="1"]/b[@y="2"] return $c'
DB2 +6q EXPLAIN mPDCJ=8E"#yP XML PDZ{rPs!<f"Z EXPLAIN_STREAM m D SEQUENCE_SIZES P P# zI \ 9a" b = EXPLAIN_PREDICATE mPfZ3)}],|GG;)z^(6pD=J#b)=J
I DB2 }]b~qwZ EXPLAIN YwZdTw}(hP9CD XPath mo=xP
51zI#z;h*@@K=JE"#b)=J;GE/w=8D;?V,rKZ
s
PREDICATE_ID M FILTER_FACTOR PPD5* -1#
r_,(}9C Visual Explain $_4i4b)CJ=8D<Nhv,IT\bV/b M EXPLAIN m#BPZcT>Z<NPT5w XML Yw:
IXAND
> DB2 }]b~qwQ+ AND =J&CZ`vw}(hDa{#
8
XISCAN
8> DB2 }]b~qwQ9CyZ XML }]Dw}4CJ}]#
XSCAN
8> DB2 }]b~qwQT XPath mo=s5,"RQS XML D5Pi! XML
D5,N#
16 pureXML 8O
XANDOR
8> DB2 }]b~qwQ+ AND M OR
=J&CZ`vw}(hDa{#
XTQ
8> DB2 }]b~qw9CKXbmSP(TQ)++V XML rPPD?n"M =d-<}]bVx,y]CnD@@S XML D5lw XML }],;s+ XML }][/=dvrPP#
pureXML D*O'V
Z*O73P,I9C|, XML PPf"D XML D5D6L}]4#Ii/"&m 6L XML }],|(+ XML D5Vb*6Lm#
h*H*|, XML P(dPf"K*9CDD5)D6Lm4(GF,E\9C6L XML }]#
PXhC|( XML }]4D L XML }]#
pureXML D4FMB~"<'V
XML }]`MD WebSphere®Replication Server M WebSphere®Data Event Pub­lisher 'VJmz4F""<f"Z XML PPD XML D5#
I9C Q 4FZ}]b.d4F XML D5,2I9CB~"<+D54FA&CL
r#
PX*|(f"Z XML PPD XML D5D}]bhC Q 4FMB~"<D|`E
",kND WebSphere Replication Server M WebSphere Data Event Publisher D5P D“XML
}]`M08wb#
XZ XML 'VDDB
(} developerWorks®E"\mIqCXZ{C XML 'VDd{DB#b)DBf0 c:Dwb,|((FM}]F/"(CEv"p=LLM9C XML }]DnQv
(#
IZBfDx7PR=b)DB:www.ibm.com/developerworks/db2/zones/xml/#
*O53D|`E",kND*O~qwD5PD9C6
":developerWorks "G DB2 E"PDD;?V#K4S+r* DB2 E DZ]#
Z 1 B pureXML Ev 17
"PDTb
18 pureXML 8O
Z 2 B pureXML LL
I9C pureXML XML }]`M4(emP,TczIZ?PPf"%vq=<CD XML D5#>LL5wgNhC DB2 }]bTf" XML }]T0gN9C pureXML
&\?~4Py>Yw#
ZjI>LL.s,z+\;4PBPNq:
v 4(If" XML }]D DB2 }]
v 4(yZ XML }]Dw}
v + XML D5ek= XML `MDPP
v |Bf"Z XML PPD XML D5
v y] XML D5DZ]>}P
v i/ XML }]
v kT XML #=i$ XML D5
v 9C XSLT y=md; XML D5
bMm
C++"Java M PHP .`D&CLr`LoT'V XML }]`M 4+ XML }]f"Z DB2 }]bmP,SmPlw}]rwC_P XML N}Df
"}LrC'(eD/}#
>LLG*%;Vx}]b73`4D,+z2IZVx}]b73P9C pureXML & \?~#
#IT`4&CLr
Hvu~
Z DB2 |n0ZP,(}"v db2 -td~ |n(xP -td~ !nD db2 |n)4t/ DB2 |nP&mw#
-td !na+&/t{E(~)hC*odU9V{#8(1!VE(-t !n)TbDU 9V{I7#;amsbM9C{FUdywDodri/,-rG{FUdyw2 GCVEU9D#>LLPD>}9C ~ U9V{#
I+NLPD>
r_,I9C|n`-w4T;%=="v|nMod#
{FUd:LLP9CD XML D5|,{FUd#9C|,{FUdD XML D5 1,8({FUdDyPi/MX*Yw(g Z XML }]Dw}r9C XQuery mo=4i/ XML }])Xkyw,;{FU
dE\zIZ{Da{#9C|,{FUdD XML D51,yw{FUdGj<{F UdP*#
1
}T;%==dkr4F"3y= DB2 |nP&mwP#
(}9C CREATE INDEX od44(y
1. Z Windows Yw53O,H9C db2cmd |nt/ DB2 |n0Z,;s"v db2 -td~ |n#
© Copyright IBM Corp. 2006, 2009
19
NL 1:4(ITf" XML }]D DB2 }]bMm
>NLhvgN9C|, XML PDm4(}]b#
Z>LLP,z+ XML }]f"Z;vmP,xKm|,_P XML `MDPDm# kq-BP=h44(>LLP9CD}]bMm:
1. (}"vTB|n44(F* XMLTUT D}]b:
CREATE DATABASE xmltut~
1!ivB,+Z4(}]b1tCT/f"w#T/f"wITa_T\"R| ]W\m XML }],r*|+zIITy]h*xP)9D}]b \mUd
(DMS)mUd#
xR,Z1!ivB,}]b9C UTF-8(Unicode)zk/#g{!q+ ]f"Z9C UTF-8 TbDzk/D}]bP,G4nCT;xPzk3*;DN =(}g BIT DATA"BLOB r XML)ekK}]#*h9Z4P XML bvZ d9CV{}]`M,Sx@9I\"zDV{f;,k+ ENABLE_XMLCHAR
dCN}hC* NO#
2. k}]
3. 4(;v{* Customer "R|,F* INFO D XML PDm:
5XALL
b,S:
CONNECT TO xmltut~
CREATE TABLE Customer (Cid BIGINT NOT NULL PRIMARY KEY, Info XML)~
f" XML }]r_T XML }]("w}1;h*9Cw|#
9IT9C ALTER TABLE SQL od+;vr`v XML PmSAm#
NL 2:4(yZ XML }]Dw}
>NLhvgN4( XML }]w}#yZ XML }]Dw}ITa_i/ XML P DT\#kTzZ=JPT0gD5xP,S1519CD XML *XrtT("w
}#
XML }
20 pureXML 8O
X5w}M XML }]w}<TP("w}#+G,X5w}GT{vP("w} XML }]w};GTPD3?V("w}#(}8( XML #=48w*T XML P
DD)?V("w},C#=G\^FD XPath mo=#9Xk8(Q("w}D5+ ICDV}]`MxPf"#(#,z!qD`M&Cki/P9CD`M`
kX5w};y,(izT=JM;fD5,SP519CD XML *XrtT("w }#
;\T%v XML P("w};;'ViOw}#+G,;v XML PITP`vw }#
";G CREATE INDEX odDyPSd<JCZyZ XML }]Dw}#PXj8
,kND CREATE INDEX od#
E"
*4( XML }]w},k"vTBod:
,x
,#
CREATE INDEX cust_cid_xmlidx ON Customer(Info) GENERATE KEY USING XMLPATTERN
'declare default element namespace "http://posample.org"; /customerinfo/@Cid'
AS SQL DOUBLE~
Kod+T CUSTOMER mD INFO PP <customerinfo> *XD Cid tT5("w
}#1!ivB,T XML }]("w}.s,g{4\+K XML }]*;*8(D }]`M SQL DOUBLE,G4;a4(w}u?,2;a5Xms#
z8(D XML #=xVs!4#}g,g{ XML D5 tT,G4b)D5kKw}+;%d#
5XALL
NL 3:+ XML D5ek= XML `MPP
I9C INSERT SQL od+q=<CD XML D5ek= XML `MDPP#>NL
hvgN9C INSERT SQL od+q=<CD XML D5ek= XML PP#
>NLhvgN9C|nP&mw+ XML D5V/ek= XML `MPP#+G,( #a9C&CLr4ek XML D5#
\IT(}9C XML `M"~xF`MrV{`M4ek XML }],+G*K\
!
b"zzk3*;Jb,k9C XML `Mr~xF`M#Z>NLP,XML D5G V{DV#Zs`}ivB,;\1ST_P XML }]`MD?j8(V{.}
zXkWH9C XMLPARSE /}4T=bv}]#+G,Z INSERT"UPDATE r DELETE Y wP , IT1 ST XML P8 (V {. } ], x ; h *T = wC XMLPARSE /}#Zb}VivB,+~=bvV{.}]#PX|`E",kND XML bvD5#
*+}v XML D5
INSERT INTO Customer (Cid, Info) VALUES (1000, '<customerinfo xmlns="http://posample.org" Cid="1000">
<name>Kathy Smith</name> <addr country="Canada">
<street>5 Rosewood</street> <city>Toronto</city> <prov-state>Ontario</prov-state>
<pcode-zip>M6W 1E6</pcode-zip> </addr> <phone type="work">416-555-1358</phone>
</customerinfo>')~
ek=zZNL 1 P4(D Customer m,k"vBPod:
P|, cid tTx;G Cid
];
INSERT INTO Customer (Cid, Info) VALUES (1002, '<customerinfo xmlns="http://posample.org" Cid="1002">
<name>Jim Noodle</name> <addr country="Canada">
<street>25 EastCreek</street>
<city>Markham</city>
<prov-state>Ontario</prov-state>
<pcode-zip>N9C 3T6</pcode-zip> </addr> <phone type="work">905-555-7258</phone>
</customerinfo>')~
INSERT INTO Customer (Cid, Info) VALUES (1003, '<customerinfo xmlns="http://posample.org" Cid="1003">
<name>Robert Shoemaker</name>
Z 2 B pureXML LL 21
<addr country="Canada">
<street>1596 Baseline</street> <city>Aurora</city> <prov-state>Ontario</prov-state>
<pcode-zip>N8X 7F8</pcode-zip> </addr> <phone type="work">905-555-2937</phone>
</customerinfo>')~
*7OGqQI&ekG<,k"vTBod:
SELECT * from Customer~
5XALL
NL 4:|Bf"Z XML PPD XML D5
>NLhvgN(}+ UPDATE SQL odk XQuery |Bmo=dO9Cr_%@ 9C UPDATE SQL od4|B XML D5#
;9C XQuery |Bmo=xP|B
g{z9C UPDATE odx;9C XQuery |Bmo=,G4Xk4P+D5|B#
*|BzZNL 3 PekDdP;vD5D <street>"<city> M <pcode-zip> *XD5,
k"vTBod:
UPDATE customer SET info = '<customerinfo xmlns="http://posample.org" Cid="1002">
<name>Jim Noodle</name> <addr country="Canada">
<street>1150 Maple Drive</street>
<city>Newtown</city>
<prov-state>Ontario</prov-state>
<pcode-zip>Z9Z 2P2</pcode-zip> </addr> <phone type="work">905-555-7258</phone>
</customerinfo>' WHERE XMLEXISTS (
'declare default element namespace "http://posample.org";
$doc/customerinfo[@Cid = 1002]' passing INFO as "doc")~
22 pureXML 8O
XMLEXISTS =J7#vf;|,tT Cid=1002″ DD5#k"b,XMLEXISTS P D=Jmo= [@Cid = 1002] 48(*V{.HO [@Cid = 1002] D-r#-rZ
ZzZ70 2 P* Cid tT4(w}19CK DOUBLE }]`M#*K9Cw}k Ki/%d,Z=Jmo=P;\+
Cid 8(*V{.#
*7OGqQ|B XML D5,k"vTBod:
SELECT * from Customer~
|, Cid=1002DG<P|,Q|DD <street>"<city> M <pcode-zip> 5#
g{IT(}9C;vmDG XML P54j6KmPD XML D5,G4IT9C SQL HO=J4j6*|BDP#Z0;v> } P, XML D5PD Cid 59f"Z CUSTOMER mD CID PP,zI\Q9C CID
PPD SQL HO=J4j6P#Z
0;>}P,IT+ WHERE Sdf;*TBSd:
WHERE Cid=1002
9C XQuery |Bmo=xP|B
g{z+ UPDATE odk XQuery |Bmo=dO9C,G4IT|BVP XML D
5D3)?V#
*|BVP XML D5PDM'X7,k"vTB SQL od,|9CK XQuery d; mo=:
UPDATE Customer set Info =
XMLQUERY(' declare default element namespace "http://posample.org"; transform copy $mycust := $cust modify
do replace $mycust/customerinfo/addr with
<addr country="Canada">
<street>25 EastCreek</street> <city>Markham</city> <prov-state>Ontario</prov-state> <pcode-zip>N9C 3T6</pcode-zip>
</addr> return $mycust' passing INFO as "cust")
WHERE CID = 1002~
*|BM'X7,XMLQUERY /}+4Pd9Cf;mo=D XQuery d;mo=, ;s+Q|BDE"5XA UPDATE od,gBy>:
v XMLQUERY +]Sd9Cj6 cust T+ XML P INFO PDM'E"+]A
XQuery mo=#
v Zd;mo=D copy SdP,+q!M'E"
?#
v Zd;mo=D modify SdP,f;mo=af;M'E"1>PDX7E"# v XMLQUERY aZ $mycust d?P5XQ|BDM'D5#
D_-lU"+d8(x $mycust d
*7O XML D5Gq|,Q|BDM'X7,k"vTBod:
SELECT Info FROM Customer WHERE Cid = 1002~
5XALL
NL 5:>} XML }]
>NLhvgN9C SQL od4>}{v XML D5r_v>} XML D5D3)?
V#
>}{v XML D5
*>}{v XML D5,I9C DELETE SQL od#9C XMLEXISTS =J4j6 *>}DX(D5#
*S INFO PPv>}d <customerinfo> *X_P Cid=1003 tTDG) XML D5, k"vTBod:
DELETE FROM Customer WHERE XMLEXISTS (
'declare default element namespace "http://posample.org";
$doc/customerinfo[@Cid = 1003]' passing INFO as "doc")~
Z 2 B pureXML LL 23
g{IT(}9C;vmDG XML P54j6KmPD XML D5,G4IT9C SQL HO=J4j6*>}DP#Z0;v> } P, XML D5PD Cid 59f"Z CUSTOMER mD CID PP,zI\Q9CTB DELETE od4PK`,DYw,b a+ SQL HO=J&CZ
DELETE FROM Customer WHERE Cid=1003~
CID PTj6P:
*7OGqQ>} XML D5,k"vTB SQL od:
SELECT * FROM Customer~
+5X=uG<#
>} XML D5D3)?V
*v>} XML D5D3)?Vx;G>}{vD5,k9C|,“>} XQuery |Bmo=D UPDATE SQL od#
*S Cid D5* 1002 DM'G<P>}yPg0E",k"vTB9C XMLQUERY /}D SQL od:
UPDATE Customer SET info = XMLQUERY(
'declare default element namespace "http://posample.org";
transform copy $newinfo := $info modify do delete ($newinfo/customerinfo/phone) return $newinfo' passing info as "info")
WHERE cid = 1002~
*}% <phone> *X,XMLQUERY /}+4Pd9C>}mo=D XQuery d;m o=,;s+Q|BDE"5XA UPDATE od,gBy>:
v XMLQUERY +]Sd9Cj6 info + XML P INFO PDM'E"+]A XQuery
mo=#
v Zd;mo=D copy SdP,+q!M'E"D_
d?#
v Zd;mo=D modify SdP,>}mo=a>}M'E"1>PD <phone> *
X#
v XMLQUERY aZ $newinfo d?P5XQ|BDM'D5#
*7OM'G<PGqQ;Y|, <phone> *X,k"vTBod:
SELECT * FROM Customer WHERE Cid=1002~
5XALL
NL 6:i/ XML }]
>NLhvgN9C SQL M/r XQuery(9C XQuery mo=)4i/ XML }]#
g{zv9C SQL,G4;\ZP6pxPi/#2MG5,IT5Xf"ZPPD{
v XML D5,+;\ZD5ZxPi/r_5XD5,N#*Z XML D5Zi/5
5XD5,N,Xk9C XQuery#
r_
-lU"+d8(x $newinfo
24 pureXML 8O
>NLPDi/Z SQL OBDP9C XQuery,Z XQuery OBDP9C SQL#
X*Bn:XQuery xVs!4,+ SQL ;xVs!4#rK,Z9C XQuery 1,
8(ngm{M SQL #={(1!ivB,b=v{F<Gs4).`D{F1;( *!D#49Z SQL OBDP,XQuery mo=T+xVs!4#
Z SQL OBDPi/
lw{v XML D5
*lwf"Z{* INFO DPPDyP XML D5T0 CID w|PPD5, k"vTB SELECT od:
SELECT cid, info FROM customer~
Ki/5X=vf"D XML D5#
lwM}K XML 5
*Z INFO PD XML D5Pi/,k"vTB SELECT od,|+9C XMLQUERY /}4wC XQuery mo=:
SELECT XMLQUERY (
'declare default element namespace "http://posample.org";
for $d in $doc/customerinfo
return <out>{$d/name}</out>'
passing INFO as "doc") FROM Customer as c WHERE XMLEXISTS ('declare default element namespace "http://posample.org";
$i/customerinfo/addr[city="Toronto"]' passing c.INFO as "i")~
Z XMLQUERY /}P,WH8(1!{FUd#K{FUdkH0ekDD 5D{FUd%d#for Sd8((} INFO PP?vD5D <customerinfo>
*XxP|z#INFO PG9C passing Sd8(D,CSd+ INFO Ps( A for SdPy}CD doc d?#;s,return Sd9l;v
C*X|, for Sd?N|zzID <name> *X#
WHERE Sd9C XMLEXISTS =J4v<G INFO PPD;?VD5#K }KvzI <city> *X(X8(D76)D5* Toronto DG)D5#
K SELECT od+5XTBQ9l*X:
<out xmlns="http://posample.org"><name>Kathy Smith</name></out>
9C db2-fn:sqlquery 1=xN}
*+5+]A db2-fn:sqlquery /}PD SQL +i/,kKPTBi/:
VALUES XMLQUERY (
'declare default element namespace "http://posample.org";
for $d in db2-fn:sqlquery(
''SELECT INFO FROM CUSTOMER WHERE Cid = parameter(1)'',
$testval)/customerinfo return <out>{$d/name}</out>' passing 1000 as "testval" )~
XMLQUERY /}(}9Cj6 testval +5 1000 +]A XQuery mo=#
;s XQuery mo=(}9C PARAMETER j?/}+C5+]A db2- fn:sqlquery /}#
<out> *X,
XQuery mo=+5XTBQ9l*X:
<out xmlns="http://posample.org">
<name>Kathy Smith</name>
</out>
Z 2 B pureXML LL 25
Z XQuery OBDPi/
DB2 XQuery XXa)K TB=vZC/ } ,Tk DB2 }]bdO9C :db2­fn:sqlquery M db2-fn:xmlcolumn#db2-fn:sqlquery lww* SQL +i/Da{mDr P#db2-fn:xmlcolumn S XML PPlwrP#
g{i/1SwC XQuery mo=,G4XkZ|0fmS;xVs!4DX|V XQUERY#
":IThC8v!
n4(F|nP&mw73,XpGCZT> XQuery mo=Da
{#}g,4gBy>hC -i !n,Tc|]WDA XQuery mo=Da{:
UPDATE COMMAND OPTIONS USING i ON~
lw{v XML D5
*lwH0ek= INFO PPDyP XML D5,IT+ XQuery k db2- fn:xmlcolumn r db2-fn:sqlquery dO9C#
9C db2-fn:xmlcolumn
*lw INFO PPDyP XML D5,kKPTBi/:
XQUERY db2-fn:xmlcolumn ('CUSTOMER.INFO')~
1!ivB,SQL odPD{F+T/*;*s4#rK,19C CREATE TABLE SQL od4(K CUSTOMER m1,m{MP{< *s4#r* XQuery xVs!4,yTZ9C db2-fn:xmlcolumn 8
(m{MP{1Xk9C}7Ds!4#
Ki/H[Z SQL i/ SELECT Info FROM Customer#
9C db2-fn:sqlquery
*lw INFO PPD
XQUERY db2-fn:sqlquery ('SELECT Info FROM Customer')~
yP XML D5,kKPTBi/:
z;XICs4V848( INFO {FM CUSTOMER {F,bGr
* SELECT odGZ SQL OBDP&mD,rK;xVs!4#
26 pureXML 8O
lw?V XML D5
}Klw{v XML D5.b,9IT(}+ XQuery k db2-fn:xmlcolumn r db2-fn:sqlquery dO9C4lwD5,N"}KD5PfZD5#
9C db2-fn:xmlcolumn
*5X|, INFO PPyPD5D <name> ZcD*X,b)D5z c“<city> *X(X8(D76)D5* Toronto,kKPTBi/:
XQUERY declare default element namespace "http://posample.org";
for $d in db2-fn:xmlcolumn('CUSTOMER.INFO')/customerinfo where $d/addr/city="Toronto" return <out>{$d/name}</out>~
db2-fn:xmlcolumn /}S CUSTOMER mD INFO PPlwrP#for Sd+ $d d?s(A CUSTOMER.INFO PPD?v <customerinfo> *X#where Sd+D5^F* <city> *X(X8(D76)D5* Toronto DG)D5#return Sd+9ly5XD XML 5#K5G; v <out> *X,||,zcZ where SdPy8(u <name> *X,gBy>:
~DyPD5D
<out xmlns="http://posample.org"> <name>
</name> </out>
9C db2-fn:sqlquery
*Z XQuery mo=P"v+i/,kKPTBi/:
XQUERY declare default element namespace "http://posample.org";
for $d in db2-fn:sqlquery(
'SELECT INFO
FROM CUSTOMER
WHERE Cid < 2000')/customerinfo where $d/addr/city="Toronto" return <out>{$d/name}</out>~
ZK>}P,WHZ+i/PCG XML CID PPDX(5^F*;i /D XML D5/#K>}5wK db2-fn:sqlquery DEc:|JmZ
XQuery mo=P&C SQL =J#;s,Z XQuery mo=D where
SdP,+ SQL i/zIDD5x;=^F* <city> *X(X8( D76)D5
Ki/zzDa{k9C db2-fn:xmlcolumn D0;v>}zzDa{`
,#
<out xmlns="http://posample.org"> <name>
</name> </out>
Kathy Smith
* Toronto DG)D5#
Kathy Smith
9C db2-fn:sqlquery 1=xN}
*+5+]A db2-fn:sqlquery /}PD SQL +i/,kKPTBi /:
XQUERY declare default element namespace "http://posample.org";
let $testval := 1000 for $d in db2-fn:sqlquery(
'SELECT INFO FROM CUSTOMER WHERE Cid = parameter(1)', $testval)/customerinfo
return <out>{$d/name}</out>~
Z XQuery mo=P,let Sd+ $testval D5hC* 1000#;s, Z for SdP,mo=a9C PARAMETER j?/}+C5+]A
db2-fn:sqlquery /}#
XQuery mo=+5XTBQ9l*X:
<out xmlns="http://posample.org">
<name>Kathy Smith</name>
</out>
5XALL
NL 7:kT XML #=i$ XML D5
>NLhvgNi$ XML D5#;\kT XML #=i$ XML D5;;'VkT DTD xPi$#d;z;\kT DTD xPi$,+GT;ITek|, DOCTYPE
r_}C DTD DD5#
Z 2 B pureXML LL 27
IT9C;)$_(}g,IBM Rational®Application Developer PD$_)4ozz
y]wV4(dP|( DTD"mM XML D5)zI XML #=#
Zi$.0,XkrZC XML #=f"b(XSR)"a XML #=#K}Lf0="
aiI XML #=D?v XML #=D5,;sjI"a#;V"a XML #=D= (G9C|n
#
*"a#=D5MjI posample.customer XML #=D"a,kKPTB|n#(r*
K XML #=vI;v#=D5iI,yTI9C%v|n4"aD5MjI"a#) K|n+8( sqllib/samples/xml ?<DxT76#g{53OD76;GT c:/sqllib/ *
7,G4kZ|n
REGISTER XMLSCHEMA 'http://posample.org' FROM 'file:///c:/sqllib/samples/xml/customer.xsd' AS posample.customer COMPLETE~
P`&X^DD~76#
(}i/ SYSCAT.XSROBJECTS ?<S<(||,PXf"Z XSR PDTsDE "),MITi$GqI&"aKC XML #=#*K|Se~wK,TKi/0da {xPK`E,gBy>:
SELECT OBJECTSCHEMA, OBJECTNAME FROM SYSCAT.XSROBJECTS~
OBJECTSCHEMA OBJECTNAME
-------------------- -------------------­POSAMPLE CUSTOMER
VZ,IT9C XML #=4xPi$#(#,Z4P INSERT r UPDATE YwZ
d9C XMLVALIDATE /}44Pi$#v1i$I&.s ,Ea4PTd8(K XMLVALIDATE D INSERT r UPDATE Yw#
*+ XML D5ek CUSTOMER mD INFO P(*sKD5TZ posample.customer XML #=P'),k"vTBod:
INSERT INTO Customer(Cid, Info) VALUES (1003, XMLVALIDATE (XMLPARSE (DOCUMENT '<customerinfo xmlns="http://posample.org" Cid="1003">
<name>Robert Shoemaker</name> <addr country="Canada">
<street>1596 Baseline</street> <city>Aurora</city> <prov-state>Ontario</prov-state>
<pcode-zip>N8X 7F8</pcode-zip> </addr> <phone type="work">905-555-7258</phone> <phone type="home">416-555-2937</phone> <phone type="cell">905-555-8743</phone> <phone type="cottage">613-555-3278</phone>
</customerinfo>' PRESERVE WHITESPACE ) ACCORDING TO XMLSCHEMA ID posample.customer ))~
K>}PD XML D5w*V{}]+]#+G,XMLVALIDATE vT XML }]x
PYw#r* XML D5w*V{}]4+],yTzXk9C XMLPARSE /}4T =bv}]#XMLPARSE /}+dTd?bv* XML D5"5X XML 5#
28 pureXML 8O
DB2 } ] b ~ q w T 3 ) Y w 4 P ~ = b v
# } g , 1 z Z
INSERT"UPDATE"DELETE r MERGE odP+}]`M* STRING(V{"<N r~xF)Dwd?"N}jGr SQL mo=8(x XML P1,Ma4P~=b
v##
*i$GqI&jIKekMi$Yw,ki/ INFO P:
SELECT Info FROM Customer~
Ki/&5X}v XML D5,dP;vGzUekDD5#
5XALL
NL 8:9C XSLT y=mxPd;
> N L h v g N 9 C I ) 9 y = m o T d ; ( XSLT) y = m M Z C / } XSLTRANSFORM +}]bPD XML }]*;*d{q=#
T;v|,Nb}?Ds'zG<D XML D5*}#?v student *X|,'zDj 6"{V"UO"jdT0MADs'#TBD
<?xml version="1.0"?> <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student studentID="1" givenName="Steffen" familyName="Siegmund"
age="21" university="Rostock"/>
<student studentID="2" givenName="Helena" familyName="Schmidt"
age="23" university="Rostock"/>
</students>
Kb,Y(z#{i! XML G<PDE""4(IZ/@wPi4D HTML Web 3
f#*d;E",h*BP XSLT y=m:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="headline"/> <xsl:param name="showUniversity"/> <xsl:template match="students">
<html>
<head/>
<body>
<h1><xsl:value-of select="$headline"/></h1>
<table border="1">
<th>
<tr>
<td width="80">StudentID</td>
<td width="200">Given Name</td>
<td width="200">Family Name</td>
<td width="50">Age</td>
<xsl:choose>
<xsl:when test="$showUniversity =''true''">
<td width="200">University</td>
</xsl:when> </xsl:choose> </tr> </th> <xsl:apply-templates/> </table> </body> </html> </xsl:template>
<xsl:template match="student">
<tr> <td><xsl:value-of select="@studentID"/></td> <td><xsl:value-of select="@givenName"/></td> <td><xsl:value-of select="@familyName"/></td> <td><xsl:value-of select="@age"/></td> <xsl:choose>
<xsl:when test="$showUniversity = ''true'' ">
<td><xsl:value-of select="@university"/></td>
</xsl:when>
5|,=v'z:
Z 2 B pureXML LL 29
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
</tr>
*d;}]:
1. (}KPBP|n44(=vCZf" XML D5My=mD5Dm:
CREATE TABLE XML_DATA (DOCID INTEGER, XML_DOC XML )~ CREATE TABLE XML_TRANS (XSLID INTEGER, XSLT_DOC CLOB(1M))~
2. 9CBP INSERT od+ XML D5M{v XSLT y=mekmP#
*Kr`wKp{,ZK=hP,Z~v INSERT odPT>KQXOD XSLT y =m#Z9CKod.0,k+QXODy=mf;*H0P>D XSLT y=m#
INSERT INTO XML_DATA VALUES
(1,
'<?xml version="1.0"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student studentID="1" givenName="Steffen" familyName="Siegmund"
age="21" university="Rostock"/>
<student studentID="2" givenName="Helena" familyName="Schmidt"
age="23" university="Rostock"/>
</students>'
)~
INSERT INTO XML_TRANS VALUES
(1, '<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"
...
</xsl:stylesheet>'
)~
3. (}wC XSLTRANSFORM /}4d; XML D5:
SELECT XSLTRANSFORM (XML_DOC USING XSLT_DOC AS CLOB(1M))
FROM XML_DATA, XML_TRANS WHERE DOCID = 1 and XSLID=1~
30 pureXML 8O
Kd;Ddv*TB HTML D~:
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1></h1> <table border="1"> <th> <tr> <td width="80">StudentID</td> <td width="200">Given Name</td> <td width="200">Family Name</td> <td width="50">Age</td> </tr> </th> <tr> <td>1</td> <td>Steffen</td><td>Siegmund</td> <td>21</td> </tr> <tr> <td>2</td><td>Helena</td><td>Schmidt</td> <td>23</td>
</tr> </table> </body> </html>
zI\#{Dd XSLT y=mZKP1DP*,TmS4|,Z XML G<PDE"
r_|Ddv>mDTJ(}g,|D*4( XHTML dvx;Gj< HTML dv)#
*DdP*,IT9CN}D~+N}+]A XSLT xL#N}D~>mG XML D 5,"R|
,T&Z XSLT y=mD~P`FodD param od#
<GZy=mP(eD"+GZ0;d;P49CDTB=vN}:
<xsl:param name="showUniversity"/> <xsl:param name="headline"/>
*K9 C b )N}4d; XML D 5,IT+N}D~f"Zm P " +KD~k XSLTRANSFORM /}dO9C#
1. 4( PARAM_TAB m4f"N}D~:
CREATE TABLE PARAM_TAB (DOCID INTEGER, PARAM VARCHAR(1000))~
2. 4gBy>4(N}D~:
INSERT INTO PARAM_TAB VALUES
(1, '<?xml version="1.0"?> <params xmlns="http://www.ibm.com/XSLTransformParameters">
<param name="showUniversity" value="true"/>
<param name="headline">The student list</param> </params>' )~
3. (}wC XSLTRANSFORM /}4d; XML D5:
SELECT XSLTRANSFORM (XML_DOC USING XSLT_DOC WITH PARAM AS CLOB(1M) )
FROM XML_DATA X , PARAM_TAB P, XML_TRANS WHERE X.DOCID=P.DOCID and XSLID=1~
K}LDdv*TB HTML D~:
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>The student list</h1> <table border="1"> <th> <tr> <td width="80">StudentID</td> <td width="200">Given Name</td> <td width="200">Family Name</td> <td width="50">Age</td> <td width="200">University</td> </tr> </th> <tr> <td>1</td> <td>Steffen</td><td>Siegmund</td> <td>21</td> <td>Rostock</td> </tr> <tr> <td>2</td> <td>Helena</td><td>Schmidt</td> <td>23</td>
Z 2 B pureXML LL 31
<td>Rostock</td> </tr> </table> </body> </html>
5XALL
32 pureXML 8O
Z 3 B XML f"w
ek=`M* XML DPPD XML D5I$tZ1!f"Tsr1Sf"Zy>mP P#y>mPf"IzXF,"RvICZ!MD5;OsDD5\Gf"Z1!f "TsP#
Gq+D5f"Zy>mPP!vZf"MT\*sT0S\D==#
XML f"Ts
b
f"Udr_,}K3s!DD5\Gf"Z1!f"TsP#f"Z1 !f "TsPJmzekMlwns 2GBD XML D5#
y>mPf"
TZyhf"UdYZ 32 KB D XML D5,IT!q1S+ XML D "Zy>mPP#r*h*D I/O YwuY,yTK!naa_i/"ek"
|Br>} XML D5DT\#
g{TKmtC}]P9u,G4f"Z1! XML f"TsMy>mPPD XML D 5+xP9u#-}9u.s,ITa_T XML D54P I/O Y Yh*Df"Ud#
XML f"Ts
Gf" XML D5D1!=(#;\z!qgNf",h* 32 KB TOD
5f
wD'J,9ITu
1!ivB DB2 }]b~qw+`M* XML DmPP|,D XML D5f"Z XML f"TsP,LOB }]T`F==f"Z;,ZmDd{Z]D;C#
XML f"Tsk|GD8mTsGV*D,+f"Ts@5Z8mTs#TZf"Z XML mPDPPD?v XML DG<,CG<8(SX*D XML f"TsPDN&lwf"ZELOD XML } ]#f"Z53\mUdP1,k XML f"TsX*DD~_PD~`M)9{ .xda#P1+ XML f"TsF* XML }]x(XDA)
n`IT+s!* 2 *VZD XML D5f"Z}]bP#r* XML }]I\G# s,yTI\*kd{}]D:en/V*%@`S XML }]D:en/#a)K; )`S*X4ozz`S XML f"TsD:eXn/#
PX9C XML f"TsD XML P
F}”(4Z“CREATE TABLE odP8( INLINE LENGTH)#
XML y>mPf"w
I!q+!MMPM XML D5f"Zy>mPP,x;G+|Gf"Z1! XML f "TsP#XML D5DPf"`FZa9/`M5}T1SekD==f"ZmPPD
iv#
5,DB2 <a,$;uF* XML }]5w{(XDS)
#
yhDUdDd{E",kND XML PDVZ
ZtCy>mPf".0,h*v(*+`YPUdCZ?v XML PDPf"#Ia
Ud!vZICDnsPs!,xnsPs!V!vZ4(mDmUdD3s!
)D
© Copyright IBM Corp. 2006, 2009 33
T08(*mD;?VDd{P#*FcICDPUd,kND XML PD“Ps!”M VZF}”T0“CREATE TABLE odP8(D“INLINE LENGTH”#
tCy>mPf"
IZ4(|, XML PDmrDd|, XML PDVPm1,8(XML D5&f"Z y>mPPx;Gf"Z1! XML f"TsP*tCy>mPf",TZ&9CPf
"D?v XML P,h*+ INLINE LENGTH X|Vk CREATE TABLE r ALTER TABLE od|(Z;p,sz*f"Zy>mPPD XML D5D
F)#
"b,DdVPmD XML P;a+Q-f"ZCPPD XML D5T/F=y>mP P#*F/ XML D5,Xk9C UPDATE od|ByP XML D5#
nss!(TVZ
^F
y>mPf"vI)Z?m>;,} 32 KB(g{Ps!O!,G4a|!)D XML
D59C,,1h*u%8(K INLINE LENGTH !nD XML PDXhVZF}* z#32 KB s!Y(mUd3s!* 32 KB#f",}8(1Sek$HD XML D
51,,}s!DD5+
;)T XML P8(K1Sek$H,M;\a_CZ XML D5DPf"D1Sek $Hs!,+;\5MCs!#
T/f"Z1! XML f"TsP#
>}
TB>}T SAMPLE }]bPD PRODUCT mD XML P DESCRIPTION tC XML D5Dy>mPf"#K>}+*f"Zy>mPPD XML D5Dns1Sek$H
hC* 32000 VZ,ba**ztBnbyhUd#9C5“32000 VZ1Y(mUd
3s!* 32 KB#Dd XML Ps,UPDATE oda+
ALTER TABLE PRODUCT
ALTER COLUMN DESCRIPTION
SET INLINE LENGTH 32000
UPDATE PRODUCT SET DESCRIPTION = DESCRIPTION
TB>}4(D MYCUSTOMER mk SAMPLE }]bD CUSTOMER m`F,+d
y>mPf"GT XML P Info 8(D#ek= INFO PP1,Z?m>;,} 2000 VZDD5+f"Zy>mPP#
CREATE TABLE MYCUSTOMER (Cid BIGINT NOT NULL,
Info XML INLINE LENGTH 2000, History XML, CONSTRAINT PK_CUSTOMER PRIMARY KEY (Cid)) in IBMDB2SAMPLEXML
XML D5Df"*s
XML D5Z DB2 }]bPy<CDUds!I-<q=DD5Dnus!M;)d{ rX7(#
XML D5F=y>mPP#
34 pureXML 8O
TBPm|,b)rXPnX*D?V:
D5a9
|,4SjGD XML D5h*Df"wUdH_Pr%jGDD5yhDU
d*s#}g,g{;v XML D5_Pm`6W*X,?v6W*X|,Y ?D>r_PrLDtT5,G4CD5<CDf"wUd Hw*ID>Z]
iID XML D5*`#
Zc{ *X{F"tT{F"{FUd0:T0`FDGZ]
}]D$H20lf"
wDs!#9u-<q=,} 4 VZDNNbV`MDE"%*TxPf", +9Cf"w'JH9CO$DZc{*_#
tT}k*X}.H
(#,?v*X9CDtT=`,XML D5yhDf"wUds!M=!#
D5zk3
g{ XML D5y9CD`k9C?vV{*9C`vVZ,G4C XML D 5<CDf"wUds!H9C%VZV{/DD5*s#
9u g{T|, XML PDmtC}]P9u,G4 XML D5h*Df"Ud|
Y#
g{mP|,9C
DB2 f> 9.5 r|Mf>D XML G<q=D XML P,
G4;'V9uCmD XML f"TsPD}]#g{TbyDmtC}]P 9u,G4+;9umTsPDmP}]#*9mD XML f"TsPD}] I)9u,k9C ADMIN_MOVE_TABLE f"}L4(FKm,;s
tC}
]P9u#
Z 3 B XML f"w 35
36 pureXML 8O
Z 4 B ek XML }]
XkH4(|, XML PDm,rrVPmmS XML P,E\ek XML D5#
4(_P XML PDm
*4(_P XML PDm,Z CREATE TABLE odP8( XML }]`MDP#;
vmITP;vr`v XML P#
(e XML P1;*8($H#+G,k DB2 }]b;;DQrP/ XML }]Ds
!^F*?v XML `MD5P 2GB,rK,XML D5DP'^F* 2GB#
k LOB P;
y,XML Pv|,PDhv{#}]%@f"#
":
v g{TmtC}]P9u,G4 XML D5h*Df"Ud|Y#
v I!q+!MMPM XML D5f"Zy>mPP,x;G+|Gf"Z1! XML
f"TsP#
>}:y>}]b|,;vM'}]m,
CREATE TABLE Customer (Cid BIGINT NOT NULL PRIMARY KEY,
Info XML, History XML)
||,=v XML P#(egBy>:
>}:VALIDATED =JliGqi$K8(D XML PPD5#IT9C VALI- DATED =J(eT XML PDmli<x,T7#ZmPekr|BDyPD5<P
'#
CREATE TABLE TableValid (id BIGINT,
xmlcol XML, CONSTRAINT valid_check CHECK (xmlcol IS VALIDATED))
>}:+ COMPRESS tThC* YES MatC}]P9u#f"Z XML PPD XML D5+xPP9u#9uP6pD}]1,Jm+X4D#=f;*|LD{EV
{.#
CREATE TABLE TableXmlCol (id BIGINT,
xmlcol XML) COMPRESS YES
>}:TB CREATE TABLE od4(4=CUZVxD<_m#iZ 2000 j 1 B 1 U= 2006 j 12 B 31 U.dDyPG<ZZ;vVxZ#nBD}]4? 6 v
B44(Vx#
CREATE TABLE Patients ( patientID BIGINT, visit_date DATE, diagInfo XML,
prescription XML ) INDEX IN indexTbsp LONG IN ltbsp PARTITION BY ( visit_date )
( STARTING '1/1/2000' ENDING '12/31/2006',
STARTING '1/1/2007' ENDING '6/30/2007',
ENDING '12/31/2007', ENDING '6/30/2008', ENDING '12/31/2008', ENDING '6/30/2009' );
© Copyright IBM Corp. 2006, 2009 37
+ XML PmSAVPm
*+ XML PmS=VPm,IZxP ADD SdD ALTER TABLE odP8(}] `M* XML DP#;vmITP;vr`v XML P#
>} y>}]b|,;vM'}]m,||,=v XML P#(egBy>:
CREATE TABLE Customer (Cid BIGINT NOT NULL PRIMARY KEY,
4(;v{* MyCustomer Dmw* Customer D1>,"mS;v XML P4hvM
'D2C#
CREATE TABLE MyCustomer LIKE Customer; ALTER TABLE MyCustomer ADD COLUMN Preferences XML;
>}:+ COMPRESS tThC* YES MatC}]P9u#f"Z XML PPD XML D5+xPP9u#9uP6pD}]1,Jm+X4D#=f;*|LD{EV
{.#
ALTER TABLE MyCustomer ADD COLUMN Preferences XML COMPRESS YES;
>}:TB CREATE TABLE od4(4=CUZVxD<_m#iZ 2000 j 1 B 1 U= 2006 j 12 B 31 U.dDyPG<ZZ;vVxZ#nBD}]4? 6 v
B44(Vx#
CREATE TABLE Patients ( patientID INT, Name Varchar(20), visit_date DATE,
diagInfo XML )
PARTITION BY ( visit_date )
( STARTING '1/1/2000' ENDING '12/31/2006',
STARTING '1/1/2007' ENDING '6/30/2007',
Info XML, History XML)
ENDING '12/31/2007', ENDING '6/30/2008', ENDING '12/31/2008', ENDING '6/30/2009' );
TB ALTER modmSPX<_&=E"Dm; XML P:
ALTER TABLE Patients ADD COLUMN prescription XML ;
ek= XML PP
*+}]ek= XML PP,I9C SQL INSERT od#XML PDdkXkGq= <CD XML D5,g XML 1.0 f6Py(eDGy#&CLr}]`MITG
XML"V{r~xF`M#
(i(}wd?x;GVf5ek XML }],Tc DB2 }]b~qwIT9Cw
?}]`M47(;)`kE"#
&CLrPD XML }]ICdrP/V{.q=#+}]ek= XML PP1,|X k*;*d XML Vcq=#g{&CLr}]`MG XML }]`M,G4 DB2 }
]b~qw+~=4PKYw#g{&CLr}] kYw1IT=wC XMLPARSE /},T+}]SdrP/V{.q=*;* XML
Vcq=#
ZD5ekZd,9I\k*kTQ"aD XML #=i$ XML D5#IT9C XMLVALIDATE /}44PKYw#
38 pureXML 8O
d
`M;G XML `M,G4Z4Pe
BP>}5wKgN+ XML }]ek= XML PP#b)>}9Cm MyCustomer, |Gy> Customer mD1>#*ekD XML }]ZD~ c6.xml P,"R4p4g By>:
<customerinfo Cid="1015">
<name>Christine Haas</name> <addr country="Canada">
<street>12 Topgrove</street> <city>Toronto</city> <prov-state>Ontario</prov-state>
<pcode-zip>N8X-7F8</pcode-zip> </addr> <phone type="work">905-555-5238</phone> <phone type="home">416-555-2934</phone>
</customerinfo>
>}:Z JDBC &CLrP,T~xF}]DN=A!D~ c6.xml PD XML }],
"+}]ek= XML PP:
PreparedStatement insertStmt = null; String sqls = null; int cid = 1015; sqls = "INSERT INTO MyCustomer (Cid, Info) VALUES (?, ?)"; insertStmt = conn.prepareStatement(sqls); insertStmt.setInt(1, cid); File file = new File("c6.xml"); insertStmt.setBinaryStream(2, new FileInputStream(file), (int)file.length()); insertStmt.executeUpdate();
XML bv
>}:Z2,6k= C &CLrP,+}]S~xF XML wd?ek= XML PP:
EXEC SQL BEGIN DECLARE SECTION;
sqlint64 cid;
SQL TYPE IS XML AS BLOB (10K) xml_hostvar; EXEC SQL END DECLARE SECTION; ... cid=1015; /* Read data from file c6.xml into xml_hostvar */ ... EXEC SQL INSERT INTO MyCustomer (Cid,Info) VALUES (:cid, :xml_hostvar);
XML bvG+ XML }]SdrP/V{.q=*;*Vcq=D}L#
ITC DB2 }]b~qw~=4Pbv,2ITT=4P XML bv#
~=
XML
bv
ZBPivBxP
:
v 9C`M* XML Dwd?r9C`M* XML DN}jG+}]+]A}]b~q
w1
}]b~qwZs(wd?rN}jGD5TcZod&mZd9C1xPbv
ZbVivB,Xk9C~=bv#
v Z INSERT" UPDATE" DELETE r MERGE o d P+
V{ .} ]`M
(character"graphic r binary)Dwd?"N}jGr SQL mo=8(x XML P 1#1 SQL `kw~=+ XMLPARSE /}mSACod1xPbv#
Z 4 B ek XML }] 39
Tdk XML }]wC XMLPARSE /}1,4P
T=
XML
bv
#ITZS\ XML
}]`MDNNOBDP9C XMLPARSE Da{#}g,IT+a{8(x XML P
r+|Cw`M* XML Df"}LN}#
XMLPARSE /}ICG XML"V{r~xF}]`Mw*dk#TZ6k=/, SQL
&CLr,h*+m> XMLPARSE DdkD5DN}
jG*;*`&D}]`M#}
g:
INSERT INTO MyCustomer (Cid, Info)
VALUES (?, xmlparse(document cast(? as clob(1k)) preserve whitespace))
TZ2,6k= SQL &CLr,;\+ XMLPARSE /}Dwd?Td?yw* XML
`M(XML AS BLOB"XML AS CLOB r XML AS DBCLOB `M)#
XML bvMUq&m
Z~=rT= XML bvZd,+}]f"Z}]bP1,ITXFG#t9G%t_ gUqV{#
y] XML j<,UqGD5PCZa_IATDdtV{(U+0020)"X5{ (U+000D)" ;P{(U+000A)rFm{(U+0009)#1NNb)V{w*D>V
.D;?VvV1,;+|GS*Uq#
{
_gUq
GvVZ*X.dDUqV{#}g,ZTBD5P,<a> k <b> T0 </b>
k </a> .dDUqG_gUq#
<a> <b> and between </b> </a>
(}T=wC XMLPARSE, I T 9 C STRIP WHITESPACE r PRESERVE WHITESPACE !n4XFGq#t_gUq#1!P*G%t_gUq#
(}~= XML bv:
v g{dk}]`M;G XML `Mr4*;* XML }]`M,G4 DB2 }]b~
qw\G%tUq#
v g{dk}]`MG
XML }]`M,G4IT9C CURRENT IMPLICIT
XMLPARSE OPTION (CDfw4XFGq#t_gUq#IT+K(CDfwh C* STRIP WHITESPACE r PRESERVE WHITESPACE#1!P*G%t_gU
q#
g{9C XML i $,G4 DB2 }]b~qw+vT CURRENT IMPLICIT XMLPARSE OPTION (CDfw,";9Ci$fr47(BP>
}PG%t9G#
tUq:
xmlvalidate(? ACCORDING TO XMLSCHEMA ID schemaname) xmlvalidate(?) xmlvalidate(:hvxml ACCORDING TO XMLSCHEMA ID schemaname) xmlvalidate(:hvxml) xmlvalidate(cast(? as xml) ACCORDING TO XMLSCHEMA ID schemaname) xmlvalidate(cast(? as xml))
40 pureXML 8O
ZKivB,? m> XML }],x :hvxml G XML wd?#
PX XML i$gN0lUq&m==DE",kND XML i$#
XML j<8( xml:space tT,|CZXFG%t9G#t XML }]PDUq# xml:space tT2GNNUqhCTxP~=rT= XML bv#
}g,ZTBD5P,^[ XML bv!ngN,\G#t}CZ <b> 0sDUq, r*b)Uq;Z_PtT xml:space="preserve" DZcZ
<a xml:space="preserve"> <b> <c>c</c>b </b></a>
:
+G,ZTBD5P,ITC XML bv!nXF}CZ <b> 0sDUq,r*b) Uq;Z_PtT xml:space="default" DZcZ:
<a xml:space="default"> <b> <c>c</c>b </b></a>
G Unicode }]bPD XML bv
+ XML D5+]AG Unicode }]b1,WHD5SM'z+]A?j}]b~q w1axPzk3*;,;sZD5+]A DB2 XML bvw1axPzk3*;#9
C`M* XML Dwd?rN}jG+] XML D5I\bxPzk3*;#g{9C
}]`M(CHAR"VARCHAR"CLOB r LONG VARCHAR)+] XML D5,
V{ G4zk3*;I\<B}k XML }]Z4|,Z?j}]bzk3PDNNV{D f;V{#
*\b}kf;V{0Qek XML }]D1Z5M,&7#9CV{}]`Mbv XML }]1,4
NNV{,I9C.xFr.yxFV{5e}C48(}7D Unicode zkc#} g,> or > IC48( >(sZE)V{#
D5PDyPzkc<Z?j}]bzk3P#TZ;ZKzk3PD
9I9C ENABLE_XMLCHAR dCN}4XFGqTV{}]`
MtC XML bv#
+ ENABLE_XMLCHAR hC*“NO”Ih99CV{}]`M1DT=M~= XML b
v#
XML bvM DTD
g{dk}]|,Z?D5`Myw(DTD)r}Cb? DTD,G4 XML bv}L 9alib) DTD Do(#Kb,bv}L9:
v &CZ?Mb? DTD (eD1!5 v )95e}CMN}5e
>}
TB>}5wZ;,ivBgN&m XML D5PDUq#
>}:D~ c8.xml |,TBD5:
<customerinfo xml:space="preserve" Cid='1008'>
<name>Kathy Smith</name> <addr country='Canada'>
<street>14 Rosewood</street> <city>Toronto</city> <prov-state>Ontario</prov-state>
<pcode-zip>M6W 1E6</pcode-zip> </addr> <phone type='work'>416-555-3333</phone>
</customerinfo>
Z 4 B ek XML }] 41
Z JDBC &CLrP,SD~PA! XML D5,;s+}]ek=m MYCUSTOMER D XML P INFO P,CmGy> Customer mD1>#C DB2 }]b~qw4P~
= XML bvYw#
PreparedStatement insertStmt = null; String sqls = null; int cid = 1008; sqls = "INSERT INTO MyCustomer (Cid, Info) VALUES (?, ?)"; insertStmt = conn.prepareStatement(sqls); insertStmt.setInt(1, cid); File file = new File("c8.xml"); insertStmt.setBinaryStream(2, new FileInputStream(file), (int)file.length()); insertStmt.executeUpdate();
4 8 ( U q & m = = , r K I C 1 ! P * : % t U q # + G , D 5 | ,
xml:space="preserve" tT,rK#tUq#bm>+#tD5P*X.dDX5{" ;P{MUq#
g{lwf"D}],G4Z]4p4gBy>:
<customerinfo xml:space="preserve" Cid='1008'>
<name>Kathy Smith</name> <addr country='Canada'>
<street>14 Rosewood</street> <city>Toronto</city> <prov-state>Ontario</prov-state>
<pcode-zip>M6W 1E6</pcode-zip> </addr> <phone type='work'>416-555-3333</phone>
</customerinfo>
>}:Y(TBD5;Z BLOB wd? blob_hostvar P#
<customerinfo xml:space="default" Cid='1009'>
<name>Kathy Smith</name> <addr country='Canada'>
<street>15 Rosewood</street>
<city>Toronto</city>
<prov-state>Ontario</prov-state>
<pcode-zip>M6W 1E6</pcode-zip> </addr> <phone type='work'>416-555-4444</phone>
</customerinfo>
Z2,6k= C &CLrP,+wd?PDD5ek=m MyCustomer D XML P Info P#Cwd?; G XML ` M , r K h*T= 4 P XMLPARSE#8( STRIP
WHITESPACE T}%NN_gUq#
EXEC SQL BEGIN DECLARE SECTION;
SQL TYPE BLOB (10K) blob_hostvar; EXEC SQL END DECLARE SECTION; ... EXEC SQL INSERT INTO MyCustomer (Cid, Info)
VALUES (1009, XMLPARSE(DOCUMENT :blob_hostvar STRIP WHITESPACE));
D5| , xml:space="default" tT,rK8(K STRIP WHITESPACE D XMLPARSE +XFUq&m==#bm>+}%D5P*X.dDX5{";P{M
Uq#
42 pureXML 8O
g{lwf"D}],G4z+4=_PTBZ]D%vP:
<customerinfo xml:space="default" Cid='1009'> <name>Kathy Smith</name><addr country='Canada'><street>15 Rosewood</street> <city>Toronto</city><prov-state>Ontario</prov-state><pcode-zip>M6W 1E6</pcode-zip> </addr><phone type='work'>416-555-4444</phone></customerinfo>
>}:Z C oT&CLrP,wd? clob_hostvar |,TBD5,CD5|,Z? DTD:
<!DOCTYPE prod [<!ELEMENT description (name,details,price,weight)>
<!ELEMENT name (#PCDATA)> <!ELEMENT details (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT weight (#PCDATA)>
<!ENTITY desc "Anvil"> ]> <product pid=''110-100-01'' >
<description> <name>&desc;</name> <details>Very heavy</details> <price> 9.99 </price> <weight>1 kg</weight> </description>
</product>'
+}]ek=m MYPRODUCT P,CmGy> PRODUCT mD1>:
EXEC SQL BEGIN DECLARE SECTION;
SQL TYPE CLOB (10K) clob_hostvar; EXEC SQL END DECLARE SECTION; ... EXEC SQL insert into
Product ( pid, name, Price, PromoPrice, PromoStart, PromoEnd, description ) values ( '110-100-01','Anvil', 9.99, 7.99, '11-02-2004','12-02-2004', XMLPARSE ( DOCUMENT :clob_hostvar STRIP WHITESPACE ));
XML }]j{T
XML PDli<x
XMLPARSE 8(%tUq,rK+}%D5ZD_gUq#Kb,Z}]b~qw4 P XMLPARSE 1,|+5e}C &desc; f;*|D5#
g{lwf"D}],G4z+4=_PTBZ]D%vP:
<product pid="110-100-01"><description><name>Anvil </name><details>Very heavy</details><price> 9.99 </price> <weight>1 kg</weight></description></product>
h*7# XML D5q-X(frr{OX(&m*s,I4P=S XML }]j{T lir8(4PYw0Xk{OD=Su~#a)K7# XML }]j{TD;);,
=(,y!D=(!vZX(}]j{TM&m*s#
g{** XML D5("
w},9I?FZyPD5D XML PP(;,dZcIzT
d("w}D XML #=^(#kND“UNIQUE X|VoeTKb|`E"#
li<xJmzT XML PhCX(<x#?N"TZ XML PPekr|B}]1a
?F5)K<x;v1{O<x8(Du~1Ea4PKYw#
Z 4 B ek XML }] 43
&m XML D51,;vX*"bBnGH0GqT XML #=i$Kb)D5#g{ h*7 # vi/"ek"|Br> } { OX(i$u~DD5 , G 49C VALI-
DATED =J4a)u~#"b,li<xv;ai$ XML D5,|;abTGqi $K
XML D5#
2
VALIDATED =Jli XML-expression 8(D5Di$4,,C5Xk* XML }] `M#g{48(I! according-to-clause,G4CZi$D XML #=;a0la{# li<x; a i$ XML D5>m;<xv bTD5D10i$4,(IS VALI- DATED r IS NOT VALIDATED)#g{8(K according-to-clause,G4CZi$
XML-expression 8(D
5D XML #=XkG according-to-clause j6D XML #=#
zh*Hr XML #=f"b"a XML #=,E\Z VALIDATED =JP}Cb) #=#
"b:
v li<x@5Z|G}CD XML #=#g{Q>} XML #=D XSR Ts,G4
9a>}}CC#=DNN<x#
v XML P'V NOT NULL <
x#
v XML P'VT XML i$(eDE"<x#
li<xs5
li<xy] IS VALIDATED =JDdvbTD5Di$4,#g{zc8(Du~,
G4<xs5* true,g{;zc8(Du~,G4dvs5* false#g{ XML- expression 8(D5*U,G4=Ja{4*#
g{ XML-expression 8(D5;*U"RvVTBiv,G4
VALIDATED =JDa
{* true:
v 48( according-to-clause "RQi$ XML-expression 8(D5,r_
v Q8( according-to-clause,"RQ9CI according-to-clause j6D XML #=.
;i$K XML-expression 8(D5#
g{ XML-expression 8(D5;*U"RvVTBiv,G4C=JDa{* false:
v 48( according-to-clause "R4i$ XML-expression 8(D5
,r_
v Q8( according-to-clause "R49CI according-to-clause j6D XML #=.;
i$ XML-expression 8(D5#
Z8(KI! according-to-clause DivB,g{P4i$ XML-expression 8(D5r
_i$K XML-expression 8(D5+4@]NN8( XML #=,G4 IS NOT VALI- DATED +5X true#
H[mo=
VALIDATED =J
value1 IS NOT VALIDATED optional-clause
H[ZQwu~
NOT(value1 IS VALIDATED optional-clause)
2. g{h*Z XML PPf" XML D5.0T/i$ XML P,I9C BEFORE %"w#
44 pureXML 8O
>}
>}:v!qQi$ XML D5#Y(Zm T1 P(eKP XMLCOL#vlwQ-}
NN XML #=i$D XML 5#
SELECT XMLCOL FROM T1
WHERE XMLCOL IS VALIDATED
>}:?F5)TBfr:}G-}i$,qr;aekr|BNN5#Y(Zm T1 P(eKP XMLCOL "R+li<xmSA XMLCOL#
ALTER TABLE T1 ADD CONSTRAINT CK_VALIDATED
CHECK (XMLCOL IS VALIDATED)
>}:<x INFO_CONSTRAINT GE"T<x#;a?F4PTBfr:}G-}i $,qr;aekr|B5#
CREATE TABLE xmltab (ID INT,
DOC XML, CONSTRAINT INFO_CONSTRAINT CHECK (DOC IS VALIDATED) NOT ENFORCED)
E"T<xCZDxi/T\#
XML }]D%"w&m
%"wT INSERT"UPDATE r DELETE od4PDYwvvl&#&m XML }] 1,I9C CREATE TRIGGER odT XML P4(xP UPDATE !nD BEFORE
r AFTER %"w#9IT|( XML PDm4(xP INSERT r DELETE !nD BEFORE r AFTER %"w#
Z%"wweP,}C\0lPP`M* XML DPD*;
d?;\k XMLVALIDATE
/}dO9CxPi$,T+ XML P5hC* NULL,r#t XML P5;d#
Z XML PPf" XML D5.0,I9Ck INSERT r UPDATE oddO9CD BEFORE %"w4T/i$b)D5#T"a XML #=i$ XML D5GI!Yw,
+?R(i}]j{T
;7(1byv,-rGbyIT7#;ekr|BP'D XML
D5#
zchCu~1a$n%"w;g{48(NNu~,%"w\G&Z$n4,#g {#{v1X*1E%"T XML D5Di$,G4I8( XML PDu~0 BEFORE
%"wD WHEN
Sd#Z WHEN SdP,I|(T XML D5DXhi$4,:4
b)D5XkQi$r_;(;\i$b)D5T$n%"w(IS VALIDATED r IS NOT VALIDATED)#I!q(}8( ACCORDING TO XMLSCHEMA Sd4|(; vr`v XML #=,Tf_%"wZT<xs51&<GD) XML #=
#
":8( WHEN SdD%"wa<Bnb*z#g{<U&Zek XML D5.0x Pi$,G4I!T WHEN Sd#
}C XML #=DNN%"w@5ZC#=#XkHZ XML #=f"bP"a XML #=,;sE\}C XML #=#g{%"wy@5D XML
#=!s4; XML #
=f"b>},G4%"wa;jG*;IYw#
>}:4(TB BEFORE %"w:Z SAMPLE }]bD PRODUCT mPek|,B z7hvD XML D5.0,C%"waT/i$b)D5#K%"waZ|B XML
D5.0DNb1d$n#
Z 4 B ek XML }] 45
CREATE TRIGGER NEWPROD NO CASCADE BEFORE INSERT ON PRODUCT
REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL BEGIN ATOMIC
SET (N.DESCRIPTION) = XMLVALIDATE(N.DESCRIPTION ACCORDING TO XMLSCHEMA URI 'http://posample.org/product.xsd');
END
>}:]x XML #= product2.xsd .s,Q-f"D XML D5Z]x#=B#$
P',;*|GT-< XML #= product.xsd P'#+G,zI\k*7#Tb) XML D5DyP|BZ]x#= product2.xsd B,yP'#r XML #=f"b"a product2.xsd Ts,BEFORE UPDATE %"waZxPNN|B0
CREATE TRIGGER UPDPROD NO CASCADE BEFORE UPDATE ON PRODUCT
REFERENCING NEW AS N FOR EACH ROW MODE DB2SQL BEGIN ATOMIC
SET (N.DESCRIPTION) = XMLVALIDATE(N.DESCRIPTION ACCORDING TO XMLSCHEMA ID product2);
END
i$ XML D5:
>}:zk*Zm;vmPG<ekr|BM'G<#b*sz4(=v%"w,; v AFTER INSERT CZBekDG<,;v AFTER UPDATE CZ|BDG<#Z
BfD>}P,Iy]m MyCustomer D XML PE"4(%"w,CmGy> Cus- tomer mD1>#
WHT MyCustomer m4( AFTER INSERT
CREATE TRIGGER INSAFTR
AFTER INSERT ON MyCustomer REFERENCING NEW AS N FOR EACH ROW BEGIN ATOMIC
END
;sT MyCustomer m4( AFTER UPDATE %"w:
CREATE TRIGGER UPDAFTR
AFTER UPDATE OF Info ON MyCustomer REFERENCING NEW AS N FOR EACH ROW BEGIN ATOMIC
END
XML i$
XML i$G7( XML D5Da9"Z]M}]`MGqP'D}L#XML i$2 a%t XML D5PD
(1byv,-rGbyIT7# XML D5Zq=<CD,1qXd XML #=a) Dfr#
%"w:
INSERT INTO CustLog VALUES(N.CID, CURRENT TIMESTAMP, 'Insert');
INSERT INTO CustLog VALUES(N.CID, CURRENT TIMESTAMP, 'Update');
IvTUq
#i$YwGI!D,+?R(iZ}]j{T;7
46 pureXML 8O
"b,;\kT XML #=i$ XML D5#;\T DTD i$ XML D5#
*i $ XML D 5 ,k 9C XMLVALIDATE / } #
I9 C SQL o d 8(
XMLVALIDATE TZ DB2 }]bPekr|B XML D5#*KT/i$ XML D 5,kT XML PD BEFORE %"w9IwC XMLVALIDATE /}#*?Fi$ XML D5,I4(li<x#
XkHZZC XML #=f"bP"a9I XML #=DyP#=D5,;sE\wC XMLVALIDATE /}#XML D5>m;XZ}]bPM\;Z XMLVALIDATE P
xPi$:
XML i$MIvTUq
y] XML j<,
Uq
GD5PCZa_IATDdtV{(U+0020)"X5{
(U+000D)" ;P{(U+000A)rFm{(U+0009)#1NNb)V{w*D>V
{.D;?VvV1,;+|GS*Uq#
IvTUq
GIS XML D5P}%DUq#XML #=D57(DvUqGIvTU
q#g{ XML D5(ev*X4S`M(v|,d{*XD*X),G4IvT*X
.dDUq#g{ XML #=(e|,GV{.`MDr%*X,G4IvTC*XZ
Uq#
D
>}:4gBy>(ey> XML #=D5 product.xsd PD description *X:
<xs:element name="description" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" /> <xs:element name="details" type="xs:string" minOccurs="0" /> <xs:element name="price" type="xs:decimal" minOccurs="0" />
<xs:element name="weight" type="xs:string" minOccurs="0" /> ... </xs:complexType>
</xs:element>
description *X_Pv*X4S`M,r*|;|,d{*X#rK,description *
XPD*X.dDUqGIvTUq#price *X2IT|,IvTUq,r*|G| ,GV{.`MDr%*X#
Z XMLVALIDATE /}P,ITT=8(*CZi$D XML #=D5#
g{;8(
XML #=D5,G4 DB2 }]b~qw+ZdkD5PiRj6 XML #=D5D xsi:schemaLocation r xsi:noNamespaceSchemaLocation tT#xsi:schemaLocation r xsi:noNamespaceSchemaLocation tTI XML #=f6(e,F* XML
#=a>
#
xsi:schemaLocation tT|,;vr`v5T,|GIoziR XML #=D5#?v 5TPDZ;v5G{FUd,Z~v5Ga>,|8>{FUdD XML #=D; C# xsi:noNamespaceSchemaLocation 5;| ,a>#g{ XML #= D5GZ
XMLVALIDATE / } P8( D , G 4 |+ 2G xsi:schemaLocation r xsi:noNamespaceSchemaLocation tT#
>}Y( product #=GZ XML #=f"b(XSR)P"aD#IT9Cng
BP TBD CLP od4jI"a:
REGISTER XMLSCHEMA http://posample.org/product.xsd FROM product.xsd \ AS myschema.product COMPLETE XMLSCHEMA myschema.product
r_,r* XML #=I%v#=D5iI,yTIT9C%vod4"a XML #= "jI"a:
REGISTER XMLSCHEMA http://posample.org/product.xsd FROM product.xsd \ AS myschema.product COMPLETE
>}:Y(4gBy>4(m MyProduct:
Z 4 B ek XML }] 47
CREATE TABLE MyProduct LIKE Product
z*9C/, SQL &CLr+TBD5ek= MyProduct mD XML P Info P," R*kT XML #=D5 product.xsd i$ XML }],CD5;Z MyProduct my ZD}]b~qwOD XML #=f"bP#
<product xmlns="http://posample.org" pid=''110-100-01'' >
<description> <name>Anvil</name> <details>Very heavy</details> <price> 9.99 </price> <weight>1 kg</weight> </description>
</product>'
Z INSERT odP,XMLVALIDATE /}8(*CZi$D XML #=:
Insert into MyProduct
(pid, name, Price, PromoPrice, PromoStart, PromoEnd, description) values ( '110-100-01','Anvil', 9.99, 7.99, '11-02-2004','12-02-2004',
XMLVALIDATE(? ACCORDING TO XMLSCHEMA ID myschema.product))
lwf"D}]1,zIT4= XMLVALIDATE }%IvTUqD;C#lw=D} ]G_PTBZ]D%vP:
<product xmlns="http://posample.org" pid="110-100-01"><description><name>Anvil </name><details>Very heavy</details><price>9.99</price><weight>1 kg</weight> </description></product>
product #=(e name"details"price M weight *X\'DUq,dP price *
XZDUq(e*IvTUq,rK XMLVALIDATE +}%CUq#
g{h*7#v+Qi$DD5ek= XML PP,rvS XML PPlwQi$DD
5,G49C VALIDATED =J#
*bTGqZekr|B
XML D50i$KCD5,kT XML P4(|, VALI-
DATED =JDli<x#*S XML PPvlwQi$DD5,rvlwQek+4 i$DD5,IZ WHERE SdP9C VALIDATED =J#g{h*liGqy]X ( XML #=i$K XML D5,kZ ACCORDING TO XMLSCHEMA SdP9C VALIDATED =J4|( XML #=#
VALIDATED =J9ICw%"wD;?V#*Z XML PPekr|B XML D5
.0%"TP4i$D XML D5Di$,kZ WHEN SdP4(|,kT XML P D VALIDATED =JD BEFORE %"wTwC XMLVALIDATE /}#
>}:Y(zkS MyCustomer mD INFO PP;lwQ
i$D XML D5#4P`
FTBD SELECT od:
SELECT Info FROM MyCustomer WHERE Info IS VALIDATED
>}:Y(zk+Qi$D XML D5;ek= MyCustomer mD INFO PP#IT (eli<x4?F4PKu~#4TB==Dd MyCustomer m:
ALTER TABLE MyCustomer ADD CONSTRAINT CK_VALIDATED CHECK (Info IS VALIDATED)
48 pureXML 8O
+G,"vKod9C;X9CO;v>}PD VALIDATED =J,r*;\ZmP I&ekr|BP'D5#
>}:Y(zk*9C customer #=i$TBD5,+;k+|f"Z}]bP#
<customerinfo xml:space="default"
xmlns="http://posample.org" Cid='1011'> <name>Kathy Smith</name> <addr country='Canada'> <street>25 Rosewood</street> <city>Toronto</city> <prov-state>Ontario</prov-state> <pcode-zip>M6W 1E6</pcode-zip> </addr> <phone type='work'>416-555-6676</phone>
</customerinfo>
Y(Q+D58(x&CLrd?#IT9C`FTBD VALUES od4xPi$:
VALUES XMLVALIDATE(? according to xmlschema id myschema.customer)
y] XML #=KD5P',rK VALUES od5X|,CD5Da{m#g{CD 5^',G4 VALUES 5X SQL ms#
XSR_GET_PARSING_DIAGNOSTICS f"}L
f"}L XSR_GET_PARSING_DIAGNOSTICS zIbvri$ XML D51y"zm sDj8E"#Kf"}LICZ(fbvmsMi$msrv(fbvms#
g { Z b v r i $ XML D ~ Z d " z m s , k S DB2 | n 0 Z w C XSR_GET_PARSING_DIAGNOSTICS f"}Lr_+Kf"}LmSA&CLr#} g,9C XMLVALIDATE j
Zdy"zmsDj8E"#
?/}i$ XML D51,k9CKf"}L4zIi$
o(
 XSR_GET_PARSING_DIAGNOSTICS ( instance , rschema , name ,
schemaLocation , implicitValidation , errorDialog , errorCount ) 
Kf"}LD#=* SYSPROC#
(^
XML #=Z(:CZi$D XML #=XkZ XML #=f"bP"a.sE\9C# Kf"}LDZ(j6XkAY5PBPdP;nX(M(^:
v TCZi$D XML #=D USAGE X(
v DBADM (^
}LN}
instance
BLOB(30M) `MDdkN},||, XML D5DZ]#Xka) XML D5# K5;\* NULL#
rschema
VARCHAR(128) `MDdkN},|8(r XML #=f"b"aD=?V XSR Ts{D SQL #=?V#K5I* NULL#g{K5* NULL,G4Y( SQL #
=?VG CURRENT SCHEMA (CDfwD10
5#
Z 4 B ek XML }] 49
name
VARCHAR(128) `MDdkN},|8(r XML #=f"b"aD=?V XSR Ts{D#={#XML #=Dj{ SQL j6* rschema.name#|TZ XSR P DyPTs&CG(;D#K5I* NULL#
schemaLocation
VARCHAR(1000) `MDdkN},|8> XML #=wD5D#=;C#KN} G XML #=D tT4j6wD5#K5I* NULL#
implicitValidation
INTEGER `MDdkN},|8>Gq&C9C5}D5PD#=;C4iR XML #=#K5;\* NULL#|D5IT* 0(m>q”)M 1(m>G”)#
9C5}D5PD#=;C#g{+]D5* 0,G4IT9CBPdP;V
0 ;
=(48(#=:
v + XSR Ts{w*Z XML #=f"bP"aD#=D rschema M name
N}4a)#
v 9C schemaLocation N}4a)#=;C#
b?{,4,ITZ XML 5}D5P9C xsi:schemaLocation
g{,18(K XSR Ts{M schemaLocation,G4+ {48(NN;n,G4;a4Pi$#v4P XML bv,"(fyP XML
bvms#
1 9C5}D5PD xsi:schemaLocation tT5D#=;C#
y]H0r XML #=f"b"aD XML #=D54TdkD54Pi$#
g{ implicitValidation N}D5* 0
D5* NULL,G4+bv5}D5+;aT|xPi$#
errorDialog
VARCHAR(32000) `MDdvN},||,+P>bvMi$msD UTF-8 XML D5#v1AYP;vms1,EazIKD5#
errorCount
`M* INTEGER DdvN},CZ8( XML bvMi$msD
,x rschema"name M schemaLocation N}
9C XSR Ts{#g
\}#
C(
IT(}TB}V=(4kTQ"aD XML #=i$ XML D5:
v 9C rschema M name N}* XML #=a) XSR Ts{#
v 9C schemaLocation N}4a)#=;C# v g { XML 5}D5+# = 8 ( * xsi:schemaLocation tTD5, G 4 +
implicitValidation hC* 1#
50 pureXML 8O
g{9C XSR_GET_PARSING_DIAGNOSTICS f"}L1"zbvr hC errorDialog M errorCount dvN}#errorDialog |,;vCZP>msD XML
D 5 # I T S 9 C DB2 CLI" Java r C++ D &CL r P w C XSR_GET_PARSING_DIAGNOSTICS f"}L,"9CN}jG4q!Kf"}LD
dv#
i$ms,G4
T>j8D XML bvMi$ms
IT9C XSR_GET_PARSING_DIAGNOSTICS f"}LP errorDialog dvN}P
DE"4bv XML bvMi$ms#
g{9C XMLVALIDATE j?/}4i$ XML D51"zms,G4k9 C XSR_GET_PARSING_DIAGNOSTICS f"}L4zIj8DmsE"#TB>}+ XSR_GET_PARSING_DIAGNOSTICS f"}Lkr%D XML #=M XML D5dO
9C4zIj8Di$m
y> XML #=
K>}9CTB XML #=(e(XSD)#K#=_PwV*X,dP INTEGER `M tTD*X8(x Age *X#
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://my.simpletest" xmlns="http://my.simpletest" elementFormDefault="qualified">
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/> <xs:element name="LastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Age" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
sE"#
y> XML D5
TB XML D5+Iy> XML #=xPi$#KD5;{O3)#=fr#Age * XD5;G}V,"RZK#=P4+ Notes *X(e* Person *XDS*X#
<?xml version="1.0"?> <Person xmlns="http://my.simpletest"
<Person>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://my.simpletest http://my.simpletest/simple">
<Name>
<FirstName>Thomas</FirstName>
<LastName>Watson</LastName> </Name> <Age>30x</Age> <Notes/>
C4"a XML #=D|n
Z9C XSR_GET_PARSING_DIAGNOSTICS f"}L4i$ XML D5.0,XkZ DB2 XML #=f"b(XSR) P"aCZi$D XML #=#TB REGISTER XMLSCHEMA |nY(#=;Z c:\temp\simpleschema.xsd P,"R SQL #=* USER1:
Z 4 B ek XML }] 51
REGISTER XMLSCHEMA 'http://my.simpletest/simple'
FROM 'file:///c:/temp/simpleschema.xsd' AS user1.simple COMPLETE
wCTzIj8Di$msE"
TBwCS CLP 9C XSR_GET_PARSING_DIAGNOSTICS f"}L4zIi$msE":
CALL XSR_GET_PARSING_DIAGNOSTICS( blob('<?xml version="1.0"?> <Person xmlns="http://my.simpletest"
<Name>
</Name> <Age>30x</Age>
<Notes /> </Person> '),'','','',1,?,?)@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://my.simpletest http://my.simpletest/simple">
<FirstName>Thomas</FirstName> <LastName>Watson</LastName>
j8Di$msE"
wC XSR_GET_PARSING_DIAGNOSTICS f"}L+5XTBdv#errorDialog N }D5G;v|,i$msj8E"D XML D5#Z K XML D5P,errText" location"lineNum M colNum *XDZ]j6X(msT0"zmsD;C#S CLP |nPKPH0wC1,TBdv+4Aj<dv:
dvN}D5
--------------------------
N}{F:ERRORDIALOG N}5:<ErrorLog>
<XML_Error parser="XML4C">
<errCode>238</errCode> <errDomain>http://apache.org/xml/messages/XML4CErrors</errDomain> <errText>Datatype error: Type:InvalidDatatypeValueException,
Message:Value '30x' does not match regular expression facet '[+\-]?[0-9]+' . </errText> <lineNum>1</lineNum> <colNum>272</colNum> <location>/Person/Age</location> <schemaType>http://www.w3.org/2001/XMLSchema:integer</schemaType> <tokenCount>2</tokenCount> <token1>30x</token1> <token2>13</token2>
</XML_Error> <XML_Error parser="XML4C">
<errCode>2</errCode> <errDomain>http://apache.org/xml/messages/XMLValidity</errDomain> <errText>Unknown element 'Notes' </errText> <lineNum>1</lineNum> <colNum>282</colNum> <location>/Person</location> <schemaType>http://www.w3.org/2001/XMLSchema:integer</schemaType> <tokenCount>2</tokenCount> <token1>Notes</token1> <token2>37</token2>
</XML_Error> <XML_Error parser="XML4C">
<errCode>7</errCode> <errDomain>http://apache.org/xml/messages/XMLValidity</errDomain> <errText>Element 'Notes' is not valid for content model: '(Name,Age)' </errText> <lineNum>1</lineNum>
52 pureXML 8O
<colNum>292</colNum> <location>/Person</location> <schemaType>http://www.w3.org/2001/XMLSchema:anyType</schemaType> <tokenCount>2</tokenCount> <token1>Notes</token1>
<token2>31</token2> </XML_Error> <DB2_Error>
<sqlstate>2200M</sqlstate>
<sqlcode>-16210</sqlcode>
<errText>
[IBM][CLI Driver][DB2/NT] SQL16210N XML document contained a value "30x" that violates a facet constraint. Reason code = "13". SQLSTATE=2200M
</errText> </DB2_Error> </ErrorLog>
Parameter Name : ERRORCOUNT Parameter Value : 3 5X4, =0
v?Dms{"'VD ErrorLog XML #=(e
ErrorLog XML #=(e(XSD)hvZ XML D5PzzbvMi$msDivBI XSR_GET_PARSING_DIAGNOSTICS f"}LzID UTF-8 XML D5#dv XML
D5f"Z errorDialog N}P#
ErrorLogType
XML #=(eDy*XG ErrorLog "Rd`M* ErrorLogType#
XML #=(e
<xs:complexType name="ErrorLogType">
<xs:sequence>
<xs:element name="XML_Error" type="XML_ErrorType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name=name="XML_FatalError" type="XML_ErrorType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="DB2_Error" type="DB2_ErrorType"/>
</xs:sequence>
</xs:complexType>
S*X
XML_Error XML_FatalError
`M: XML_ErrorType
9C5w:
XML_Error r XML_FatalError *X|, XML bvwzIDms{ "#XML_Error M XML_FatalError *X_P`,D XML #=`M#
XML_FatalError G<B XML bvwl#U9bv}LDms#
xs:complexType name="XML_ErrorType">
<xs:sequence>
<xs:element name="errCode" type="xs:int"/> <xs:element name="errDomain" type="xs:string"/> <xs:element name="errText" type="xs:string"/> <xs:element name="lineNum" type="xs:unsignedInt"/> <xs:element name="colNum" type="xs:unsignedInt"/> <xs:element name="location" type="xs:string"/> <xs:element name="schemaType" type="xs:string"/>
Z 4 B ek XML }] 53
<xs:element name="tokens">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element name="token" type="xs:string" minOccurs="0"
</xs:sequence> <xs:attribute name="count" type="xs:unsignedByte"
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="parser" type="xs:string" use="required"/>
</xs:complexType>
maxOccurs="unbounded"/>
use="required"/>
XML_ErrorType *X|,BPS*X:
errCode
XML bvw5XDmszk#
errDomain
XML bvw5XDmsr#
errText
-<D XML bvwms{"#
lineNum
"zmsDPE#
colNum
"zmsDPE#
location
;CG"zms.08rnsD XML *XD XPath mo=#
schemaType
nsbvD XML *XD XML
#=`M#
tokens
T>(fK`YjGD}V5#
token jGGC4zI DB2 ms{"DV{.5#
tT
bvw(XkD)
bvwtT8(9CDWc XML bvw#
DB2_Error
`M: DB2_ErrorType
9C5w:
DB2_Error *X|, DB2 ms{"#
<xs:complexType name="DB2_ErrorType">
<xs:sequence>
<xs:element name="sqlstate" type="xs:string"/> <xs:element name="sqlcode" type="xs:int"/> <xs:element name="errText" type="xs:string"/>
</xs:sequence>
<xs:attribute name="parser" type="xs:string" use="required"/>
</xs:complexType>
54 pureXML 8O
DB2_ErrorType *X|,BPS*X:
sqlstate
SQLSTATE
sqlcode
SQLCCODE
errText
DB2 ms{"
v?Dms{"'VD XML #=
XSR_GET_PARSING_DIAGNOSTICS f"}L+zIPXZbvMi$ XML D5Z dyzzmsDj8E"#KE"w* XML D5zI#K#=(ef"}LDP' XML dv#
TBPmm>I XSR_GET_PARSING_DIAGNOSTICS f"}LzID XML D5D ErrorLog XML #=#
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="http://www.ibm.com/db2/XMLParser/Diagnosticsv10"
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com/db2/XMLParser/Diagnosticsv10" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="ErrorLog">
<xs:complexType>
<xs:sequence>
<xs:element name="XML_Error" type="XML_ErrorType" minOccurs="0"
maxOccurs="unbounded"/> <xs:element name="XML_FatalError" type="XML_ErrorType" minOccurs="0"/> <xs:element name="DB2_Error" type="DB2_ErrorType"/> <xs:any namespace="##any" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType> </xs:element> <xs:complexType name="XML_ErrorType">
<xs:attribute name="parser" type="xs:string" use="required"/>
<xs:sequence>
<xs:element name="errCode" type="xs:int"/> <xs:element name="errDomain" type="xs:string"/> <xs:element name="errText" type="xs:string"/> <xs:element name="lineNum" type="xs:unsignedInt"/> <xs:element name="colNum" type="xs:unsignedInt"/> <xs:element name="location" type="xs:string"/> <xs:element name="schemaType" type="xs:string"/> <xs:element name="tokens">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element name="token" type="xs:string" minOccurs="0"
</xs:sequence> <xs:attribute name="count" type="xs:unsignedByte" use="required"/>
</xs:complexType> </xs:element> <xs:any namespace="##any"/>
</xs:sequence> </xs:complexType> <xs:complexType name="DB2_ErrorType">
<xs:attribute name="parser" type="xs:string" use="required"/>
<xs:sequence>
<xs:element name="sqlstate" type="xs:string"/> <xs:element name="sqlcode" type="xs:int"/> <xs:element name="errText" type="xs:string"/>
maxOccurs="unbounded"/>
Z 4 B ek XML }] 55
<xs:any namespace="##any"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
ZG Unicode }]bP9C XML
Sf> 9.5 *<,IZ;9C Unicode zk3D}]bPf""lw XML }]#
SZ?44,XML }]<UI DB2 }]b~qwT Unicode q=\m,;\}]b zk3gN<GgK#G XML X5}]GT} ]b zk3\mD#g{ SQL r
XQuery od,1f0 XML } 1f0 XML }]`MM SQL }]`MDHO1),(#h*xPzk3*;#HO XML }]k XML }];h*zk3*;,-rG=i}]Q-G UTF-8 q=#,
y,HO SQL }]k SQL }];h*zk k3q=#
TZf0 XML }]M SQL }]DYw,r* Unicode }]bTyP}]`M9C`
,`k,yTQ-;h*ZK}]bPxPzk3*;#+G,ZG Unicode }]b P,f0zk3*;DYwI\a ]|,xPzkcDV{;Z}]bzk3P,G4a"zV{f;#rK,}]`
M*;rHOYwax4bba{,xS}]blw=D XML }]I\|,;}7D
5#BfaV[\bzk3
,=(#
]M SQL X5}](}g,ZxP}]`M*;r,
3*;,-rG=i}]Q-G}]bz
<B}]Y5r*'#g{}ZxP*;D XML }
*;Tc7#Qf" XML }]Myf0YwDj{TD;
XML D5ekMzk3*;
?N(}_PV{}]`M("G FOR BIT DATA `MD CHAR"VARCHAR r CLOB }]`M)Dwd?rN}jG+ XML }]ek= DB2 }]b~qwP1,
g{}]bzk3;,Z"vksDM'zr&CLrDzk3,G4axPzk3
*;#1ekDV{}]S} 1,ra"zZ~V*;#
BmT>}]bkSM'zr&CLrekD XML D5V{..dDwVI\`ki
O#r*M'z(}V{}]`Mek XML }],yT XML D5`kkM'zzk 3f`,
#TZ?ViO,+hvzk3*;D0lM XML D5ekZdDa{V{
f;I\T#
m2.}]bkekD
=8 XML D5`k }]b`k zk3Gq%d?
1. Unicode(UTF-8) Unicode(UTF-8) G
2. G Unicode Unicode(UTF-8) q
3. G Unicode G Unicode G
4. Unicode(UTF-8) G Unicode q
5. G Unicode G Unicode q
XML
1. Z=8 1 P,XML D5M}]b2C Unicode `k#ek XML D51;axP
NNV{*;#TK==ek XML }]<U\2+#
2. Z=8 2 P,G Unicode XML D5+*;* UTF-8 Tek= Unicode }]bP#
K}LP;a"zV{f;#TK==ek XML }]<
]bzk3*;* Unicode(XML }]DZ?\mq=)
D5V{..dD`k=8
U\2+#
56 pureXML 8O
3. Z=8 3 P,XML D5M}]b2C,;G Unicode `k#ZKivB,XML D 5;\|,}]bzk3Z|,Dzkc,yT;aZzk3*;ZdxPNNV
{f;#TK==ek XML }]<U\2+#
4. Z=8 4 P,Unicode XML D5+ek=G
Unicode }]bP#g{ XML D5
GS UTF-8 M'zr&CLrekD((}_PV{}]`MDwd?rN}j G),G4a"zzk3*;#XML D5ZZ}]bzk3P;P%dzkcDN
NV{+;f;#
5. Z=8 5 P,XML D5+ek=,19C=V
;,`k(<G UTF-8 TbD`
k)D}]b~qwP#ZKivB,q=8 4 P;y,g{ XML D5G9CV {}]`MekD,G4Z XML D5|,DV{Z}]bzk3P^'1axP V{f;#
2+X+ XML }]ek=G Unicode }]bP
7# XML }]j{TDn2+=(G9C Unicode }]b#+G,g{;\9CK =(,9Pd{=(Ih9V{f;#TBPmhv9Cr;9C Unicode }]b2+ ek XML }]DwV=(:
9C Unicode }]b,r7#}]bMM'z9C,;`k
gZ 56 3Dm 2
*;Jb:
v }]b9C Unicode
v }]bMM'2C,;`k,9Cr;9C Unicode
Pyv,&ZBPivB1IT;1\b XML }]Dzk3
\b9C_PV{}]`MDwd?rN}jG
g{;\9C Unicode }]b,9I(}9C`M* XML rN `MDwd?rN}jGs( XML }]4\b XML }]Dzk3*;#4, T XML }]8( CHAR"VARCHAR r CLOB TbD}]`MJm1S+
dSM'zr&CLrzk3*;* Unicode,SxF}*;*}]bzk3` kb;}L#
ENABLE_XMLCHAR dCN}Jm ENABLE_XMLCHAR hC*“NO”ah9Z XML D5ekZd9CV{}] `M,Sx\bI\DV{f;"7#Qf" XML }]Dj{T#r* BLOB
M FOR BIT DATA }]Ts;\zk3*;0l,yTT;Jm9Cb)} ]`M#1!
ivB,ENABLE_XMLCHAR hC*“YES”TcJmekV{}
]`M#
9 C Unicode } ] b 1 ,z k3 *; v ; I J b ,y TZ K i v B ENABLE_XMLCHAR dCN};pwC;;\ ENABLE_XMLCHAR DhC gN,<IT XML D5ek9CV{}]`M#
T4|,Z}]bzk3PDV{9C
V{5e}C
g{;\\bzk3*;"RXkT XML }]w9CV{}]`M,nC7 # XML D5PDyPV{Z}]bzk3P_P%dzkc#TZ XML }
]ZZ?j}]bP;P%dzkcDNNV{,I9CV {5e}C48( V{D Unicode zkc#V{5e}CI;1F}zk3*;,yTaZ XML }]P#t}7DV{#}g,V{5e}C“ > M > VpG
sZE(“>”)D.yxFM.xFH[n#
N~xF}]
zXFGq(}V{}]`Mek#+
Z 4 B ek XML }] 57
ZG Unicode }]bPi/ XML }]
kZ}]bPek XML }];y,Zf0 XML }]Di/Zd7#}]j{TDn
2+=(G9C Unicode }]b#g{;\9CK=(,G4I(}7#yP XML } ]Z}]bzk3PIm>4\bV{f;,r_(}T}]bzk3P4|,DV
{9CV{5e}C4\bV{f;#
g{i/|,D XML Z]|(Z}]bzk3P;Im>DV{,G4I\a"zB P=V`MDV{f;,Sx<Bi/vVbba{:
f;*1!f;V{
+Z XML }]P;I%dV{D;C}
{PDV{+]= ASCII `k}]b(ISO-8859-1)P,G4-<V{af; * ASCII zkc 0x1A,bG;vXFV{,ZM'zO(#T>*JE (“?”)#+ XML }]S}]bzk3*;* Unicode 1,a#tf;V{#
nS|DV{H[n(~O”)
f;*
-<dkV{af;*?jzk3Pk-<V{`F+;;(j+`,DV {#P1_P;, Unicode zkcD=vr|`V{a3dA}]bzk3O
D%vzkc(?jzk3PDnS|V{H[n),by;4 P.s;,5.dDnla*'#K!0QZBfD>} 2 Pwv5w#
>}
kzk3D1!f;V{#}g,g
ek=}]b
TB>}5w9C UTF-8 `kDM'zr&CLrCZi/G Unicode }]bPD XML }]1*;zk3I\x4D0l#Zb)>}P,Y(}]bG9Czk3 ISO8859-7(
#0o)4(D#XQuery mo=CZ%dm T1 Pf"D XML }],d
PQf" XML }]I Unicode #0owqjV{(ΣG)M Unicode cuwqjV{
)iI#zkc 0xD3 Z ISO8859-7 }]bPj6wqjV{#
(Σ
M
m T1 G9CBP|n4("ndD:
CREATE TABLE T1 (DOCID BIGINT NOT NULL, XMLCOL XML); INSERT INTO T1 VALUES (1, XMLPARSE(
document '<?xml version="1.0" encoding="utf-8" ?> <Specialchars> <sigma>Σ <summation>Σ </Specialchars>'
</sigma>
G
</summation>
M
preserve whitespace));
>} 1:I&Dzk3*;(V{Z}]bzk3PGIm>D)
XQUERY for $test in db2-fn:xmlcolumn("T1.XMLCOL")//*[. = "ΣG"] return $test
Kmo=zIZ{Da{:
<sigma>ΣG</sigma>
ZKivB,mo= ΣGZM'zOT#0owqjV{(U+03A3)D Unicode zkc*7,*;*#0o}]bzk3(0xD3)PDwqjV{,;sY *;X}7D Unicode V{TxP XML &m#r*#0owqjV{Z}] bzk3PGIm>D,yTmo=a}7%d#K
V{*;T>ZBmP:
58 pureXML 8O
m3.V{}]*;(>}1)
M'z
(UTF-8)
V{ U+03A3(#0
owqj)
0xD3(#0o
}]b
(ISO8859-7)
U+03A3(#0
wqj)
>} 2:;I&Dzk3*;(V{Z}]bzk3PG;Im>D)
XQUERY for $test in db2-fn:xmlcolumn("T1.XMLCOL")//*[. = "ΣM"] return $test
Kmo=4zIZ{Da{:
<sigma>ΣG</sigma>
ZKivB,mo= ΣMZM'zOTcu{Ewqj(U+2211)D Unicode zkc*7,*;*#0o}]bzk3(0xD3)PDwqjV{,;sZ
xP XML HO1k Σ
`,#Unicode XML V{ Σ
V{`%d#TZ5Xmo=,}Lk>} 1 Pj+
G
H*;*#0o}]bzk3PDwqjV{
G
(ΣA),;s*;*M'z UTF-8 zk3(ΣG)PD#0owqjV{#KV {*;T>ZBmP:
m4.V{}]*;(>}2)
M'z
(UTF-8)
V{ U+2211(cu
wqj)
0xD3(#0o
}]b
(ISO8859-7)
U+03A3(#0
wqj)
XML bvw
(UTF-8)
owqj)
XML bvw
(UTF-8)
owqj)
>} 3:9CV{5e}CF}zk3*;
XQUERY for $test in db2-fn:xmlcolumn("T1.XMLCOL")//*[. = "ࢣ"]
return $test
Kmo=zIZ{Da{:
<summation>ΣM</summation>
ZKivB,mo= ΣMZM'zOTcu{Ewqj(U+2211)*7,r* |*e*V{}C ࢣ,yTZ+]A XML bvw1a#t Unicode z
kc,Sx\;TQf" XML 5 Σ
xPI&DHO#F}V{*;D}L
M
T>ZBmP:
m5.V{}]*;(>}3)
M'z
(UTF-8)
V{ U+2211(cu
wqjDV{}
C)
″(cu
}]b
(ISO8859-7)
U+2211(cu
wqjDV{}
C)
>} 4:;I&Dzk3*;(V{Z}]bzk3PG;Im>D)
K>}k>} 1 `F,+K&9C ASCII `k}]b"RaZ XML mo= P}kzk3D1!f;V{#
XQUERY for $test in db2-fn:xmlcolumn("T1.XMLCOL")//*[. = "ΣG"] return $test
XML bvw
(UTF-8)
wqj)
Ki/4\%dm T1 PD}75#ZKivB,Unicode V{ U+2211(#0
owqj)Z ASCII zk3P;P%dzkc,yTa}k1!f;V{,Z
Z 4 B ek XML }] 59
KivB*JE(“?”)#KV{*;T>ZBmP:
m6.V{}]*;(>}4)
M'z
(UTF-8)
V{ U+2211(cu
wqj)
}]b
(ISO8859-1)
0x003F(“?”) 0x003F(“?”)
XML bvw
(UTF-8)
60 pureXML 8O
Z 5 B i/ XML }]
I(}=Vwi/oT(%@9C?VoTr,19C=VoT)i/rlwf"Z }]bPD XML }]#
*za)KBP!n:
v v XQuery mo=
v wC SQL odD XQuery mo=
v v SQL od
v 4P XQuery mo=D SQL od
XQuery ri
b)=(JmzS SQL r XQuery OBDPi
IT9Cb)=(i/Mlw XML D5,Nr{v XML D5#i/IT5X,Nr {v XML D5,"RI9C=J^FSi/CJDa{#r*T XML }]Di/5
X XML rP,yT2IT9C XML }]9lDi/a{
XQuery Gr,x*K(W3C)hFD;V/}`LoT,CZzci/M^D XML }
]DX(hs#
kI$bD"_P#fa9DX5}];,,XML }]IdT\_#XML }](#G ;I$b"!hMThvD#
IZ XML }]Da9;I$b,yT i/;,#XQuery oTa)K4Pb)`MYwyhDinT#}g,I \h *9 C XQuery oT4PBPYw:
v QwcNa9P3)4*cTsD XML }]#
v T}]4Pa9d;(}g,zI\k
v 5X_PlO`MDa{#
v |BVP XML }]#
h*T XML }]4PDi/(#kdMDX5
/rlw XML Md{X5}]#
#
9*cNa9)#
XQuery i/DiI?V
Z XQuery P,mo=Gi/Dw*9(i#mo=ITxP6W,C4iIi/Dw e#i/9ITZKwe0f_PrT#
i/w e
w#
OxID`v XQuery mo=9I#
Z 62 3D< 4 5wKdMi/Da9#ZK>}P,rT|,=vyw:;vGf>
yw,|8(*C4&mi/D XQuery o(Df>;m 8(*CZ^0:*X{FM`M{D{FUd URI#i/we|,;vCZ9l
price_list *XDmo=#price_list *XDZ]G+ product *X4[q5rEP
qCDPm#
© Copyright IBM Corp. 2006, 2009 61
|,CZ(ei/a{Dmo=#Kmo=II9CKc{rX|Vi
rT
|,;5PCZ(ei/&m73Dy
;vG1!{FUdyw,|
<
4. XQuery
PDdMi/Da9
9C XQuery /}lw DB2 }]
Z XQuery P,i/ITwCBP/}.;4q! DB2 }]bPDdk XML }]: db2-fn:sqlquery M db2-fn:xmlcolumn#
db2-fn:xmlcolumn /}+lw{v XML P,x db2-fn:sqlquery +lwyZ SQL + i/D XML 5#
db2-fn:xmlcolumn
db2-fn:xmlcolumn /}IC;vV{.DVTd?,CZj6;vmrS<PD XML P,"5XCPPD XML 5r
{.DVTd?XkG`M* XML D^(P{#K/}Jmzi!{v XML }]Px;&CQwu~#
ZTB>}P,i/9C db2-fn:xmlcolumn /}4q! BUSINESS.ORDERS m D PURCHASE_ORDER PPDyPI:)%#;s,i/+TKdk}]4
PYw,Sb)I:)%D;uX7Pi!GP#i/a{G; 6)%DyP GPDPm#
db2-fn:xmlcolumn('BUSINESS.ORDERS.PURCHASE_ORDER')/shipping_address/city
P#K/}DTd?GxVs!4D#V
62 pureXML 8O
db2-fn:sqlquery
db2-fn:sqlquery /}IC;vm>+i/DV{.Td?,"5X;vI+i/ 5XD XML 5"CxID XML rP#+i/Xk8(%Pa{/,xRP
D}]`MXk* XML#(}8(+i/,+Jmz9C SQL D&\4r XQuery a) XML }]#C/}'
ZTB>}P,BUSINESS.ORDERS mP|,{* PURCHASE_ORDER D XML P#ZC>}P,i/9C db2-fn:sqlquery /}4wC SQL,Tq!; uUZ* 2005 j 6 B 15 UDyPI:)%#;s,i/+TKdk}]4
PYw,Sb)I:)%D;uX7Pi
6)%DyPGPDPm#
V9CN}r SQL od+]5#
!GP#i/a{GZ 6 B 15 U;
db2-fn:sqlquery(" SELECT purchase_order FROM business.orders WHERE ship_date = '2005-06-15' ")/shipping_address/city
*c:I db2-fn:sqlquery r db2-fn:xmlcolumn /}5XD XML rPIT |,NN XML 5(|(-S5MZc)#b)/}";a\G5Xq=<CDD5rP#}g, b)/}I\;5X%v-S5(}g,36)w* XML }]`MD5}#
TZ{FGqxVs!4,SQL M db2-fn:xmlcolumn /}1,z&*@b)np#
SQL G;V;xVs!4DoT
1!ivB,SQL odP9CDyPU(j6{aT/*;*s4#rK,SQL mMPD{F(#ICs4{F,}g,0f>}PD BUSINESS.ORDERS M
PURCHASE_ORDER#Z SQL
g,business.orders M purchase_order),Z&m SQL od1b){FaT/ *;*s4#(Z SQL P,9IT(}+{FC+}E}p44(F*
DxVs!4D{F)#
6
XQuery G;VxVs!4DoT
XQuery ;a+!4{F *;*s4{F#bVnpaZ,19C XQuery M SQL 1<Bl}#+]x db2-fn:sqlquery DV{.;bM* SQL i/"I SQL b vw xP bv ,b a+ yP {F <* ;* s4 #r K, Z db2­fn:sqlquery > HITs4N=2IT!4N=vV#+G,db2-fn:xmlcolumn DYw};G SQL i/#Yw}GxVs!4D"CZm>P{D XQuery V{.DV#r *5 J P{G BUSINESS.ORDERS.PURCHASE_ORDER,yTZ db2- fn:xmlcolumn DYw}PXkCs48(K{F#
9C SQL i/ XML }]ri
XQuery P;,D<(#19C db2-fn:sqlquery M
odP,IT9C!4{F4}Cb)P(}
(gj
}P,m{ business.orders T0P{ purchase_order M ship_date
IT9C SQL +i/r XMLQUERY M XMLTABLE D SQL/XML i//}4i/ XML }]#9ITZkT XML }]D SQL i/P9C XMLEXISTS =J#
v9C SQL(;9CNN XQuery)i/ XML }]1,;\(}"v+i/ZP6p xPi/#*K,;\Si/5X{v XML D5;v9C
SQL ;I\5XD5,N#
*Z XML D5Zi/,h*9C XQuery#IT9CBPNN SQL/XML /}r=J (} SQL wC XQuery:
XMLQUERY
5X XQuery mo=Da{w* XML rPD SQL j?/}#
XMLTABLE
5X XQuery mo=Da{w*mD SQL m/}#
XMLEXISTS
7( XQuery mo=Gq5XGUrP
D SQL =J#
Z 5 B i/ XML }] 63
XQuery k SQL DHO
DB2 'V+q=<CD XML }]f"ZmPP,T09C SQL M/r XQuery 4S }]bPlw XML }]#'V+b=VoTCww*i/oT,"Rb=VoT<_
PwCd{oTD&\#
XQuery
1SwC XQuery Di/TX|V XQUERY *7#KX|V8>}Z XQuery,rK DB2 ~qwXk9CJCZ XQuery oTRxVs!4Dfr#
ms&mGy]C4&m XQuery mo=DSZ4xPD#(f XQuery ms 1aa) SQLCODE M SQLSTATE,k(f SQL msD==`,#&m
XQuery mo=1;a5X/f#XQuery (}wC S DB2 mMS<Pi XML }]D/}4q!}]#2IS SQL i/PwC XQuery#ZKivB, SQL i/I(}s(d?D==+ XML }]+]x XQuery#XQuery 'V
C4&m XML }]M9lB XML Ts(}g,*XMtT)DwVmo=# CZ XQuery D`LSZya)D&\k SQL
Mlwi/a{#
SQL SQL \;(eM5}/ XML }]`MD5#|,q=<CD XML D5DV
{.Ibv* XML 5,(I!)kT XML #=xPi$,ZmPekr| B#r_,I9C SQL 9l/}49l XML 5;ZK}LP
}]*;* XML 5#9a)K;)/},9CI9C XQuery 4i/ XML }]T0+ XML }]*;*X5mTCZ SQL i/#}KI+ XML 5r
P/*V{.}]Tb,9ITZ SQL }]`Mk XML }]`M.dxP *;#
9C
!
D&\`F,ICZ<8i/
a+d{X5
SQL/XML a)KBP/}
XMLQUERY
XMLQUERY G;vj?/},|+ XQuery mo=w*Td?,5X DG;v XML rP#C/}P;)I!N},IC4+ SQL 5w* XQuery d?+]x XQuery mo=#ITZ SQL i/DOBDPx ;=&mI XMLQUERY 5XD XML 5#
XMLTABLE
XMLTABLE zI SQL m,SQL ITx;=&mC SQL m#
XMLEXISTS
XMLEXISTS G;v SQL =J,|7( XQuery mo=Gq5XI; vr`vniIDrP(x;G;vUrP)#
HOCZi/ XML }]D=(
r*IT(}9C XQuery"SQL r XQuery M SQL DiO4Cm`=(i/ XML }],yT*!qD=(fiv;,xd/#BPwZhvTX(i/=(P{Du
~#
v XQuery
M=J,TcS SQL 4wC XQuery:
G;vm/},|9C XQuery mo=4S XML }]
64 pureXML 8O
ZBPivB,JO;9C XQuery xPi/:
v &CLrvCJ XML }],x;h*i/G XML X5}]
v +H0C XQuery `4Di/(F= DB2 }]b Linux®f"UNIX®fM Win-
v 5X+Cw5Di/a{T9l XML D5
v k SQL `H,i/"pK|l$ XQuery
dows
®
f
wC SQL D XQuery
ZBPivB(O;ZP7(Dv9C XQuery Div}b),JO9CwC SQL D XQuery xPi/:
v i/f0 XML }]MX5}];ITZi/P{CTX5P(eD SQL =JMw
}
v *+ XQuery mo=&CZBPwnDa{:
– UDF wC,r*;\1S(}
9C SQL/XML "</}(}X5}]9lD XML 5
9C DB2 Net Search Extender Di/,a) XML D5D+D>Qw+Xkk
SQL dO9C
XQuery wCb) UDF
v SQL
v9C SQL(;9CNN XQuery)lw XML }]1,;\Z XML P6pxPi
/#*K,;\Si/5X{v XML D5#KC(ZBPivBJC:
v h*lw{v XML D5
v ;h*y]f"D5ZD5xPi/,r_i/D=JZmDd{G XML P
P
4P XQuery mo=D SQL/XML /}
SQL/XML /} XMLQUERY M XMLTABLE T0 XMLEXISTS =J9 XQuery m o=\;Z SQL OBDP4P#ZBPivB,JOZ SQL Z4P XQuery:
v h*tCVP SQL &CLrTZ XML D5Zi/#*Z XML D5Zi/,h*
4P XQuery mo=,bI(}9C SQL/XML 4jI
v i/ XML }]D&CLrh*
s(A XMLQUERY r XMLTABLE PD XQuery d?#)
v k XQuery `H,i/"pK|l$ SQL
v h*Z%Ni/P5XX5}]M XML }]
v h*,S XML MX5}]
v h*Vir[/ XML }]#IT+Si/D GROUP BY r ORDER BY S
CZ XML }](}g,9C XMLTABLE /}Tmq=lwMU/ XML }]. s)
8( XML {FUd
Z XML D5P,XML {FUdGI!D,Cw XML D5PZc{D0:#*CJ 9C{FUdD XML D5PDZc,XQuery mo=Xk,18(,;{FUdw*
Zc{D;?V#ITD58(1! XML {FUd,"RITD5PDX(*X8( XML {FUd#
+N}jG+]A XQuery mo=#(N}jGWH
d&
Z 5 B i/ XML }] 65
"b,{FUdywCVE(;)ax#bb6E,g{9k9C|,VED SQL od M XQuery mo=,G4;\9CVEw*odU9V{(}g,(}9C db2 -t w
C|nP&mw)#9I9C -td !n8(VETbDU9V{,bIT7#;
ams
Xb M |, { FU dy wD od # LL PD >} 9C &/ t (~ )w *U9V { (-td~),+2##9C %(-td%)#
}g,pureXML DLL9CT XML D58(K1!*X{FUdD XML D5#T B XML GLLP9CDdP;v XML D5:
<customerinfo xmlns="http://posample.org" Cid="1002">
<name>Jim Noodle</name> <addr country="Canada">
<street>25 EastCreek</street> <city>Markham</city> <prov-state>Ontario</prov-state>
<pcode-zip>N9C 3T6</pcode-zip> </addr> <phone type="work">905-555-7258</phone>
</customerinfo>
XML D5DyZc+D5D1!*X{FU ds(A(CJ4j6(URI)http:// posample.org#
<customerinfo xmlns="http://posample.org" Cid="1002">
(}|( declare default element namespace rT,zZLLPKPD XQuery m
o=9a+ URI w*1!*X{FUds(#}g,TB SELECT odPD XQuery mo=yw1!*X{FUd;g{TLLP4(D CUSTOMER mKP SELECT o
d,G4a5XM'j6:
SELECT cid FROM customer
WHERE XMLEXISTS('declare default element namespace "http://posample.org"; $i/customerinfo/addr/city[ . = "Markham"]' passing INFO as "i")
(}Z XML D5P9C,; URI w*1!*X{FUd,Cmo=I9C}7D{ FUd0:Zmo=P^(Zc{#g{;P1!*X{FUdyw,r_+m; URI s(*1!*X{FUd,G4mo=;a9C}7D{FUd^(
Zc{,"R;
a5XNN}]#}g,TB SELECT od`FZO;od,+|;P1!{FUdy w#g{TLLP4(D CUSTOMER mKPKod,G4;a5XNN}]#
SELECT cid FROM customer WHERE XMLEXISTS('$i/customerinfo/addr/city[ . = "Markham"]'
passing INFO as "i")
+{FUd0:kZc{dO9C
*9C{FUd^(Zc{,IT?vZc{mS{FUd0:#9C0Et*0: kZc{#TZZc po:addr,{FUd0: po k>XZc{ addr t*#g{9C
Zc{4^({FUd0:,G4Xk7#C0:s(A URI#}g,TB
dPD XQuery mo=(}yw{FUd po +{FUd0: po s(A URI http:// posample.org#TLLP4(D CUSTOMER mKPTBod1,a5X;va{#
SELECT cid FROM customer
WHERE XMLEXISTS('
declare namespace po = "http://posample.org";
$i/po:customerinfo/po:addr/po:city[ . = "Markham"]' passing INFO as "i")
{FUd0: po I\GNN0:;X*DGs(A0:D URI#}g,TB SELECT
odPD XQuery mo=9C{FUd0: mytest,+`1ZO;odPDmo=:
SELECT o
66 pureXML 8O
SELECT cid FROM customer WHERE XMLEXISTS('declare namespace mytest = "http://posample.org";
$i/mytest:customerinfo/mytest:addr/mytest:city[ . = "Markham"]' passing INFO as "i")
9C(d{w*{FUd0:
IZ XQuery mo=P9C(d{4%d XML }]P9CDNN{F Ud#TB SELECT odPD XQuery mo=9C(d{4%dyP{FUd0:#
SELECT cid FROM customer WHERE XMLEXISTS('$i/*:customerinfo/*:addr/*:city[ . = "Markham"]'
passing INFO as "i")
TLLP4(D CUSTOMER mKP SELECT od1,a5X;vM'j6#
>}:|D*XD{FUd0:
b)>}5wKgNmSM}%**XD QName 8(D{FUds(#
*XD QName GI!{FUd0:MV?{#{FUd0:kV?{C0Et*#g {{FUd0:fZ,G4as(A URI((CJ4j6),"Raa) URI DrL
N=#
(}9Cng fn:QName"fn:local-name M fn:namespace-uri H/},ITX|{tT MZc{T0iRkZcD{FUd0:`X*D URI#
)9 QName |({FUd URI MV?{#
XQuery {FUdywTVE(;)a2,+;\9CVEw*odDU9V{#b)>
}9C&/t(
~)w*U9V{,k pureXML LLP9CDU9V{`,#
T*XmS{FUd0:
b)>}9CmPD;v XML D5#BPod+4(Km"+ XML D5ekKm P:
CREATE TABLE XMLTEST (ID BIGINT NOT NULL PRIMARY KEY, XMLDOC XML ) ~ INSERT INTO XMLTEST Values (4,
'<depts>
<dept id="A07">
<emp id="31201" >
<location region="31" />
</emp>
<emp type="new" id = "23322" >
<moved:location xmlns:moved="http://oldcompany.com" region="43" />
</emp> </dept> </depts> ') ~
TB SELECT odPD XQuery mo=+r*XmS{FUd0:#XQuery mo= 9C fn:QName 44(;v_P{FUds(D QName#
XQuery let Sd+4(;v{F* emp "R{FUd* http://example.com/new D U*X#Z transform mo=P,rename mo=+|D XPath mo= $newdept/depts/
dept/emp[@type="new"] yj6D*XD{F#
d0:#
SELECT XMLQUERY ( '
let $newemp := fn:QName( "http://mycompany.com", "new:emp") return
K*XD{F* emp,+G;P{FU
Z 5 B i/ XML }] 67
transform
copy $newdept := $doc modify
do rename $newdept/depts/dept/emp[@type="new"] as $newemp return $newdept ' passing XMLDOC as "doc" )
from XMLTEST where ID=4~
XQuery mo=+5XTB XML }]T08(* new:emp ZcD;?VD{FUds (#-}^DDD5G;vP' XML,||,Qs(A{FUdD{FUd0:#Q+
{FUdywmSAQX|{DB*X#
<depts>
<dept id="A07">
<emp id="31201">
<location region="31" /> </emp> <new:emp xmlns:new="http://mycompany.com" type="new" id="23322">
<moved:location xmlns:moved="http://oldcompany.com" region="43" /> </new:emp>
</dept>
</depts>
S*XP}%{FUd0:
IT(}+ZcX|{*;_P{FUds(D QName,45VSZc{P}%{FU d0:#SELECT odPDTB XQuery mo=9C;v for SdM fn:namespace-uri
/ } 47 ( ? v emp Z c P * X Z cD URI# g { URI * http:// oldcompany.com,G4 rename mo=+9C fn:QName M fn:local-name /}S*X
}%{FUd0:#
ZcP
SELECT XMLQUERY ( '
transform
copy $newdept := $x modify
for $testemp in $newdept/depts/dept/*:emp/* return if ( fn:namespace-uri( $testemp ) eq "http://oldcompany.com") then
do rename $testemp as fn:QName( "", fn:local-name($testemp) )
else() return $newdept
' passing XMLDOC as "x" )
from XMLTEST where ID=4~
68 pureXML 8O
XQuery mo=+5XTB XML }]#Zc{ new:location ;f;* location#4 SZcP}%{FUds(#
<depts>
<dept id="A07">
<emp id="31201">
<location region="31" />
</emp>
<emp type="new" id="23322">
<location xmlns:moved="http://oldcompany.com" region="43" />
</emp>
</dept>
</depts>
XMLQUERY /}Ev
XMLQUERY G;v SQL j?/},|JmzZ SQL OBDP4P XQuery mo=#
IT+d?+]AZ XMLQUERY P8(D XQuery mo=#XMLQUERY 5X XML 5,|G XML rP#KrPIT*U,2IT|,;nr`n#
(}Z SQL OBDP4P XQuery mo=,ITjIBPNq:
v Tf"
XML D5Zi/;v SQL 1Z{vD56pi/)
v 9 XML }]\;Nk SQL i/
v ,1TX5}]M XML }]xPYw
v +x;=D SQL &m&CZ5XD XML 5(}g,9CSi/D ORDER BY S
a{xPEr)
dT
PX|`j8E",kNDPXHOi/=(DD5#
k"b,XQuery xVs!4,rK8(Z XMLQUERY P8(D XQuery mo=M
d?1Xk!D#
;h*+] SQL mo=Dj{&\1,9a)KCZ+]P{x;XZ passing S
dPT= 8 ( {FD O r
XMLTABLE xPr%P{+]#
D?V XML D5x;G {v XML D5xPYw(;P XQuery ITZ
%o(# k N D9C XMLEXISTS"XMLQUERY M
XMLQUERY 5XDGUrP
g{dP8(D XQuery mo=zzGUrP,G4 XMLQUERY /}5XGUrP#
}g,g{BP=v XML D5f"Z CUSTOMER mD XML P INFO P:
<customerinfo Cid="1002">
<name>Jim Noodle</name> <addr country="Canada">
<street>25 EastCreek</street> <city>Markham</city> <prov-state>Ontario</prov-state>
<pcode-zip>N9C 3T6</pcode-zip> </addr> <phone type="work">905-555-7258</phone>
</customerinfo>
<customerinfo Cid="1003">
<name>Robert Shoemaker</name>
<addr country="Canada">
<street>1596 Baseline</street>
<city>Aurora</city>
<prov-state>Ontario</prov-state>
<pcode-zip>N8X 7F8</pcode-zip> </addr> <phone type="work">905-555-7258</phone> <phone type="home">416-555-2937</phone> <phone type="cell">905-555-8743</phone> <phone type="cottage">613-555-3278</phone>
</customerinfo>
g{"vTBi/:
SELECT XMLQUERY ('$d/customerinfo/phone' passing INFO as "d") FROM CUSTOMER
Z 5 B i/ XML }] 69
G4zIDm+|,gB=P(QTCmxPq=`ETc|Se~wK):
m7.a{m
<phone type=work>905-555-7258</phone>
<phone type=work>905-555-7258</phone><phone type=home>416-555-2937</phone><phone type=cell>905-555-8743</phone><phone type=cottage>613-555-3278</phone>
k"b,Z;P|,;v <phone> *XDrP,xZ~P|,Dv <phone> *XDr P#zIKa{Gr*Z~v XML D5|,Dv <phone> *X,"R XMLQUERY 5Xzc XQuery mo=DyP*XDrP#(k"b,Z~PPDa{Ga9;1D
D5#k7#SUK
a{DNN&CLr<\}7&mKP*#)
O;v>}5wK(#9C XMLQUERY D==:;N&CZ;v XML D5,dP zIDmD?Pm>;vD5zzDa{#+G,9IT+ XMLQUERY ,1&CZ`
vD5,Mq`vD5|,Z%vrPP;y#ZK
>}P,+ XMLQUERY &CZr
PPDyPD5zzDa{5XZ;PP#
}g,Y(OfT>DGvD5f"Z CUSTOMER mD INFO PP#TBi/PD db2-fn:xmlcolumn /}5X;vZ INFO PP|,=v XML D5DrP#
VALUES
(XMLQUERY
('db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo/phone'))
;s,+ XMLQUERY &CZ XML D5Db;vrP,zIDm+;|,;P,g
By>:
m8.a{m
<phone type=work>905-555-7258</phone><phone type=work>905-555-7258</phone><phone type=home>416-555-2937</phone><phone type=cell>905-555-8743</phone><phone type=cottage>613-555-3278</phone>
INFO PP XML D5PDyP <phone> *X<5XZ;PP,r* XMLQUERY T%v5xPYw:S db2-fn:xmlcolumn 5XD XML D5DrP#
XMLQUERY 5XDUrP
g{dP8(D XQuery mo=5XUrP,G4 XMLQUERY /}5XUrP#
}g,ZTBi/P,TZ CUSTOMER mD INFO PP;|,5*“Aurora”D <city> *XD?;P,XMLQUERY +5XUrP#
SELECT Cid, XMLQUERY ('$d//addr[city="Aurora"]' passing INFO as "d") AS ADDRESS FROM CUSTOMER
Y( CUSTOMER mP}P,+;P;v XML D5|,5*“Aurora”D <city> *X#
O;v SELECT od+zzBm(QTCdvxPq=`ETc|Se~wK)#
m9.a{m
CID ADDRESS
1001
1002
70 pureXML 8O
m9.a{m(x
CID ADDRESS
1003 <addr country=Canada><street>1596 Baseline</street><city>Aurora</
)
city><prov-state>Ontario</prov-state><pcode-zip>N8X-7F8</pcode-zip></ addr>
k"bGgNT;|,5*“Aurora”D <city> *XDP5X$H*cDQrP/ XML, x;GU5DUrP#+G,+ZZ}PP5X <addr> *X,r*|zc XQuery m
o=#ZZ}PP,+5X;vGUrP#
(}ZodD WHERE Sdx;G SELECT SdP&C=
J(g XMLEXISTS),I
T\b5X|,UrPDP#}g,IT4gBy>`4O;vi/,+ XMLQUERY /}PD}K=JF/= WHERE Sd:
SELECT Cid, XMLQUERY ('$d/customerinfo/addr' passing c.INFO as "d") FROM Customer as c WHERE XMLEXISTS ('$d//addr[city="Aurora"]' passing c.INFO as "d")
(}Ki/zIDmgBy>:
m
10.
a{m
CID ADDRESS
1003 <addr country=Canada><street>1596 Baseline</street><city>Aurora</
city><prov-state>Ontario</prov-state><pcode-zip>N8X-7F8</pcode-zip></ addr>
XMLQUERY (#CZ SELECT SdPT5Xy!D5D,N#Z XMLQUERY D XQuery mo=P8(D=J;}Ka{/PDP,|GvCZ7(5XD,N#*f}
}%a{/PDP,h*Z WHERE SdP&C=J#XMLEXISTS =JIC4&C @5Zf"D XML D5ZD5D=J#
+ XMLQUERY a{D}]`M*;*G XML `M
g{k*+ XMLQUERY /}Da{5XA SQL OBDTxPx;=&m(gxPH OrE r Yw ),G4 h *+ 5X D XML 5* ; *f ]D SQL `M# 8 ( XMLCAST +9z\;Z XML 5MG XML 5.dxP*;#
":
1. v1Z XMLQUERY P8(D XQuery mo=5XDrP|,;v
Qr"Dn1,
E\+ XMLQUERY Da{*;* SQL }]`M#
2. ZG UTF-8 }]bP,+ XMLQUERY Da{*;* SQL }]`Ma<Bzk
3*;,-rG5XD5aSZ? UTF-8 `k*;*}]bzk3#5X5Z;Z }]bzk3PDyPzkc+f;*
f;V{#}kf;V{a<B XML kG
XML 5.dDHOvVbbP*,yT&"b7#Qf"D XML }]v|,}]
bzk3Z|(Dzkc#
Z 5 B i/ XML }] 71
>}:HOi/PD XML 5MG XML 5
ZTBi/P,+ XMLQUERY 5XDrPSd XML `M*;*V{`M,TcI T+|k PRODUCT mD NAME PHO#(g{S XMLQUERY 5XD XML 5;
GrP/DV{.,G4 XMLCAST Yw+'\#)
SELECT R.Pid FROM PURCHASEORDER P, PRODUCT R WHERE R.NAME =
XMLCAST( XMLQUERY ('for $pname in $d/PurchaseOrder/item/name
>}:4 XMLQUERY a{xPEr
ZTBi/P,4z7hvD <name> *XD5ErD3r5Xz7j6,Cz7hv
w* XML D5f"#r* SQL ;\T XML 5xPEr,yTXk+rP*;* SQL ITdxPErD5(ZK>}P,*V{)#
SELECT Pid FROM PRODUCT ORDER BY XMLCAST(XMLQUERY ('$d/product/description/name'
}]`M.dD?F*;
return $pname'
PASSING P.PORDER AS "d") AS VARCHAR(128))
PASSING DESCRIPTION AS "d") AS VARCHAR(128))
Zm`ivB,h*+_Px(}]`MD5
?F` M*;
*m;V}]`M,r_
*;*$H"+Hr!};;,D,;}]`M#}]`Ma}G;v>},+;V }]`Ma}*m;V}]`M1h*+5?F*;*BD}]`M#I?F*;* m;V}]`MD;V}]`MIS
4}]`M
?F`M*;
*?j}]`M#
IT+;V}]`M~=rT=X?F*;*m;V}]`M#y]f0=D}]` M,IT9C?F`M*;/}"CAST f6r XMLCAST f64T=|D}]`M# mb,14(KC'(eDP4/}1,Xk\;+4/}D
N}D}]`M?F*
;*}Z4(D/}D}]`M#
Z 74 3Dm 11 PT>KZC}]`M.d\'VD?F`M*;#Z;Pm>?F` M*;Yw}D}]`M(4}]`M),x%?D}]`Mm>?F`M*;Yw D?j}
]`M#“Y”m>IT+ CAST f6CZ4}]`MM?j}]`MDiO#
5wK;\9C XMLCAST f6DG)iv#
g{+NN}]`M?F*;*V{r<N}]`M1NNGUWV{;XO,Ma 5X/f#KXOP*kTV{r<N}
]`M351NNGUWV{;XOx"z
msDiv;,#
f0=%5`MDBP?F`M*;G\'VD(}GmPyw,qr<9C CAST f 64xP?F`M*;):
v S%5`M DT ?F*;*|D4}]`M S
v S%5`M DT D4}
]`M S ?F*;*%5`M DT
v S%5`M DT ?F*;*,;%5`M DT
v S}]`M A ?F*;*%5`M DT;dP,I+ A a}*%5`M DT D4}
]`M S
v S INTEGER ?F*;*;V4}]`M* SMALLINT D%5`M DT
72 pureXML 8O
v S DOUBLE ?F*;*;V4}]`M* REAL D%5`M DT
v S DECFLOAT ?F*;*4}]`M* DEFLOAT D%5`M DT
v S VARCHAR ?F*;*;V4}]`M* CHAR D%5`M DT
v S VARGRAPHIC ?F*;*;V4}]`M* GRAPHIC D%5`M DT
v TZ Unicode }]b,S VARCHAR r VARGRAPHIC ?F*
;*;V4}]`
M* CHAR r GRAPHIC D%5`M DT
v 9C XMLCAST f6S;V_P4}]`M S D%5`M DT ?F*;* XML
v y] XML 5D XML #=}]`M,9C XMLCAST f6S XML ?F*;*
_PI*NNZC}]`MD4}]`MD%5`M DT
;\+ FOR BIT DATA V{`
M?F*;* CLOB#
TZf0=+}i`Mw*?jD?F`M*;,Xk\;+4}iD*XD}]` M?F*;*?j}i}]D*XD}]`M(SQLSTATE 42846)#g{?j}i`M G;vU(}i,G44}i5XkG;vU(}i(
SQLSTATE 42821),"R4}
i5Dy}Xk!ZrHZ?j}i}]`MDnsy}(SQLSTATE 2202F)#g{? j}i`MG;v*O}i,G4Xk\;+4}i5Dw}D}]`M?F*;*
?j}i`MDw}D}]`M#;\+C'(eD}i`M
5?F*;*C'(e
Dm;V,{D}i`M(SQLSTATE 42846)#
;\+Nj`Mw* CAST f6D4}]`Mr?j}]`M,}G+N}jG?F* ;*Nj`M#
TZf0=+P`Mw*?jD?F`M*;,4P5mo=DH6Xkk?
jP`
MDH6`%d,"RXk\;+4P5mo=PD?vVN?F*;*`&D?j VN #;\ +C' (eD P ` M5 ? F* ; *C ' (e D m; V ,{ D P` M
(SQLSTATE 42846)#
^(+a9/`M5?F*;*d{`M5#;h*+a9
/`M ST ?F*;*|D
dP;V,`M,bGr* ST D,`MDyP=(<JCZ ST#g{Z{DYw;J CZ ST DS`M,G49CS`M&mmo=4+ ST 1w|D;VS`M4&m#
149C#={4T?F`M*;Pf0=DC
SQL
76
4iR|(CC'(eD}]`MD_PC{FDZ;V#=#
'(eD}]`MST^(1,9C
f0=}C`MDBP?F`M*;G\'VD:
v S}C`M RT ?F*;*|Dm>}]`M S
v S}C`M RT Dm>}]`M S ?F*;*}C`M RT
v S?j`M* T D
}C`M RT ?F*;*?j`M* S D}C`M RS,dP S
G T D,`M#
v S}]`M A ?F*;*}C`M RT,dP,I+ A a}*}C`M RT Dm>
}]`M S#
149C#={4T?F`M*;Pf0=DN<}]`MD?
76
9C SQL
4iR|(CC'(eD}]`MD_PC{FDZ;V#=#
j`MST^(1,
Z 5 B i/ XML }] 73
m
11.
\'VDZC}]`M.dD?F`M*;
?j}]`M
V A R
4}]`M
S M
I
A
N
L
T
L
E
I
G
N
E
T
R
D E
B
C
I
G
I
R
I
M
E
N
A
A
T
L
L
D E C
D O
F
U
L
B
O
L
A
E
T
C H A
R C H
F A
B R
D
C
V
H
A
A
R
R C H A
2
R
C L
F
O
B
2
B
D
SMALLINT YYYYYYYYYYY -Y
INTEGER YYYYYYYYYYY -Y
BIGINT YYYYYYYYYYY -Y
DECIMAL YYYYYYYYYYY -Y
REAL YYYYYYYYYYY -Y
DOUBLE YYYYYYYYYYY -Y
DECFLOAT YYYYYYYYYYY -Y
CHAR YYYYYYYYYYYYY
CHAR FOR BIT
YYYYYYYYYYY - - - - YYYYY
V A R
G
G
R
R
A
A P
P
H
H
I
I
C
C
1Y1
1Y1
1Y1
1Y1
1Y1
1Y1
1Y1
1Y1Y1
T I
M D B
D
B
C
A
L
L
T
O
O
E
B
B
E
S
T
T
A
I
M
M
P
E
B O O L
X
E
M
A
L
N
-----Y3-
-----Y3-
-----Y3-
-----Y3-
-----Y3-
-----Y3-
-------
YYYYY4-
3
-
DATA
VARCHAR YYYYYYYYYYYYY
VARCHAR FOR BIT
YYYYYYYYYYY - - - - YYYYY
1Y1Y1
YYYYY4-
3
-
DATA
CLOB -------Y-Y-YY
GRAPHIC Y
VARGRAPHIC Y
1Y1Y1Y1Y1Y1Y1Y1
1Y1Y1Y1Y1Y1Y1Y1
DBCLOB -------Y
-Y1-Y1YYYYY1Y1Y1Y3-
-Y1-Y1YYYYY1Y1Y1Y3-
1
-Y1-Y1YYYY - - -Y3-
1Y1Y1
BLOB --------Y-Y----Y---Y
DATE - YYY - - - YYYY -Y
TIME - YYY - - - YYYY -Y
TIMESTAMP - - YY - - - YYYY -Y
XML Y
5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5
1Y1
1Y1
1Y1
Y- - -Y4-
4
--Y-YY3-
---Y-Y3-
--YYYY3-
Y-
-
BOOLEAN ---------------------
74 pureXML 8O
m
11.
\'VDZC}]`M.dD?F`M*;(x
)
?j}]`M
V
4}]`M
A
R S M
I
A
N
L
T
L
E
I
G
N
E
T
R
D E
B
C
I G
I
R
I
M
E
N
A
A
T
L
L
D E C
D O
F
U
L
B
O
L
A
E
T
C H A
R C H
F A
B
2
R
D
C
V
H
A
A
R
R C H A R
C L
F
O
B
2
B
D
V A R
G
G R A P H I C
D
R
B
A
B
C
P
L
L
H
O
O
I
B
B
C
5w
v PXf0=C'(eD`MM}C`MD\'VD?F`M*;DE",kNDCm0fDhv#
v ^(+a9/`M5?F*;*d{NN`M5#
v LONG VARCHAR M LONG VARGRAPHIC }]`MLx\'V+
G;Fv9C,"RZ+4D"PfPI\a
}%#
1
v'VT Unicode }]bxP?F`M*;#
2
FOR BIT DATA
T I M E S T
T
D
A
I
A
M
M
T
P
E
E
B O O L
X
E
M
A
L
N
3
;\9C XMLCAST 44P?F`M*;#
4
~=&m XMLPARSE /},TcZT XML PD35(INSERT r UPDATE)*V{.1+V{.*;* XML#
V{.XkGa9<CD XML D5,35E\I&#
5
;\9C XMLCAST "Ry] XML 5DWc XML #=}]`M44P?F`M*;#PXj8E",kND
“XMLCAST”#
6
;\+Nj`Mw* CAST f6D4}]`Mr?j}]`M,}G+N}jG?F*;*Nj`M#
mm12 T>KZ?F*;*j6D?j}]`M1&ZDoiRPXyJCDfrD
E"#
m
12.
PX?F*;*3V}]`MDfr
?j}]`M fr
SMALLINT SQL Reference, Volume 1PD:SMALLINT j
?/};
INTEGER SQL Reference, Volume 1PD:INTEGER j?
/};
BIGINT SQL Reference, Volume 1PD:BIGINT j?/
};
DECIMAL SQL Reference, Volume 1PD:DECIMAL j?
/};
NUMERIC SQL Reference, Volume 1PD:DECIMAL j?
/};
REAL SQL Reference, Volume 1 PD:REAL j?/
};
Z 5 B i/ XML }] 75
m
12.
PX?F*;*3V}]`MDfr(x
?j}]`M fr
DOUBLE SQL Reference, Volume 1PD:DOUBLE j?
DECFLOAT SQL Reference, Volume 1PD:DECFLOAT j
CHAR SQL Reference, Volume 1 PD:CHAR j?/
VARCHAR SQL Reference, Volume 1 PD:VARCHAR j
CLOB SQL Reference, Volume 1 PD:CLOB j?/
GRAPHIC SQL Reference, Volume 1 PD:GRAPHIC j
VARGRAPHIC SQL Reference, Volume 1 PD:VARGRAPHIC
DBCLOB SQL Reference, Volume 1 PD:DBCLOB j?
BLOB SQL Reference, Volume 1 PD
DATE SQL Reference, Volume 1 PD:DATE j?/
TIME SQL Reference, Volume 1 PD:TIME j?/
TIMESTAMP g{4`M*V{.,kND SQL Reference,
)
/};
?/};
};
?/};
};
?/};
j?/};
/};
:BLOB j?/
};
};
};
Volume 1 PD:TIMESTAMP j?/};,d P8( K ;v Yw } # g {4 }] ` M *
DATE,G41d A G I 8 ( DU Z M 1 d 00:00:00 iI#
76 pureXML 8O
+G XML 5?F*;* XML 5
m
13.
\'VDSG
4}]`M
SMALLINT Y xs:short
INTEGER Y xs:int
BIGINT Y xs:long
DECIMAL r NUMERIC Y xs:decimal
REAL Y xs:float
DOUBLE Y xs:double
DECFLOAT N -
CHAR Y xs:string
VARCHAR Y xs:string
CLOB Y xs:string
XML
5?F*;*
XML
5
?j}]`M
XML qCD XML #=`M
m
13.
\'VDSG
4}]`M
GRAPHIC Y xs:string
VARGRAPHIC Y xs:string
DBCLOB Y xs:string
DATE Y xs:date
TIME Y xs:time
TIMESTAMP Y xs:dateTime
BLOB Y xs:base64Binary
V{`M FOR BIT DATA Y xs:base64Binary
%5`M +K<mk%5`MD4`MdO9C
5w
1
4}]`M TIMESTAMP 'VD1dAG+H* 0 = 12#xs:dateTime Dns!}k}+H
* 6#g{4}]`M TIMESTAMP D1dAG+H,}K 6,G45Z?F*;* xs:dateTime
1+;XO#
XML
5?F*;*
XML5(x)
?j}]`M
XML qCD XML #=`M
1
LONG VARCHAR M LONG VARGRAPHIC }]`MLx\'V+G;Fv9C,"
RZ+4D"PfPI\a}%#
1+V{.5?F*;* XML 51,qCD xs:string -S5;\|,G( XML V
{(SQLSTATE 0N002)#g{dkV{.;GIC Unicode,G4a+dkV{*;* 9C Unicode#
T SQL ~x
F`MxP?F`M*;1+qC`M* xs:base64Binary D XQuery -
S5#
+ XML 5?F*;*G XML 5
ITO*(} XMLCAST + XML 5*;*G XML 5b;}L|,=v?F`M* ;:;vG XQuery ?F`M*;,|+4 XML 5*;*T&Z SQL ?j`MD XQuery `M;SEGS`&D XQuery `M?F*;*f}D SQL `M#
g{?j`M_P`&D\'VD XQuery ?j M*;*`&D XQuery ?j`MD XQuery ?F`M*;,G4 XMLCAST G\'
VD#Z XQuery ?F`M*;P9CD?j`M@5Z`&D XQuery ?j`M," RI\|,;)=S^F#
BmP>K(}bV*;qCD XQuery `M
m
14.
\'VDS
?j}]`M
SMALLINT Y xs:short
INTEGER Y xs:int
BIGINT Y xs:long
XML
5?F*;*G
XML
`M,"R_P\'VDCZS45`
#
5
4}]`M
XML `&D XQuery ?j`M
Z 5 B i/ XML }] 77
m
14.
\'VDS
XML
5?F*;*G
XML5(x)
4}]`M
?j}]`M
XML `&D XQuery ?j`M
DECIMAL r NUMERIC Y xs:decimal
REAL Y xs:float
DOUBLE Y xs:double
DECFLOAT Y ;P%d`M
1
CHAR Y xs:string
VARCHAR Y xs:string
CLOB Y xs:string
GRAPHIC Y xs:string
VARGRAPHIC Y xs:string
DBCLOB Y xs:string
DATE Y xs:date
TIME(;x1x) Y xs:time
TIMESTAMP(;x1x) Y xs:dateTime
2
BLOB Y xs:base64Binary
CHAR FOR BIT DATA N ;I4P?F`M*;
VARCHAR FOR BIT DATA Y xs:base64Binary
%5`M +K<mk%5`MD4`MdO9C
P"}C"a9/ris}]`M
N ;I4P?F`M*;
(ADT),r_d{
5w
1
DB2 'V XML #= 1.0,C#=;P* DECFLOAT a)%dD XML #=`M#4TB
==&m XMLCAST D XQuery ?F`M*;=h:
v g{45D`M* XML #=}V`M,G49CC}V`M#
v g{45D`M* XML #=`M xs:boolean,G49C xs:double#
v qr,9C xs:string "
2
xs:dateTime Dns!}k}+H* 6#4}]`M TIMESTAMP 'VD1dAG+H* 0 =
4P=SliTR=P'}Vq=#
12#g{?j}]`M TIMESTAMP D1dAG+H!Z 6,G45ZS xs:dateTime ?F*; 1+;XO#g{?j}]`M TIMESTAMP D1dAG+H,}K 6,G45ZS xs:dateTime ?F*;1
+T|nd 0#
ZBP^FivB,Iz^F XML #=}]`MP'XCw XQuery ?F`M*;D ?j}]`M#
v **;*V{.`MD XML 5XkzcG) DB2 `MD$H^F,;\XONN
V{rVZ#IzD XML #=`MD{FGs4D SQL `M{FSO
B._V{
MV{.Dns$H;}g,g{ XMLCAST ?j}]`MG VARCHAR(20),G
4IzD XML #=`MD{FG VARCHAR_20#
v **;* DECIMAL 5D XML 5Xkzc8(D DECIMAL 5D+H,"R!}
c s f D G c ;} ; \ ,} ! } ; } # I z D XML # = `M D { F
G
DECIMAL_precision_scale,dP precision G?j SQL }]`MD+H,x scale
78 pureXML 8O
G?j SQL }]`MD!};;}g,g{ XMLCAST ?j}]`M* DECIMAL (9,2),G4IzD XML #=`MD{F* DECIMAL_9_2#
v **;* TIME 5D XML 5;\Z!}csf|,_PGc;}Dk?V#Iz
D XML #=`MD{F* TIME#
g{ XML 5;zcNNb)
^F,G4IzD XML #=`M{+;vVZ{"P#
K`M{IozC'Kbms{",+G;T&ZQ(eDNN XQuery `M#g{d k5;{OIzD XML #=`M(`&D XQuery ?j`M)Dy>`M,G4ms
{"I\a8>C`M#IZKI
z XML #=`M{Dq=+4I\a|D,rK;
&+|Cw`LSZ#
Z XQuery ?F`M*;&m XML 5.0,+}%rPPDNND5Zc,x;}% DD5ZcD?v1SSz+I*CrPPD;n#g{D5Zc_P`v1SSz
G4^D.sDrPH-<rP_P|`n#;PNND5ZcD XML 5Ma
Zc, (}9C XQuery fn:data /};-S/,"+qCD-S/rP5CZ XQuery ?F
`M*;#g{-S/DrP5G;vUrP,G4?F`M*;+5XU5,"R ;a 4PN N
x; =&m #g{ -S/ D r P5PP ` vn , G4 a 5X m s
(SQLSTATE 10507)#
g{CZ XMLCAST D?j`MG SQL }]`M DATE"TIME r TIMESTAMP, G4 XQuery ?F`M*;zzD XML 52a;w{* UTC,"Ra}%C5D1
x?V#
1`&D XQuery ?j`M5;*;*
SQL ?j`M1,~xF XML }]`M(}
g,xs:base64Binary r xs:hexBinary)MaSV{q=*;*5JD~xF}]#
g{((}9C XMLCAST)+ INF"-INF r NaN b) xs:double r xs:float 5?
F*;* SQL }]`M DOUBLE r REAL 5,G4a5Xms(SQLSTATE
22003)#xs:double r xs:float 5 -0 +;*;* +0
#
g{4Yw};GC'(eD%5`M,G4?j`MITGC'(eD%5`M# ZKivB,+9C XMLCAST f6+45?F*;*C'(eD%5`M(4,? j`M)D4`M,;s,+9C CAST f6+K5?F*;*C'(eD%5`
ZG Unicode }]bP,S XML 5?F*;*G XML ?j`Mf0+zk3SZ
? UTF-8 q=*;*}]bzk3#g{ XML 5PDNNzkc;vVZ}]bz k3P,G4bV*;I\a<B}kf;V{#

XMLQUERY

 XMLQUERY ( xquery-expression-constant
PASSING xquery-argument
M#
,
BY REF
Z 5 B i/ XML }] 79
BY REF
RETURNING SEQUENCE
EMPTY ON EMPTY
)

xquery-argument:
(1)
xquery-variable-expression AS identifier
BY REF
":
1 mo=D}]`M;\G DECFLOAT#
#=* SYSIBM#;\+/}{8(*^({#
XMLQUERY /}5X;v XML 5,C5GI\9C8(dkTd?w* XQuery d ?T XQuery mo=xPs5Da{#
xquery-expression-constant
8(;v SQL V{.#?,9C\'VD XQuery oTo(I+
dbM* XQuery
mo=#Zbv* XQuery od.0,C#?V{.;*;* UTF-8#XQuery m o=9C;iI!Ddk XML 54P,"5X,yw* XMLQUERY mo=D 55XDdvrP#xquery-expression-constant D5;\GUV{.rUWV{.
(SQLSTATE 10505)#
PASSING
8(dk5T0b)5+]A
xquery-expression-constant y8(D XQuery mo=
D==#1!ivB,(}9CP{w*d?{,+wC/}1yZwCrPD?
v(;P{~=+]A XQuery mo=#g{8(D xquery-argument PD identi- fier kP{wCr`%d,G4a+T= xquery-argument +]A XQuery mo=,
Sx2GC~=P#
BY REF
(1!+]zF)}]`M* XML DNN xquery-variable-expression M5
8
XD5}C#1(}}C+] XML 51,XQuery s5+1SS8(Ddkm o=P9CdkZcw(g{P),b+#tyPtT,| (-<Zcj6M D53r#g{=vN}+]`,D XML 5
,"RZcj6HOMD53r
HOf0b=vdkN}.d|,D3)Zc,G4b =VHOI\}C`,
XML ZcwPDZc#
KSd;0lG XML 5D+]==#G XML 5Z?F*;* XML Zd+ 4(5DB1>#
xquery-argument
8(++]A xquery-expression-constant
y8(D XQuery mo=DN}#N
}8(5M+]C5D==#CN}|(+xPs5D SQL mo=#
v g{zI5D`MG XML,G4|+dI input-xml-value#U XML 5+*
;* XML UrP#
v g{zI5D`M;G XML,G4|XkI?F*;* XML }]`
5+*;* XML UrP#*;sD5+dI input-xml-value#
M#U
80 pureXML 8O
T xquery-expression-constant xPs51,+* XQuery d?a);vHZ input-xml-value D5MI AS Sd8(D{F#
xquery-variable-expression
8(;v SQL mo=,d5Z4PZdI) xquery-expression-constant y 8(D XQuery mo=9C#Cmo=;\|,rP}C(SQLSTATE
428F9)r OLAP /}(SQLSTATE 42903)#Cmo=D}]`M;\G DECFLOAT#
AS identifier
8( xquery-variable-expression yzID5+w* XQuery d?+]A xquery-expression-constant#Cd?{+* identifier#XQuery oTPDd?
{0fD0<@*{E($);|(Z identifier P#j6XkGP' D XQuery d?{,"R^Z XML NCName (SQLSTATE 42634)#j6D
$H;\,} 128 vVZ#,; PASSING SdPD=v
N};\9C`
,Dj6(SQLSTATE 42711)#
BY REF
8>+(}}C+] XML dk5#1(}}C+] XML 51,XQuery s5+1SS8(Ddkmo=P9C dkZcw(g{P),b+#t
yPtT,|(-<Zcj6MD53r#g{=vN}+]`
,D XML
5,"RZcj6HOMD53rHO f0b=vdkN}.d|,D3 )Z c,G4b=VHOI\}C`, XML ZcwPDZc#g{Z
xquery-variable-expression sf48( BY REF,G4+9C PASSING X
|VsfDo(ya)D1!+]zF+] XML N}
#;\TG XML 5
8(K!n#+]G XML 51,C5+*;* XML;K}La4(1
>#
RETURNING SEQUENCE
8> XMLQUERY mo=5X;vrP#
BY REF
8>(}}C5X XQuery mo=Da{#g{K5|,Zc,G49C XQuery mo=D5X5DNNmo=+1SSUZc
}C,b+#tyPZctT,|(
-<Zcj6MD53r#}CDZcZdZcwZ#V`,#g{48( BY REF
Sd,+8(K PASSING,G4+9C1!+]zF#g{H48( BY REF 2 48( PASSING,G41!+]zF* BY REF#
EMPTY ON EMPTY
8(&m XQuery
mo=yzzDUrP+w*UrP5X#
a{D}]`M* XML;|;\*U#
g{T XQuery mo=xPs51zzms,G4 XMLQUERY /}+5X XQuery ms(SQLSTATE 6p“10”)#
":
1. XMLQUERY C(^F:XMLQUERY /};\G:
v k JOIN Kc{`X*D ON Sdr MERGE
odD;?V(SQLSTATE
42972)
v CREATE INDEX EXTENSION odPD GENERATE KEY USING r RANGE
THROUGH SdD;?V(SQLSTATE 428E3)
Z 5 B i/ XML }] 81
v CREATE FUNCTION(b?j?)odPD FILTER USING Sdr CREATE
INDEX EXTENSION odPD FILTER USING SdD;?V(SQLSTATE 428E4)
v li<xrPzImo=D;?V(SQLSTATE 42621)
v group-by SdD;?V(SQLSTATE 42822)
v P/}Td?D;?V(SQLSTATE 42607)
2. w*Si/D XMLQUERY:d1Si/D XMLQUERY mo=I\\^F
Dod^F#
XMLTABLE /}Ev
XMLTABLE G;v SQL m/},|S XQuery mo=Ds5a{P5Xm#XQuery mo=(#5X5w*rP,+G,XMLTABLE Jmz4P XQuery mo="5X5
w*m#5XDmIT|,NN SQL }]`M(|( XML)DP#
Si/
k XMLQUERY /};y,IT+d?+]AZ XMLTABLE P8 =#XQuery mo=Da{CZzzzIDmPDP5#zIDmDa9I XMLTABLE
D COLUMNS Sd(e#ZKSdP,(}8(P{"}]`MMzIP5D==4 (ePDXw#9a)KCZ+]P{x;XT=8({FDOr%o(#kN
97 3D:9C XMLEXISTS"XMLQUERY r XMLTABLE +]Dr%P{;#
IT(}Z XMLTABLE D PATH SdP8( XQuery mo=4zzzIDmPDP 5#g{;P* PATH Sd8( XQuery mo=,G4+P{Cw XQuery mo=4
zIP5,"RZzIP51,H0Z XMLTABLE P8(D XQuery mo=Da +I*b?OBDn#TZzIP5D PATH SdD XQuery mo=5XUrPDi
v,9IT8(I!1!Sd4*Pa)1!5#
g{zIDmPDP`M;G XML,"R(eP5D XQuery mo=Da{;GUr
P,G4~=9C XMLCAST 4+ XML 5*
XMLTABLE /}Jmz!qGqyw{FUd#g{9C XMLNAMESPACES yw 8({FUd,G4b){FUds(JCZ XMLTABLE /}wCPDyP XQuery
mo=#g{;9C XMLNAMESPACES yw4yw{FUds(,G4s(vJC ZP XQuery mo=,bq-
{FUdyw#
;*?j}]`MD5#
(D XQuery mo
DZ
{
XMLTABLE Ec
5Xm(x;GrP)9C\;Z SQL i/OBDP4P`FTBDYw:
v Z SQL +i/P|z XQuery mo=Da{
82 pureXML 8O
}g,ZTBi/P,SQL +i/|z(}Z XMLTABLE P4P XQuery mo= “db2-fn:xmlcolumn(CUSTOMER.INFO)/customerinfo”yzIDm#
SELECT X.* FROM XMLTABLE ('db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo'
COLUMNS "CUSTNAME" CHAR(30) PATH 'name',
"PHONENUM" XML PATH 'phone')
as X
v +f"D XML D5PD5ek=mP(kNDPXek5D XMLTABLE >})
v T XML D5PD5xPEr
}g,ZTBi/P,4f"Z CUSTOMER mD INFO PPD XML D5ZDM
'{Ta{xPEr#
SELECT X.* FROM XMLTABLE ('db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo'
as X
ORDER BY X.CUSTNAME
COLUMNS "CUSTNAME" CHAR(30) PATH 'name',
"PHONENUM" XML PATH 'phone')
v +;) XML 5f"*X5}],"+;) XML 5f"* XML(kNDPXek
5D XMLTABLE >})
X*Bn:g{Z XMLTABLE D PATH !nP8(D XQuery mo=5X:
v `vniIDrP,rPD}]`MXk* XML#g{}Z+S XMLTABLE 5X
D5ek= XML PP,G4
7#ekD5Gq=<CD XML D5#PX&m5X
`vnDrPD>},kNDPXek5D XMLTABLE >}#
v UrP,rTCP55XU5#
>}:ek XMLTABLE P5XD5
XMLTABLE SQL m/}ICZSf"D XML D5Plw5,;s+lw=D5ek =mP#
K=(Gr%N=DVb,VbG+ XML D5,Nf"ZX5mPPD}L#(fx
"MD XML #=Vb&\a)DG|UiD;VVb`M#hzx"MD XML #= Vb,I
T,1+`v XML D5VbI`vm#)
}g,g{BP=v XML D5f"Z{* CUSTOMER DmP:
<customerinfo Cid="1001">
<name>Kathy Smith</name> <addr country="Canada">
<street>25 EastCreek</street> <city>Markham</city> <prov-state>Ontario</prov-state> <pcode-zip>N9C 3T6</pcode-zip>
</addr>
<phone type="work">905-555-7258</phone>
</customerinfo>
<customerinfo Cid="1003">
<name>Robert Shoemaker</name> <addr country="Canada"> <street>1596 Baseline</street> <city>Aurora</city> <prov-state>Ontario</prov-state> <pcode-zip>N8X 7F8</pcode-zip>
</addr>
<phone type="work">905-555-7258</phone> <phone type="home">416-555-2937</phone> <phone type="cell">905-555-8743</phone> <phone type="cottage">613-555-3278</phone>
</customerinfo>
"Rzk*+b)D5PD5ek=4gB(eDmP:
CREATE TABLE CUSTPHONE (custname char(30), numbers XML)
; s , 9 C XMLTABLE D T B INSERT o d C XML D 5P D5 nd CUSTPHONE:
Z 5 B i/ XML }] 83
INSERT INTO CUSTPHONE
SELECT X.*
FROM XMLTABLE ('db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo'
COLUMNS
"CUSTNAME" CHAR(30) PATH 'name', "PHONENUM" XML PATH 'document{<allphones>{phone}</allphones>}'
)asX
k"b,XQuery Zc9l/}“document{<allphones>{phone}</allphones>}”GZ XMLTABLE P PHONENUM PD76mo=P8(D#h*D59l/},r*ek
= XML P(ZK>}P* NUMBERS P)PD5XkGq=<CD XML D5#Z K>}P,<customerinfo> D5P Cid=1003DyP <phone> *X5XZ;v|,D
vnDr
{<phone type="work">905-555-7258</phone>,<phone type="home">416-555-2937</phone>, <phone type="cell">905-555-8743</phone>, <phone type="cottage">613-555-3278</phone>}
PP:
KrP>mGa9;1D XML D5,rK;\ek= XML P NUMBERS P#*7 #I&ek phone 5,+rPDyPn9lI;vq=<CDD5#
a{mgBy>(QTCdvxPq=`ETc|Se~wK):
m
15.
a{m
CUSTNAME NUMBER
Kathy Smith <allphones>
<phone type=work>905-555-7258</phone>
</allphones>
Robert Shoemaker <allphones>
<phone type=work>905-555-7258</phone> <phone type=home>416-555-2937</phone> <phone type=cell>905-555-8743</phone> <phone type=cottage>613-555-3278</phone>
</allphones>
>}:9C XMLTABLE T3nD?v5}5X;P
84 pureXML 8O
g{ XML D5|,3v*XD`v5},"Rzk*TK*XD?v5}zI;P, G4IT9C XMLTABLE 4o=K'{#
}g,g{BP=v XML D5f"Z{* CUSTOMER DmP:
<customerinfo Cid="1001">
<name>Kathy Smith</name> <addr country="Canada">
<street>25 EastCreek</street> <city>Markham</city> <prov-state>Ontario</prov-state> <pcode-zip>N9C 3T6</pcode-zip>
</addr>
<phone type="work">905-555-7258</phone>
</customerinfo>
<customerinfo Cid="1003">
<name>Robert Shoemaker</name> <addr country="Canada"> <street>1596 Baseline</street> <city>Aurora</city> <prov-state>Ontario</prov-state>
<pcode-zip>N8X 7F8</pcode-zip> </addr>
<phone type="work">905-555-7258</phone> <phone type="home">416-555-2937</phone> <phone type="cell">905-555-8743</phone> <phone type="cottage">613-555-3278</phone>
</customerinfo>
*4(;vm , d P ?v <phone> 5<f"Z % @ P P,I T 4 g By>9C XMLTABLE:
SELECT X.*
FROM CUSTOMER C, XMLTABLE ('$cust/customerinfo/phone' PASSING C.INFO as "cust"
COLUMNS "CUSTNAME" CHAR(30) PATH '../name', "PHONETYPE" CHAR(30) PATH '@type', "PHONENUM" CHAR(15) PATH '.'
)asX
Ki/T=v XML D5zzTBa{:
m
16.
a{m
CUSTNAME PHONETYPE PHONENUM
Kathy Smith work 905-555-7258
Robert Shoemaker work 905-555-7258
Robert Shoemaker home 416-555-2937
Robert Shoemaker cell 905-555-8743
Robert Shoemaker cottage 613-555-3278
k"b{F*“Robert Shoemaker”D XML D5PD?v <phone> *XGgNZ%@
PP5XD#
TZ`,D5,z2ITi! <phone> *Xw* XML,gBy>:
SELECT X.*
FROM CUSTOMER C, XMLTABLE ('$cust/customerinfo/phone' PASSING C.INFO as "cust"
COLUMNS "CUSTNAME" CHAR(30) PATH '../name', "PHONETYPE" CHAR(30) PATH '@type', "PHONENUM" XML PATH '.'
)asX
Ki/T=v XML D5zzTBa{(QTCdvxPq=`ETc|Se~w K):
m
17.
a{m
CUSTNAME PHONETYPE PHONENUM
Kathy Smith work <phone type=work>416-555-1358</phone>
Robert Shoemaker work <phone type=work>905-555-7258</phone>
Robert Shoemaker home <phone type=work>416-555-2937</phone>
Robert Shoemaker cell <phone type=work>905-555-8743</phone>
Robert Shoemaker cottage <phone type=work>613-555-3278</phone>
>}:9C XMLTABLE &m XML D5P`vwy|,D*X
Z|,`vcNa9rwD XML D5P,;vwPD*XI\km;vwPD*X.
dfZX5#IT9C XPath mo=4&m XML D5PD`X*X#
Z 5 B i/ XML }] 85
TB>}+y] XML D5PDE"4zIPX+h8MR_a(ABsCDm#K XML D5P|,kBsCPwnyZ;C`XDE"#
TBod+4(CZf"K XML D5D MOVE m:
CREATE TABLE MOVE (ID BIGINT NOT NULL PRIMARY KEY, MOVEINFO XML )
TB XML }]|,PXwv+>5PDwn0d;CDE"#XML E"VI=vw# ;vwP|,PXwnDE",}g,nytD?E"nDjGET0TnDhv#
m;vwP|,PXa(YwDE",}g,?Ea(=DB;C"*l
+R8(D
%c"+2xrT0f"x#
TBoda+K XML D5ek MOVE mP:
INSERT into MOVE (ID, MOVEINFO) values ( 1, ' <listing>
<items>
<item dept="acct" tag="12223">
<name>laser printer</name> <area>common</area>
</item>
<item dept="recptn" tag="23665">
<name>monitor, CRT</name> <area>storage</area>
</item>
<item dept="acct" tag="42345">
<name>CPU, desktop</name> <area>office</area>
</item>
<item dept="recptn" tag="33301">
<name>monitor, LCD</name> <area>office</area>
</item>
<item dept="mfg" tag="10002">
<name>cabinet, 3 dwr</name> <area>office</area>
</item>
<item dept="acct" tag="65436">
<name>table, round 1m</name>
<area>storage</area> </item> </items>
86 pureXML 8O
<locations>
<building dept="recptn" >
<wing>main</wing> <floor area="storage">1</floor> <floor area="common">1</floor> <floor area="office">2</floor>
</building>
<building dept="mfg" >
<wing>east</wing> <floor area="storage">1</floor> <floor area="common">2</floor> <floor area="office">2</floor>
</building>
<building dept="acct" >
<wing>west</wing> <floor area="storage">2</floor> <floor area="common">1</floor> <floor area="office">2</floor>
</building>
</locations>
</listing> ')
TB SELECT od+n?E"k;CE"iO=;p,"4(m4P>n?E""?E E"MB;C#
3dDX|G9C`T XPath a $x/../../ 9n?E"k;CE"%d#
SELECT T.*
from MOVE, XMLTABLE( '$doc/listing/items/item' PASSING MOVE.MOVEINFO AS "doc" COLUMNS
ITEM_ID VARCHAR(10) PATH 'let $x := . return $x/@tag' , DESC VARCHAR(20) PATH 'let $x := . return $x/name' , DEPT VARCHAR(15) PATH 'let $x := . return $x/@dept' , WING VARCHAR(10) PATH 'let $x := . return $x/../../locations/
FLOOR VARCHAR(10) PATH 'let $x := . return $x/../../locations/
)as T
building[@dept = $x/@dept]/wing',
building/floor[@area = $x/area
and ../@dept = $x/@dept ]'
Ty>}]KPKod1,+5XTB}]:
ITEM_ID DESC DEPT WING FLOOR
---------- -------------------- --------------- ---------- ---------­12223 printer, laser acct west 1 23665 monitor, CRT recptn main 1 42345 CPU, desktop acct west 2 33301 monitor, LCD recptn main 2 10002 cabinet, 3 dwr mfg east 2 65436 table, round 1m acct west 2
>}:9C XMLTABLE &mVc}]
XML D5PIT|,}]DcNa9,xKcNa9|,D6W6p}Id#IT9C XPath mo=4&mVc}]#
TB>}+4(I;(FczD?~T0?v?~D8i~iIDPm#E"yZ; v XML D5,KD5P|,FczD
TBod+4(CZf"K XML D5D BOMLIST m:
CREATE TABLE BOMLIST (Cid BIGINT NOT NULL PRIMARY KEY, ITEMS XML )
XML D5|,i~MSi~DPm#i~PmkCZhvi~DSi~DcNa9` X#g{;vi~I`vSi~iI,G4?vSi~+P>*Ki~D;vS*
X#
TBoda+K XML D5ek BOMLIST mP:
CREATE TABLE BOMLIST (Cid BIGINT NOT NULL PRIMARY KEY, ITEMS XML ) insert into BOMLIST (Cid, ITEMS) values ( 1, ' <item desc="computersystem" model="L1234123">
<part desc="computer" partnum="5423452345">
<part desc="motherboard" partnum="5423452345">
<part desc="CPU" partnum="6109486697">
<part desc="register" partnum="6109486697"/>
</part>
<part desc="memory" partnum="545454232">
<part desc="transistor" partnum="6109486697"/>
i~T0i~.dDX5#
Z 5 B i/ XML }] 87
</part>
</part>
<part desc="diskdrive" partnum="6345634563456">
<part desc="spindlemotor" partnum="191986123"/> </part> <part desc="powersupply" partnum="098765343">
<part desc="powercord" partnum="191986123"/> </part>
</part>
<part desc="monitor" partnum="898234234">
<part desc="cathoderaytube" partnum="191986123"/>
</part>
<part desc="keyboard" partnum="191986123">
<part desc="keycaps" partnum="191986123"/>
</part>
<part desc="mouse" partnum="98798734">
<part desc="mouseball" partnum="98798734"/>
</part> </item> ')
TB SELECT od/@D5"4(mTP>?~M8?~#
;nX*&\G9C XMLTABLE /}4(m B#Z XPath a $doc//part P9C //
4/@nZcPDyP?~*X#
SELECT
A.ITEMNAME, B.PART, B.PARENT
FROM BOMLIST , XMLTABLE('$doc/item' PASSING BOMLIST.ITEMS AS "doc"
COLUMNS
ITEMNAME VARCHAR(20) PATH './@desc',
ITEM XML PATH '.' )AS A, XMLTABLE('$doc//part' PASSING A.ITEM AS "doc"
COLUMNS
PART VARCHAR(20) PATH './@desc', PARENT VARCHAR(20) PATH '../@desc'
)AS B
88 pureXML 8O
T}]KPTBod1,+T>Bm"P>?~M8?~:
ITEMNAME PART PARENT
-------------------- -------------------- -------------------­computersystem computer computersystem computersystem motherboard computer computersystem CPU motherboard computersystem register CPU computersystem memory motherboard computersystem transistor memory computersystem diskdrive computer computersystem spindlemotor diskdrive computersystem powersupply computer computersystem powercord powersupply computersystem monitor computersystem computersystem cathoderaytube monitor computersystem keyboard computersystem computersystem keycaps keyboard computersystem mouse computersystem computersystem mouseball mouse

XMLTABLE

 XMLTABLE (
row-xquery-expression-constant
PASSING row-xquery-argument
COLUMNS xml-table-regular-column-definition )
xmlnamespaces-declaration ,
BY REF
,
xml-table-ordinality-column-definition
,
(1)
row-xquery-argument:
(2)
xquery-variable-expression
AS identifier
BY REF
xml-table-regular-column-definition:
column-name data-type
BY REF default-clause

PATH column-xquery-expression-constant
xml-table-ordinality-column-definition:
column-name FOR ORDINALITY
":
1 ;\`N8( xml-table-ordinality-column-definition Sd(SQLSTATE 42614)#
2 mo=D}]`M;\G DECFLOAT#
#=* SYSIBM#;\+/}{8(*^({#
XMLTABLE /}5X;va{m,Ca{mGI\9C8(dkTd?w* XQuery d
?T XQuery mo=xPs5Da{#P XQuery mo=Da{
rPPD?vrPn<
m>a{mPD;P#
xmlnamespaces-declaration
8(;vr`v XML {FUdyw,b)yw+I* row-xquery-expression- constant M column-xquery-expression-constant D2,OBDD;?V#g{ XQuery
mo=G XMLTABLE DN},G4bVmo=D2,Q*{FUd/I$H(" D2,Q*{FUd/MK
SdP8(D{FUdywiI#XQuery mo=PD
XQuery rTIT2Gb){FUd#
Z 5 B i/ XML }] 89
g{48( xmlnamespaces-declaration,G4;P$H("D2,Q*{FUd/J CZ XQuery mo=#
row-xquery-expression-constant
8(;v SQL V{.#?,9C\'VD XQuery oTo(I+dbM* XQuery
mo=#C#?V{.+1S*;* UTF-8,x;* ;*}]brZzk3# XQuery mo=9C;iI
RZCrPPT?vrPnzI;P#row-xquery-expression-constant D5;\GU
V{.rUWV{.(SQLSTATE 10505)#
PASSING
8(dk5T0b)5+]A row-xquery-expression-constant y8(D XQuery m o=D==#1!ivB,(}9CP{w*d?{,
D?v(;P{~=+]A XQuery mo=#g{8(D row-xquery-argument P D identifier kP{wCr`%d,G4a+T= row-xquery-argument +]A
XQuery mo=,Sx2GC~=P#
BY REF
8(1!ivB(}}C+]NN XML dkN}#1(}}C+] XML 5 1,XQuery +#tyPtT,|(-<Zcj6MD53r#g{=vN}+]`,D
XML 5,"RZcj6HOMD53rHOf0b=vdkN}.d|,D3
)Zc,G4b
s5+1SS8(Ddkmo=P9CdkZcw(g{P),b
!Ddk XML 54P,"5X;vdv XQuery rP,
+wC/}1yZwCrP
=VHOI\}C`, XML ZcwPDZc#
KSd;0lG XML 5D+]==#G XML 5Z?F*;* XML Zd+ 4(5DB1>#
row-xquery-argument
8(++]A row-xquery-expression-constant y8(D XQuery mo=DN}# N}8(5M+]C5D==#CN}|(Z+a{+]A XQuery
0xPs5D SQL mo=#
v g{zI5D`MG XML,G4|+dI input-xml-value#U XML 5+*
;* XML UrP#
v g{zI5D`M;G XML,G4|XkI?F*;* XML }]`M#U
5+*;* XML UrP#*;sD5+dI input-xml-value#
T row-xquery-expression-constant x
Z input-xml-value D5MI AS Sd8(D{F#
xquery-variable-expression
8(;v SQL mo=,d5Z4PZdI) row-xquery-expression- constant y8(D XQuery mo=9C#Cmo=;\|, NEXT VALUE
mo="PREVIOUS VALUE mo=(SQLSTATE 428F9)r OLAP /} (SQLSTATE 42903)#Cmo=D}]`M;\G
AS identifier
8( xquery-variable-expression yzID5+w* XQuery d?+]A row- xquery-expression-constant#Cd?{+* identifier#XQuery oTPDd?
{0fD0<@*{E($);|(Z identifier P#j6XkGP' D XQuery d?{,"R^Z XML NCName#j6D$H;\,} 128 v VZ#,; PASSING SdPD=v
42711)#
Ps51,+* XQuery d?a);vH
DECFLOAT#
N};\9C`,Dj6(SQLSTATE
mo=.
90 pureXML 8O
Loading...