Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
IBM i
�������
���������SQL
7.1
���
IBM i
�������
���������SQL
7.1
���
��������
����������������������������������������������� � !"��#��������“$%# !�#&”, ��'�# 549
�������(��������)"��� IBM i7.1 ('�#+-����������� 5770-SS1)�����!��������"�36-$�������#��#���#+'��8���8'�"��:�#
;���8):��(����'�� -:�!�������)���#�#!;!������-"� reduced instruction set computer (RISC)����-"�CISC )"���!���
©��
����� International BusinessMachines Corporation1998,2010.
©Copyright International BusinessMachines Corporation1998,2010.
������
��������SQL . . . . . . . . . . . 1
���)!�'���� IBM i7.1 . . . . . . . . . . . 1
)3�� PDF�%#'!���#!� !��!�SQL . . . . . . . . 3
���%#��� DB2 for i StructuredQuery Language . . . . . 3
��:$�" SQL . . . . . . . . . . . . . . 4
>#������-��8���?��@� SQL��&�?��-(?#!�� . . 5
SQL��'����#!���8�A����8!��. . . . . . . 6
���"��8$%#���8 SQL . . . . . . . . . . . 6
?A������A���#! SQL . . . . . . . . . . . 8
?A�����:���(�+ SQL . . . . . . . . . . . 8
SQL�H��-H��� . . . . . . . . . . . . . 8
������(Schemas) . . . . . . . . . . 8
-�!��������:!��-�!���� . . . . . . . . . 9
�$�#�H�� . . . . . . . . . . . . . 9
�#!#8, �;:, ��$������ . . . . . . . . . 9
Alias . . . . . . . . . . . . . . 10
�����8 . . . . . . . . . . . . . . 10
"!!��� (Index) . . . . . . . . . . . 10
��%#��" . . . . . . . . . . . . . 11
�!��-��!� . . . . . . . . . . . . . 11
�?!K�-"�!����-�H�): . . . . . . . . . . 11
�%#"�� (Sequences) . . . . . . . . . . 12
��:� !������ . . . . . . . . . . . 12
3N8�������������%#'�" (User-defined functions) 12
���"��������%#'�" . . . . . . . . . . . 12
�H��-H��� XSR . . . . . . . . . . . 13
SQL�?H�-� . . . . . . . . . . . . 13
�H��-H�����H??��-$���� !��!� . . . . . . . 13
)3����(�����8���� . . . . . . . . . . 15
-�#��?��!#+�#!)3����(���+��+ (Output source file
member) . . . . . . . . . . . . . 15
� !��!� . . . . . . . . . . . . . 15
SQL�?H�-� . . . . . . . . . . . . 16
��"�� . . . . . . . . . . . . . . 16
-K�!�:��� !��!� . . . . . . . . . . . 16
Data definition language . . . . . . . . . . . 17
�#!�!#8������(schema) . . . . . . . . 17
�#!�!#8�#!#8. . . . . . . . . . . . . 17
�#!-?���������%#��" . . . . . . . . . 18
Referential integrity ���#!#8 . . . . . . . 18
�#!-?���������%#��"���#!�#8��8 . . . . 19
��:�+�#8: �#!-?�����%#��"����#8��8 . . . . 20
��:�+�#8: �#!����%#��" . . . . . . . . . 21
�#!!8���#!�!:��� . . . . . . . . . 21
�#!�!#8�#!#8�"+�� LIKE . . . . . . . . . 22
�#!�!#8�#!#8�"+�� AS. . . . . . . . . . 22
�#!�!#8��- ���+��#!#8materialized query . . . . 23
�#! !�#&�#!#8���:$!#:��������� . . . . . 24
�#!�!#8$������ row change timestamp . . . . . 25
�#!�!#8��- ���+� identity column . . . . . . 25
�#!�� ROWID . . . . . . . . . . . . 27
�#!�!#8���#!���%#"��. . . . . . . . . . 27
�#!- !�+�-���$������ identity ���%#"�� . . . . 29
�#!��+#��?!K�-"�!�36�"�. . . . . . . . . . 30
��+#���836�"��%#'!���?!K�-"�!�36�"� . . . . . 30
�#!!���?!K�-"�!�36�"� . . . . . . . . . 31
-�A���?!K�-"�!�36�"�;��-!�+���8#� . . . . . . 31
!#+�#!?#!#��-��!��%#'!���#! !�:����?!K�
-"�!�36�"� . . . . . . . . . . . . . 32
!#+�#!$�#?#!#��-��!���8�?!K�-"�!�36�"�
(FPPVL) . . . . . . . . . . . . 33
descriptor ��8$�#?#!#��-��!��%#'!���?!K
-"�!�36�"� . . . . . . . . . . . . 34
��+#���836�"� (3N8������$" 8) . . . . . . 35
�#!-�#!'��36�"� (3N8������$" 0) . . . . . 37
�#!;�"!'��36�"� (3N8������$" 4) . . . . . 37
��:�+�#8� !��!��?!K�-"�!�36�"� . . . . . 38
$%#���%#���:) �%#'!���#!-��+��?!K�-"�!�36�"� . . 40
��$:!?�#!�#-���+:���"!!��� . . . . . . 40
��$:!?�#!�#-���+:���-@!" . . . . . . 41
�#!�!#8-�-���@��#+�"+��$%#���8 LABELON . . . 41
�#!�@��#+ SQL�H��-H����"+�� COMMENTON . . 42
�#!- ���+� definition�#!#8 . . . . . . . . . 43
�#!-?���$������ . . . . . . . . . . . 43
�#!- ���+�$������ . . . . . . . . . . 43
�#!� �8���"�����������]#� . . . . . . . 44
�#!��$������ . . . . . . . . . . . . 45
�%#"���#!"%#-����#!��8$%#���8 ALTERTABLE . . 46
�#!�!#8���#!��8#��A��ALIAS . . . . . . . 46
�#!�!#8���#!�������8 . . . . . . . . . 47
WITHCHECKOPTION�������8 . . . . . 49
WITHCASCADEDCHECKOPTION . . . 49
WITHLOCALCHECKOPTION . . . . . 50
��:�+�#8: �H�?����#!�!:���������-!�+8 . . 51
�#!�!#8"!!��� . . . . . . . . . . . . 52
©������@�_��8 IBMCorp. 1998, 2010 iii
||
||
||
||
||
||
|
||
|
||
|
||
||
||
||
||
||
||
||
�#!�!#8���#!����:� !������ . . . . . . . 53
�#!- ���+��H��-H���������+�� . . . . . . . . . 53
�$�#�H�����#!������>#������ . . . . . . 54
�#!!��������$�#�H��-���+:����#!#8 . . . . . 54
�#!!��������$�#�H��-���+:���$������ . . . . 54
�#!���H��-H���>#������ . . . . . . . . . 55
�#`#�%#'!���#!"%#-����#!����� . . . . . . . . 55
�#!"j8������"+��$%#���8 SELECT . . . . . . . 56
��$:#�SELECT!"���� . . . . . . . . 56
�#!!��-8A���)��#!$�'#�"+��WHEREclause . . 57
��?����WHEREclause . . . . . . . 58
��:"%#-����#!- !�+�-��+� . . . . . . . 60
NOTkeyword . . . . . . . . . . . 60
GROUPBYclause . . . . . . . . . . 60
HAVINGclause . . . . . . . . . . . 63
ORDERBYclause . . . . . . . . . . 64
$%#���8 SELECT���Static . . . . . . . . 66
�#!�"�#!$�# null . . . . . . . . . . . 67
-!��-��!�?�-&`��$%#���8 SQL . . . . . . . 68
�#!� �8���"����� . . . . . . . . . . 70
!-�������:�����, -:�#, �� timestamp . . . . 70
�#!!��$�#:�������-:�# N���� . . . . . . 70
�#!$%#�:�:�����/-:�# . . . . . . . . 71
��?���#!- ���+��;:. . . . . . . . . . 71
�#!�"�#!����;:K�%# . . . . . . . . . . 71
�#!��+#�-8A���)��#!$�'#���K��K�� . . . . . 72
��?�#!�#?�-&`�%#'!�� LIKE . . . . . . 74
'�#+-8A���)��#!$�'#�#+��WHEREclause 74
�#!��$�#�%#'�"OLAP . . . . . . . . . 76
�#!!:������#��#!#8�#��:�#'�j�8�#!#8 . . . 79
Inner join . . . . . . . . . . . . 79
Left outer join . . . . . . . . . . . 81
Right outer join . . . . . . . . . . 82
Exception join . . . . . . . . . . . 82
Cross join . . . . . . . . . . . . 83
Full outer join . . . . . . . . . . . 84
!-���#!!:�'�#+ !-����'�j�8$%#���8 . . 85
�#!����?���#!#8 . . . . . . . . . . 86
�#!��-$�+:!����-!�+�K�%# . . . . . . . . . 88
�#!��$�+�-:�!�"UNION -?A��!:��#!-�A��+��+ . . . 96
�#!!��$�+�-:�!�"UNIONALL . . . . . . 99
�#!��$�+�-:�!�" EXCEPT . . . . . . . . 101
�#!��$�+�-:�!�" INTERSECT . . . . . . . 104
����"?�#"���#!"j8����� . . . . . . . 106
�#!��!��;:�"+��$%#���8 INSERT . . . . . . 107
�#!��!��;:�"+�� VALUES clause . . . . 109
�#!��!��;:�8���#!#8�"+��$%#���8 select . . . 110
�#!��!��;:�"+��$%#���8 INSERT���;����H�� 110
�#!��!�������8���#!#8":+��%#��"���#!�#8
��8 . . . . . . . . . . . . . . . 111
�#!��!�$�#-�#��$������ identity . . . . . 112
�#!-�A��$�#�����!� . . . . . . . . . . 113
�#!- ���+���������#!#8�"+��$%#���8 UPDATE . . 113
�#!��?-"��#!#8�"+�� scalar-subselect . . . 115
�#!��?-"��#!#8������;:#��#!#8�A�� . . . . 115
�#!��?-"��#!#8":+��%#��"���#!�#8��8 . . . 116
��:�+�#8: �~UPDATE . . . . . . . . 117
�#!��?-"� identity column . . . . . . . 117
�#!��?-"�������#����"j8�##��#!#8 . . . . 118
�#!���;:���#��#!#8�"+��$%#���8 DELETE. . . 120
�#!���;:���#��#!#8":+��%#��"���#!�#8��8 120
��:�+�#8: �~DELETE . . . . . . . . 122
�#!��#������ . . . . . . . . . . . . 124
�#!��-$�+:!�+��+ . . . . . . . . . . . 125
-$�+:!�+��+��$%#���8 SELECT . . . . . . . 126
-$�+:!�+��+��-8A���)��#!$�'# . . . . . 127
'�#+-'���#!����-$�+:!�+��+ . . . . . . 127
�#!!:�-$�+:!��+��+):��WHERE'!A�HAVING
clause . . . . . . . . . . . . . 128
-$�+:!�+��+������?��@���� . . . . . . . . . 130
�A�����#!�#8��8������?��@���� . . . . . . 130
��:�+�#8: -$�+:!�+��+������?��@������WHERE
clause . . . . . . . . . . . . . 130
��:�+�#8: -$�+:!�+��+������?��@������HAVING
clause . . . . . . . . . . . . . 132
��:�+�#8: -$�+:!�+��+������?��@������ select-list 132
��:�+�#8: -$�+:!�+��+������?��@������$%#���8
UPDATE. . . . . . . . . . . . 133
��:�+�#8: -$�+:!�+��+������?��@������$%#���8
DELETE . . . . . . . . . . . . 134
�%#"���#!-!�+8 �� normalization ��SQL . . . . . 134
�%#"���#!�"-!�+8��������ORDERBY���#!-�A��
�;: . . . . . . . . . . . . . . . 135
�%#"���#!�"-!�+8��ORDERBY . . . . . 136
�%#"���#!�"-!�+8���#!-�A���;: . . . . . 138
�%#"���#!�"-!�+8�������8 . . . . . . . . 139
�%#"���#!�"-!�+8��$%#���8 CREATE INDEX . . . 139
�%#"���#!�"-!�+8����%#��" . . . . . . . . 140
�%#"���#!�"-!�+8 ICU . . . . . . . . . . 140
Normalization . . . . . . . . . . . . 141
�#! � �8����� . . . . . . . . . . . . 142
�#!!��`#$:#� ��"��+�%#'!�� SQL�H��-H��� . . . 142
!'����"8���@��#!��8#� . . . . . . . . 143
�����8 . . . . . . . . . . . . . 143
iv IBM i: >#������ �#!� !��!�SQL
||
||
||
�#!�!:��� . . . . . . . . . . . 143
Data integrity . . . . . . . . . . . . 144
��#:?!����� (Concurrency) . . . . . . 144
�#!�%#-�!���� . . . . . . . . . . . 146
Commitment control . . . . . . . . . 147
Savepoints . . . . . . . . . . . . 151
�#!"%#-����#!���Atomic . . . . . . . 153
��%#��" . . . . . . . . . . . . . 155
�#!-?��� ���#!����%#��"���#!�!:��� 155
3N8������#!����j���-!�+�$A� . . . . . . . 156
�#!�#��#�$:#�-��+'#+ . . . . . . . . 157
Index recovery . . . . . . . . . . . 157
$:#�����!����8�$�#�H�� . . . . . . . 158
User auxiliary storage pool . . . . . . . . 159
Independent auxiliary storage pool . . . . . 159
!���� . . . . . . . . . . . . . . . . 160
���!��?!K�-"�!� . . . . . . . . . . . . 160
�#!�%#'�"�?!K�-"�!��#+��� . . . . . . 161
�#!�%#'�"SQL �?!K�-"�!� . . . . . . . 162
�#!-!�+��?!K�-"�!����-�H�): . . . . . . . 167
�#!��$%#���8 CALL �"+����� definition ��8�?!K�
-"�!��+�� . . . . . . . . . . . . 168
�#!��$%#���8 CALL���N8�"+)���� definition
��8�?!K�-"�!��+�� . . . . . . . . . 169
�#!��$%#���8 CALL���N8":+ SQLDA . . . . 170
�#!��$%#���8 CALL���dynamic �"+���)����
CREATEPROCEDURE�+�� . . . . . . 171
��:�+�#8: $%#���8 CALL . . . . . . . . 171
�#!��8$A�-KH���8����?@�#��?!K�-"�!����-�H�): 179
��:�+�#8 1: �#!-!�+��?!K�-"�!����-�H�): Kj�8��8
������"����?@�'�j�8��" . . . . . . . . 180
��:�+�#8 2: �#!-!�+��?!K�-"�!����-�H�):Kj�8��8
����-KH�����?@�'�j�8��"#� �?!K�-"�!����K���+�� 181
�#!-��+�� !��!�'!A� SQL �?!K�-"�!�-?A��!����"
����?@� #� stored procedure . . . . . . . 187
?#!#��-��!������#�'����#!�%#'!���%#'!���?!K�-"�!�
���-�H�):��3N8�������������%#'�"-�8 . . . . 194
��:� !��:��8������?!K�-"�!����-�H�): . . . . . 200
�#!+�������;#��������!��) +�8� !��!��#!
-!�+� . . . . . . . . . . . . . . 202
�#!��8?#!#��-��!�#�DB2 ) +�8�?!K�-"�!��#+
��� . . . . . . . . . . . . . . 203
!� ���?#!#��-��!� SQL . . . . . . . 203
!� ���?#!#��-��!� GENERAL . . . . . 204
!� ���?#!#��-��!� GENERALWITHNULLS 205
!� ���?#!#��-��!� DB2GENERAL . . . . 205
!� ���?#!#��-��!� Java . . . . . . . 206
�#!��3N8�������������%#'�"-�8. . . . . . . 206
��:$�"-���+:���UDF . . . . . . . . . 207
�#!-��+�UDF - �3N8����� SQL . . . . . . 209
��:�+�#8: SQL scalarUDF . . . . . . . 209
��:�+�#8: �#!#8 SQLUDF . . . . . . . 209
�#!-��+�UDF �'- �3N8������#+��� . . . . 210
�#!�8�-��+�UDF. . . . . . . . . 210
�#!��8��#��#��:-����#�DB2 ) +�83N8�����
�#+��� . . . . . . . . . . . . 214
��$:!?�#!�#3N8��������Table . . . . 220
�#! !�:�������"?�#"��8UDFs . . . 221
��$:!?�#!�#Threads . . . . . . . 222
�#! !�:��������#� . . . . . . . 222
��$:!?�#!�#-!A��8-3�K� (Fenced)'!A�
���-3�K� (unfenced) . . . . . . . . 223
��$:!?�#!�#���#!����j����#!��$A� . . 223
��:�+�#8: �$"UDF . . . . . . . . . . 224
��:�+�#8: Square ��8UDF'�#+-�� . . . . 224
��:�+�#8: ��:��� . . . . . . . . . . 225
��:�+�#8:3N8������#!#8�#�#& . . . . . . 226
�#!�� UDF ��$%#���8 SQL . . . . . . . . 234
�#!����:�%#-$!A��8'�#+?#!#��-��!� '!A�$�#
NULL ���#��:-����3N8����� . . . . . . 234
�#!���#!�#8��83N8������#�-���� . . . . 234
�#!���#!�#8��83N8��������)��$!��#�-���� 235
���!� ��8�#!�#8��83N8����� . . . . . . 236
�!��-��!� . . . . . . . . . . . . . . 238
SQL�!��-��!� . . . . . . . . . . . 239
�!��-��!� BEFORESQL . . . . . . . 239
�!��-��!� AFTERSQL . . . . . . . . 241
�!��-��!� INSTEADOFSQL . . . . . . 242
Handlers ��SQL�!��-��!� . . . . . . 244
�#!#8�#!;�#+���SQL�!��-��!� . . . . . 245
�!��-��!����#+��� . . . . . . . . . 246
��:����������-!+��� SQL �?!K�-"�!� . . . . . 246
�#!"����!���� SQL . . . . . . . . . . . 248
�#! !�� !�8 !���@��#?��8�?!K�-"�!���3N8����� 249
�#! !�� !�8 !���@��#?�#!�%#8#���8�?!K�-"�!�
��3N8����� . . . . . . . . . . . . 249
�#!������!�����'��-?A��-?��� !���@��#?���#!
�%#8#�. . . . . . . . . . . . . . 252
�#! !�:������"�����?�-&` . . . . . . . . 253
�H��-H�����#"�']� . . . . . . . . . . 253
���"������H��-H�����#"�']� . . . . . . 253
Large object locator . . . . . . . . . . 253
��:�+�#8: �#!�� locator -?A���%#8#����$�# CLOB 254
��:�+�#8: LOBLOC��C . . . . . . . 255
�#!��] v
|
||
|
||
||
||
||
||
||
||
��:�+�#8: LOBLOC��COBOL . . . . . 256
��:� !��:��8��� ��LOB locator . . . . . . 259
��:� !����#8��8;j8)3�� LOB . . . . . . . 259
��:�+�#8: �#!"j8�����CLOB ) +�8)3�� . . . . 260
��:�+�#8: LOBFILE ��C . . . . . . . 260
��:�+�#8: LOBFILE ��COBOL . . . . . 261
��:�+�#8: �#!��!�������8��$������ CLOB . . 262
�#!��"8�$!8!�#8��8$������ LOB . . . . . 263
�#!��"8�$!8!�#8 Journal entry ��8$������ LOB 263
User-defined distinct type . . . . . . . . . 264
�#!��+#�UDT . . . . . . . . . . . 265
��:�+�#8: -8���!#. . . . . . . . . . 265
��:�+�#8: !:���+�� . . . . . . . . . 265
�#!��+#��#!#8":+UDT . . . . . . . . 266
��:�+�#8: �#!�#+ . . . . . . . . . 266
��:�+�#8: ���3�!�����$!8#� . . . . . . 266
�#!�"�#!UDT . . . . . . . . . . . 267
��:�+�#8: �#!�� UDT . . . . . . . . . 267
��:�+�#8: �#!- !�+�-��+�!':�#8UDTs��$�#
$8��� . . . . . . . . . . . . . 267
��:�+�#8: �#!� �8!':�#8UDT . . . . . 267
��:�+�#8: �#!- !�+�-��+������ UDT!:��+��":+ 269
��:�+�#8:UDF��(�������� UDT!:��+��":+ 269
��:�+�#8: �#!�%#'�"$�#����� UDT!:��+��":+ 270
��:�+�#8: �#!�%#'�"$�#��SQL���)"�#��� 270
��:�+�#8: �#!�%#'�"$�#����� UDT�����#8���!:��+��
":+ . . . . . . . . . . . . . 271
��:�+�#8: �#!�� UDT ��$%#���8 UNION . . . 272
��:�+�#8: �#!�� UDT,UDF, ��LOB . . . . . 272
��:�+�#8: �#!��+#�UDT��UDF . . . . . 272
��:�+�#8: �#!��3N8����� LOB -?A�����$�#-�#) ��>#�
����� . . . . . . . . . . . . . . 274
��:�+�#8: �#!�� UDF -?A��-$�+:!� instance ��8UDT 274
��:�+�#8: �#!�� LOB locator -?A���"�#!��� instance
��8UDT . . . . . . . . . . . . . 274
�#!�� DataLink . . . . . . . . . . . . 275
!"����8�#!$:�$����8����DataLinks . . . . 276
NOLINKCONTROL . . . . . . . . 276
FILELINKCONTROL?!��":+���@��%#'!��
FS . . . . . . . . . . . . . . 276
FILELINKCONTROL?!��":+���@��%#'!��
DB . . . . . . . . . . . . . 276
�#!�%#8#����DataLinks . . . . . . . . 277
$%#���8 SQL��3N8����� SQL/XML . . . . . . . 279
�#?!:���8XML���?����-�#��?�� . . . . . 281
�#!- !�+�-��+���-"�XML����-"�-��8���?��@� 282
��-!�+���:+����%#'!��XML. . . . . . . . 283
����'�"��� 1: �#!�!#8�#!#8����#�#!;-�H������
XML . . . . . . . . . . . . . . 284
����'�"��� 2: �#!��!�-���#!XML�8��
$��������������"XML . . . . . . . . . 284
����'�"��� 3: �#!��?-"�-���#!XML���-�H��+��
��$������ XML . . . . . . . . . . . 285
����'�"��� 4: �#!�!:���$:#�;����8��8-��
�#!XML �"+- !�+�-��+����XML schema . . . 286
����'�"��� 5: �#!� �8��#?":+�)������XSLT 288
�#!��!������XML . . . . . . . . . . 291
�#!-?���$������ XML�8���#!#8������+�� . . . . 292
�#!��!��8��$������ XML . . . . . . . 292
�#!:�-$!#'�$%# XML . . . . . . . . . 293
3N8������#!-�+�?!� SQL/XML�%#'!���#!�!#8$�#
XML . . . . . . . . . . . . . . . 295
��:�+�#8: �!#8-���#!XML":+$�#����##��#!#8
-"��+: . . . . . . . . . . . . . . 296
��:�+�#8: �!#8-���#!XML":+$�##��#!#8
%#�:��#� . . . . . . . . . . . . 297
��:�+�#8: �!#8-���#!XML":+$�#����##��;:�#
!#8���������-���� null. . . . . . . . . . 298
��:�+�#8: �#!� �8��#?":+�)������XSLT . . 299
��:�+�#8: �#!�� XSLT - �-�H����#!�"!� ��� 301
��:�+�#8: �#!�� XSLT�%#'!���#!���- ���+������ 303
��:�+�#8: �#!�� XSLT -?A���� namespace ��� 304
��$:!?�#!�#����%#$�]�%#'!���#!� �8��#?-��
�#!XML. . . . . . . . . . . . . 308
�#!�"�#!�������!?�-&`��3N8������#!-�+�?!�
SQL/XML . . . . . . . . . . . . 308
�#!�"�%#"��XML . . . . . . . . . . 309
$:#������#8��-���#!XML'��8#�����"-�H�
��"j8�������� . . . . . . . . . . 311
���"������%#'!���#!�"-�H�-���#!XML�8�A��
;#:! . . . . . . . . . . . . . . 312
�#!��?-"������XML . . . . . . . . . . 312
�#!�������XML#��#!#8 . . . . . . . 313
���-�H�XML schema . . . . . . . . . . . 313
��:����������#`#� !��!���8��H??��-$��� . . . 314
$������ XML��!�����?-"�����H??��-$���
CLI . . . . . . . . . . . . . . 315
�#!"j8�����XML����H??��-$���CLI . . . . 316
�#! !�#&��:� !���� XML����H??��-$���
SQL���N8 . . . . . . . . . . . . 317
��:�+�#8: �#!�#8;j8��:� !���� XML����H?
?��-$��� SQL���N8 . . . . . . . . 318
$%#���%#������������%#'!���#!?��#��H??��
-$��� SQL���N8��:":+XML . . . . . . 319
vi IBM i: >#������ �#!� !��!�SQL
||
||
||
||
|
||
|
||
|
||
|
||
||
||
||
||
||
|
||
|
||
|
||
|
||
||
||
||
||
|
||
|
||
||
|
||
|
||
||
||
||
||
|
||
||
|
||
|
||
|
||
�#!!��$�# XML��SQLDA . . . . . . 319
Java . . . . . . . . . . . . . . 320
�����XML����H??��-$��� JDBC . . . . 320
�����XML����H??��-$��� SQLJ . . . . 326
!���� . . . . . . . . . . . . . . 329
��:���������XML��SQL �?!K�-"�!� . . . 329
��:������������"�����XML��!�����#+��� 330
�#!-�#!'�������XML. . . . . . . . . . 335
��$:!?�#!�#���#!-�#!'��-�A��-�H�'!A���8��#�
�����XML . . . . . . . . . . . . 335
��$:!?�#!�#���#!-�#!'���%#'!�����?����
���XML��>#������ . . . . . . . . 335
��$:!?�#!�#���#!-�#!'��-?A��"j8�����
XML���#�>#������ . . . . . . . 336
��$:!?�#!�#���#!-�#!'���%#'!���#!��8��
���XML��?#!#��-��!�!���� . . . . . . 336
��$:!?�#!�#���#!-�#!'���%#'!�������
XML����H??��-$��� JDBC��SQLJ . . . 336
���!����8�#!-�#!'��XML���#!� �8��
����'- ��%#"�� . . . . . . . . . . . 337
�;#��#!���#!-�#!'���%#'!�����?����8�����
XML���-�#!'����:��>#������ . . . . . 337
�;#��#!���#!-�#!'���%#'!�����?����8�����
XML���-�#!'���#+�����:��>#������ . . 339
�;#��#!��%#��8�#!-�#!'���%#'!���#!"j8��
���XML":+ serialization ��� implicit . . . 341
�;#��#!��%#��8�#!-�#!'���%#'!���#!"j8��
���XML":+XMLSERIALIZE���explicit . 344
�#!��H?�#!-�#!'���A�����CCSID���- ����%#'!��
�����XML���-�H�):. . . . . . . . . . 346
�#!��H?CCSID����A���#!-�#!'���%#'!�������
XML -�#��?������"�%#"����: . . . . . . . 346
�#!���8�+�XMLschema����%#'�#+-'�� !���):
��: . . . . . . . . . . . . . . . 347
�#!���8�+�-���#!XML":+XML schema����%#
'�#+-'�� !���):��: . . . . . . . . 347
�#!�8�-��+����#!- 6"��8#�XML schema
�%#'!���#!���8�+� . . . . . . . . . . 347
K�!���%#'!���#!���8�+�XMLschema����%#'�#+
-'�� !���):��: . . . . . . . . . . 348
'�#+-'�� !����%#'!���#!���8�+�XML . . 348
���%#'�"$�������������-����8'�#+-'��
!����%#'!���#!���8�+�XML . . . . 349
'�#+-'�� !������- ���H��!���:�� . . . . 349
'�#+-'�� !������- �����-�������Kj�8)"�"
�$!8�!#8��: . . . . . . . . . . 349
'�#+-'�� !������������ . . . . . 350
'�#+-'���#!���8�+�XML-���!� . . . 350
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:defaultSQLSchema . . . . . . . 352
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:rowSet . . . . . . . . . . . 354
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:table . . . . . . . . . . . . 358
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:column . . . . . . . . . . . 361
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:locationPath . . . . . . . . . 363
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:expression . . . . . . . . . . 366
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:condition . . . . . . . . . . 370
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:contentHandling . . . . . . . . 374
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:normalization . . . . . . . . . 378
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:truncate . . . . . . . . . . . 381
'�#+-'�� !����%#'!���#!���8�+� db2-
xdb:rowSetMapping . . . . . . . . 383
$�+�-:�!�"�%#'!���#!���8�+�XMLschema����%#
'�#+-'�� !���):��: . . . . . . . 386
�#!$A���#?��:���8CDATA���#!���8�+�
XML����%#'�#+-'�� !���):��: . . . . . 387
$�#NULL����!�8:�#8���#!���8�+�XML����%#
'�#+-'�� !���):��: . . . . . . . . 387
!#+�#!�!:����%#'!���#!���8�+�XMLschema
����%#'�#+-'�� !���): . . . . . . . . 389
��:�+�#8�#!��H?�%#'!���#!���8�+�XMLschema
����%#'�#+-'�� !���):��: . . . . . . . . 389
'�#+-'�� !�����8 complex type���)"!���# 389
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
�#!��H?���$������ XML . . . . . . . . 396
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
$�#�����H?����#!#8-"��+: �%#�'-��"�;:-"��+: . . 398
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
$�#�����H?����#!#8-"��+: �%#�'-��"�;:%#�:��#� 399
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
$�#�����H?����#!#8 %#�:��#�. . . . . . . 401
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
�#!�"�����$�#%#�:��#������H?����#!#8-"��+: . . 403
��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:
$�#%#�:��#�#�$��-�H�K���������#8��� ;����H?
����#!#8-"��+: . . . . . . . . . . . 405
�#!��] vii
||
||
||
||
||
||
||
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
||
|
||
||
|
||
||
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
||
|
||
|
||
|
||
|
||
|
||
|
|
||
$:#�-�#���)"��8XML schema������"��8 SQL
�%#'!���#!���8�+� schema����%#'�#+-'�� !���
):��:. . . . . . . . . . . . . . 407
��%#��"������8$���%#'!����#!���8�+�XML
schema����%#'�#+-'�� !���): . . . . . . 415
Schema�%#'!��'�#+-'�� !����%#'!���#!���8
�+�XML . . . . . . . . . . . . 416
�#!�� SQL ����#?�:"�����������#8��� . . . . . 417
�#!��-$�!�-K�!� . . . . . . . . . . . . 418
!-��-$�!�-K�!� . . . . . . . . . . 418
��:�+�#8: �#!��-$�!�-K�!� . . . . . . . . 419
������� 1: �#!�%#'�"-$�!�-K�!� . . . . . . 422
������� 2: �#!- 6"-$�!�-K�!� . . . . . . . 423
������� 3: �#!!�����8�����8�%#-�A��;j8�"������"��8
����� . . . . . . . . . . . . . 423
������� 4: �#!"j8$�#�;:�"+��-$�!�-K�!� . . . 424
������� 5a: �#!��?-"��;: N���� . . . . . 425
������� 5b: �#!���;: N���� . . . . . . 425
������� 6: �#! 6"-$�!�-K�!� . . . . . . . 426
�#!��$%#���8 FETCH���'�#+�;: . . . . . 426
�#!"j8�������� (FETCH)���'�#+�;:�"+
���-!+��$!8�!#8���� . . . . . . . 427
�#!"j8�������� (FETCH)���'�#+�;:�"+
��?A�����'��:+-�H���8�;: . . . . . . . 429
+����8#���-$�!�-K�!����- 6"�+�� . . . . . . 431
��H??��-$���Dynamic SQL . . . . . . . . 432
�#!���������#!!����H??��-$��� SQL���)"
�#��� . . . . . . . . . . . . . . 433
CCSID��8$%#���8 SQL���dynamic . . . . . 433
�#! !�:���$%#���8 non-SELECT . . . . . 433
�#!��$%#���8 PREPARE��EXECUTE . . . 434
�#! !�:���$%#���8 SELECT���#!��
descriptor . . . . . . . . . . . . 435
$%#���8 SELECT���!#+�#!$8��� . . . . . 435
$%#���8 SELECT���varying-list . . . . . 436
SQLdescriptor area . . . . . . . . . 437
!� �����8SQLDA . . . . . . . . 437
��:�+�#8: $%#���8 SELECT -?A���"�!!'��:+-�H�
�%#'!�� SQLDA . . . . . . . . . . 440
��:�+�#8: $%#���8 SELECT����� SQLdescriptor
���;���"�!!��: . . . . . . . . . . 445
��:�%#-$!A��8'�#+?#!#��-��!� . . . . . . 448
�#!�� SQL�������� . . . . . . . . . 450
�#!-!�������8#�SQL�������� . . . . . 451
�#!��3N8��� entry $%#���8. . . . . . . . . 452
�#!���$%#���8 (Prompting). . . . . . . . 453
�#!�!:���):+#�!��. . . . . . . . 454
�'�"�#! !�:���$%#���8 . . . . . . . 454
-$�+:!�+��+ . . . . . . . . . . . 454
�#!-!�+��%#8#�CREATETABLE . . . . 455
�#! �������DBCS . . . . . . . . 455
�#!��3N8�����!#+�#!���-�A�� . . . . . . . 456
��:�+�#8: �#!��3N8�����!#+�#!���-�A�� . . . 456
!#+�-��+"-K�!�:��-K���� . . . . . . . . 458
SQL��������������+�� . . . . . . . . . 460
�#!��-K���� SQL������+�� . . . . . . . . 460
�#!��$A�-K���� SQL . . . . . . . . . 460
�#!-�#��8#�>#���������!����":+ SQL�����
��� . . . . . . . . . . . . . . 461
�#!����: !�:���$%#���8 SQL . . . . . . . 463
�#!!��$%#���8'��8-��"����"?�#" . . . . . . 465
commitment control ����: !�:���$%#���8 SQL 465
�#!��"8!#+�#!��(����%#'!����: !�:���$%#
���8 SQL . . . . . . . . . . . . . 465
3N8�������8>#������-��8���?��@�����!#+��SQL 468
DB2 for i �#!��������>#������-��8���?��@����
�!#+ . . . . . . . . . . . . . . 469
DB2 for i � !��!���:�+�#8>#������-��8���?��@����
�!#+ . . . . . . . . . . . . . . 470
�#!���������#!��8#��?H�-���8 SQL . . . . 471
$%#���8 SQL���;����8���?H$-� SQL . . . . . 472
��$:!?�#!�#���#!�!#8 SQL�?H�-� . . . 472
�#!�'���@� CRTSQLPKG . . . . . . . 472
�#!�!#8�?H�-���>#���������)����� DB2 for i 472
?#!#��-��!� Target release (TGTRLS) . . . 473
SQL statement size . . . . . . . . . 473
$%#���8���)��%#- ���8���?H�-� . . . . . 473
���"�H��-H����?H�-� . . . . . . . . 474
� !��!� ILE��� !��!�-K�!�:�� . . . . 474
�#!-�A�������"+�!#8�?H�-� . . . . . . 474
'��:+��88#� . . . . . . . . . . 474
�#!�!#8�?H�-������$�� . . . . . . 475
-�-�� (Lebel) . . . . . . . . . . 475
��-$H������"$��8��� . . . . . . . . 475
SQL���#!-!�+�K�%# . . . . . . . . 475
��$:!?�#!�#-���+:���CCSID�%#'!�� SQL . . . 476
�#!�"�#!�#!-�A�������� activation group . . . . 476
K�!���$"�%#'!�� PGM1 . . . . . . . . 477
K�!���$"�%#'!�� PGM2 . . . . . . . . 477
K�!���$"�%#'!�� PGM3 . . . . . . . . 478
�#!-�A������'�#+$!��8) +�8>#������-��8���?��@�
-"�+:��� . . . . . . . . . . . . . 480
�#!�"�#!-�A�������"+��+�%#'!�� activation group
"�3���� . . . . . . . . . . . . . 481
viii IBM i: >#������ �#!� !��!�SQL
|
|
||
|
||
|
||
�#!�"�#!�#!-�A�������"+��+�%#'!�� activation
group���)�����"�3���� . . . . . . . . . 482
�#!������������!#+ . . . . . . . . . 482
�#!%#��� !-����8�#!-�A������ . . . . . 483
��%#��"��8��:$:�$���#!-�A����������:$:�$��
Commitment. . . . . . . . . . . . 486
�#!%#����;#���8�#!-�A������ . . . . . 486
��$:!?�#!�#���#!-�A������'��:+�#!�%#8#�
����!#+ . . . . . . . . . . . . 488
�#!������"�#!-�A������ . . . . . . . . . 489
'��:+�#!�%#8#�����!#+ . . . . . . . . 489
�#!�"�#!�#!-�A������'��:+�#!�%#8#����
�!#+ . . . . . . . . . . . . . 490
�#!�!:����;#���8�#!-�A������. . . . . 492
-$�!�-K�!� ��$%#���8���-�!�+�): . . . . . . 493
��$:!?�#!�#�%#'!���?!K�-"�!���8DRDA�������j�
): . . . . . . . . . . . . . . . . 493
WebSphereMQ?!�����DB2 . . . . . . . . 494
��$:#�WebSphereMQ . . . . . . . . . 494
�#!�"�#!��$:#�WebSphereMQ . . . . . 494
-K�!�:��DB2MQ . . . . . . . . . 495
��+�#+DB2MQ . . . . . . . . . 496
3N8�����DB2MQ . . . . . . . . . . . 497
�#!?j�8?#DB2MQ . . . . . . . . . . 498
�#!#8DB2MQ . . . . . . . . . . . . 499
�#!� �8DB2MQCCSID . . . . . . . . 505
WebsphereMQ transactions . . . . . . . . 506
�#!��8��$:#�?A��>#�":+WebSphereMQ . . . . 508
�#!��8��$:#�":+WebSphereMQ . . . . . . 509
�#!!����$:#�":+WebSphereMQ . . . . . . 509
�#:-�A�����������H??��-$��������H??��-$���":+
WebSphereMQ . . . . . . . . . . . . 510
�#!�#8��8 . . . . . . . . . . . . . . 511
DB2 for i �#!#8��:�+�#8 . . . . . . . . . 511
�#!#8����(DEPARTMENT) . . . . . . 512
DEPARTMENT . . . . . . . . . 513
�#!#8?���8#� (EMPLOYEE) . . . . . . 513
EMPLOYEE. . . . . . . . . . . 515
�#!#8�#?;�#+?���8#� (EMP_PHOTO) . . . 516
EMP_PHOTO . . . . . . . . . . 517
�#!#8 !:���?���8#� (EMP_RESUME) . . . 517
EMP_RESUME. . . . . . . . . . 518
�#!#8?���8#�������!!��$!8�#!
(EMPPROJACT) . . . . . . . . . . 518
EMPPROJACT . . . . . . . . . . 519
�#!#8�$!8�#! (PROJECT) . . . . . . . 522
PROJECT . . . . . . . . . . . 523
�#!#8���!!��$!8�#! (PROJACT). . . . . 524
PROJACT . . . . . . . . . . . 525
�#!#8���!!� (ACT) . . . . . . . . . 527
ACT . . . . . . . . . . . . . 528
�#!#8�#!�%#'�"-:�#-!�+� (CL_SCHED) . . . 529
CL_SCHED . . . . . . . . . . . 529
�#!#8 In-tray (IN_TRAY) . . . . . . . 529
IN_TRAY . . . . . . . . . . . 530
�#!#8�$!8�!#8 (ORG) . . . . . . . . 531
ORG . . . . . . . . . . . . . 531
�#!#8?���8#� (STAFF) . . . . . . . . 532
STAFF . . . . . . . . . . . . 532
�#!#8+�"�#+ (SALES) . . . . . . . . 534
SALES . . . . . . . . . . . . 534
�#!#8��:�+�#8XML. . . . . . . . . . 536
�#!#8��������� (PRODUCT) . . . . . . 536
PRODUCT . . . . . . . . . . . 536
�#!#8�����8KA�� (PURCHASEORDER) . . . . 538
PURCHASEORDER . . . . . . . . 538
�#!#8���$# (CUSTOMER) . . . . . . . 543
CUSTOMER . . . . . . . . . . 543
�#!#8�$�#�H�� (CATALOG) . . . . . . 545
CATALOG . . . . . . . . . . . 545
�#!#8���"'# (SUPPLIERS) . . . . . . . 546
SUPPLIERS . . . . . . . . . . . 546
�#!#8$��8���$# (INVENTORY). . . . . . 546
INVENTORY . . . . . . . . . . 546
�#!#8�����������8���"'#
(PRODUCTSUPPLIER) . . . . . . . . 547
PRODUCTSUPPLIER. . . . . . . . 547
DB2 for i$%#�@��#+��8$%#���8 CL . . . . . . . 547
������.�������� . . . . . . . . 549
�����-���+:���� !��!���8���-��!�-3� . . . . . . 551
-$!A��8'�#+�#!$# . . . . . . . . . . . . 551
���%#'�"��-8A���)� . . . . . . . . . . . 551
�#!��] ix
||
||
||
||
||
||
||
||
||
||
||
||
||
|
||
||
||
||
||
||
||
||
||
||
||
||
||
||
|
||
||
x IBM i: >#������ �#!� !��!�SQL
��������SQL
>#������DB2® for IBM® i �� �#!�����������'�#�'�#+�%#'!�� StructuredQuery Language (SQL)
��:�+�#8$%#���8 SQL�����"8):��'�:�������8#��#!#8��:�+�#8 �"+;A�:�#�����`�"�8���:
v ��:�+�#8"�8���#:��"8):����#:�:"���SQL��������'!A�;������j�):�� ILEC'!A���COBOL. �� EXECSQL��END-EXEC -?A��$���$%#���8 SQL ��� !��!�COBOL.
v SQL������:�+�#8��"8):���!!��"��#8 �"+$%#���8����$%#���8�+��$���!!��"���.
v $�+�-:�!�" SQL;��))���):.
v �A����8�#!#8��:�+�#8�����������CORPDATA. �%#'!���A���#!#8Kj�8)��?����#!#8��:�+�#8 $:!�����������$���!#8�j��.
v $������������#!$%#�:��+����:8-�H� () ��:8-�H��#� � []
v ���#!��'����#!���8�A�� SQL.
v ���#!���H�?���?!�$��)?-��!� APOST��APOSTSQL��:�#)������H�?���"�3������COBOL. literal ��8��!�8����!�#+��$%#���8 SQL��$%#���8�#`#����;��$���":+-$!A��8'�#+��] !�#&-"��+: (’).
v ���#!���#!-!�+8�%#"�� *HEX, -:�������#!�8- ��+�#8�A��.
-�A���"�H�#������:�+�#8�����#8) #������>#�-'��#���, ���#!�8):.
-�A��8#�'�:�������):�%#'!����H??��-$���� !��!�-��!�, ��:�+�#8��:��']�j8��"8):�����`��������j�):����H??��-$���
� !��!�. �+�#8)!�H�#�, ��:�+�#8%#�:��#��#�#!;�%#�#!- ���+�� �8)"-�H���+��!����������":+�#!�� SQL
��������. ):+#�!����8$%#���8 SQL, -�A���� SQL��������, �����#8-�H���+#�!� ���$%#���8-"�+:���-�A������+����
� !��!�.
��������: ":+�#!���$"��:�+�#8, $�����8��-8A���)���8 “���@���!'�� �������;�+�;�8” ��'�# 548.
������������������
�#!� !��!���8 SQL���N8
���������������������
“DB2 for i �#!#8��:�+�#8” ��'�# 511
�#!#8��:�+�#8���) ���;���#8��8����8#���'�:���#!� !��!�SQL���#!�#8��8 SQL
�#!�#8��8DB2�%#'!�� i5/OSSQL
������������ IBM i7.1
��#�-���+:���������'��'!A���������- ���+�� �8�+�#8�#��%#'!�������'�:�� SQLprogramming
©������@�_��8 IBMCorp. 1998, 2010 1
�������� !"�#��$�����%�$�����
$���#�#!;��8$A���"����?@�#� stored procedure ) +�8� !��!�)" ���'� !��!�-!�+�����"����?@����� '#���8�#!��
���-?���-��� � !""� “�#!-��+�� !��!�'!A� SQL �?!K�-"�!�-?A��!����"����?@� #� stored procedure” ��'�# 187
XML
���"�����XML;��-?����'��� SQLKj�8!:�;j8�#!�"�#!�#+����8$�#XML���#!���8�+�XMLschema'#���8�#!��
���-?���-��� � !""� “$%#���8 SQL��3N8����� SQL/XML” ��'�# 279
��&�'���!()��!
36�"��?!K�-"�!� $A�!�����#8����������- ���-��+�-?A��� �8��#?$�# ��$������-"��+: -�A��$�#��$������- ���+�� �8) '!A�
$�#�'��;����!� �?!K�-"�!�36�"�;��-!�+���8#��%#'!������$�# ���#�#!;� �8��#?$�#���� (-�#!'��)":+:�@��#!�"
#����� $�#���-�#!'��;��-�H�): -�A��$�#;��-!�+�#�$������ �?!K�-"�!�36�"�;��-!�+���8#��%#'!������$�# Kj�8-�#!'��):
����8;�"!'������) - �$�#-"��'#���8�#!�����-?���-��� � !""� “�#!��+#��?!K�-"�!�36�"�” ��'�# 30
�����#$MERGE
$%#���8MERGE�#�#!;�%#�#��-?A����!��;:�'��'!A���?-"��;:������+�����#!#8'!A������8�+�#8�"�+�#8'�j�8 �j���+�����:�#
�;:-'��#�������+����:���#!#8'!A������8'!A�)�� '#���8�#!�����-?���-��� � !""� “�#!��#������” ��'�# 124
*���������
��:� !�������#�#!;;���!#8�j����;������ SQL'#���8�#!�����-?���-��� � !""� “�#!�!#8���#!����:� !���
���” ��'�# 53
��'�%!��SQL ��&�'���!
���"����� ����-!+�;��-?���):�%#'!������ SQL �?!K�-"�!� �%#'!�������-?���-��� � !""� “��:����������-!+��� SQL
�?!K�-"�!�” ��'�# 246�� “�#!"����!���� SQL” ��'�# 248
WebSphere®MQ��+�����DB2
DB2�"-�!�+�Application Programming Interface �'���!���"�#!��$:#�WebSphereMQ��#���"��83N8������#+
�����������%#'�"-�8 Kj�8-!�+�:�# 3N8�����DB2MQ$���#�#!;��3N8�����-'��#�����$%#���8 SQL -?A��!:��#!-�#;j8>#������
DB2":+�#!�"�#!��$:#�WebSphereMQ'#���8�#!�����-?���-��� � !""� “WebSphereMQ?!�����DB2” ��'�#
494
���'��#%���$(,$�!����-#�/�������0+��3� SQL programming
v �H�?�������������H��-H���������+��)";��-?����'���$%#���8 DDLCREATE%#�:��#� � !""� “�#!- ���+��H��-H���������+��”��'�# 53
2 IBM i: >#������ �#!� !��!�SQL
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
�6 �����3���0+����������� ��-�"�#'��#%���$
-?A����:+$���'"����Kj�8���#!- ���+�� �8�#8"#�-�$��$ information center ��:
v !� �#? -?A���%#-$!A��8'�#+:�# ����"$A�������'�� '!A���������- ���+�� �8
v !� �#? -?A���%#-$!A��8'�#+:�# ����"$A��"������"��8������'�� '!A���������- ���+�� �8
��)3�� PDF$���#-'H� revision bar (|) ��� !+���"#�K#+��8������'������������- ���+�� �8
'#���8�#!$�'#�����-���+:���'�:�����)!�'�� '!A����- ���+�� �8��!������� � !""� ����j���$:#�;j8����
�(�! PDF���������������SQL
$���#�#!;"���?��?�)3�� PDF��8��������)"
'#���8�#!"� '!A�"#:���'�"-:�!���� PDF��8-���#!��� �'-�A�� SQLprogramming (����#" !�#�1,714KB)
������"8��(�! PDF
;#��8�#!����j�)3�� PDF�8���-:�!���-������8$��-?A���%#�#��#�'!A�?��?��#+'��8:
1. $����:#�����8�� PDF ���!#:-K�!���8$��
2. $�������H�?����������j� PDF�����$��
3. �%#�#8) �;j8)"-!H���!����$����8�#!����j�)3�� PDF
4. -�A�������
�������!���Adobe®Reader
$��%#- ���8��"���8 AdobeReader ��!����8$�� -?A��"�'!A�?��?�)3�� PDF -'��#��� $���#�#!;"#:���'�"�%#-�#���)��
��$�#���#+#�-:H�)K�� Adobe (http://get.adobe.com/reader/)
�"����3� DB2 for i Structured Query Language
StructuredQuery Language (SQL) - ��#`#�#�!>#��%#'!���#!�%#'�"���"�#!�������>#������-��8���?��@� '�:��
-'��#����@��#+;j8�#! !���� SQL��8 System i® �"+ ��>#������DB2 for i �� )�-K���� !��!� IBMDB2Query
Manager and SQLDevelopmentKit for i
SQL�"�#!�����Kj�8�+�������%#��8�����-��8���?��@�. �#�#!;�%#$%#���8 SQLN8�8���#`#������8, '!A��%#�#�"-�!�+����
)"�#�������!��'!A��%#�#!����������. �%#'!�������-���+:��� SQL���N8 �'"� Embedded SQLprogramming
SQL !���":+$%#���8����$:#�����@��#+;j8���8���$����8"%#-����#!����������>#��������-8A���)���#8����%#�'
$����8�#!"%#-����#!"�8���#:.
SQL�#�#!;-�#;j8�������>#������-��8���?��@����!���� �"+�� IBMDistributedRelationalDatabaseArchitecture™
(DRDA®)
�#!� !��!�SQL 3
http://get.adobe.com/reader/
������������������
� !��!���8>#����������!#+
���������������������
“3N8�������8>#������-��8���?��@�����!#+��SQL” ��'�# 468
��������������������������� !���) ":+��" SQL�H��-H�������!#+�+����!��$��?�:-��!����-�A������;j8���
�����.
����6� SQL
DB2 for i SQL !���":+��:�'���'�#+��:� -��� �#!��������!��)�����8 SQL?!�$��)?-��!� �� SQL��������
v ��:��������!��)��� SQL
!��)��� SQL:�-$!#'�$%#���8 SQL��!��$%#���8 SQL �"�#!�����������$A� ��:�'�j�8��8)�-K���� !��!� i5/OS®
������]#��'��H??��-$��������$%#���8 SQL�#�#!;!��)"��!�� �"+)����8��"���8)�-K���� !��!� IBMDB2Query
Manager and SQLDevelopmentKit for i
v SQL?!�$��)?-��!�
SQL?!�$��)?-��!���������$%#���8 SQL���N8�+�����?!�$��)?�����#`#���� �#`#���) ���- ��#`#���)"!���#!
��������:
– ILEC
– ILEC++
– ILECOBOL
– COBOL
– PL/I
– RPG III (��:�'�j�8��8RPG)
– ILERPG
SQL?!�$��)?-��!���8�#`#����-�!�+���H??��-$���� !��!������$%#���8 SQL$��)?-��!��#`#����j8$��)?��
K�!��� !��!��������?!�$��)?�� �%#'!�������-?���-���-���+:���?!�$��)?-��!� � !""�'�:�� �#!-�!�+����#!
!��� !��!�":+$%#���8 SQL ��� !��!���8 SQL���N8 ��:��������?!�$��)?-��!�$A���:�'�j�8��8)�-K���� !��!�
IBMDB2QueryManager and SQLDevelopmentKit for i
v ���-��!�-3�����������8SQL
���-��!�-3�����������8SQL�%#�'$���#�#!;�!#8��!��$%#���8 SQL'#���8�#!�!#������-?���-���-���+:���
SQL�������� � !""���� “�#!�� SQL��������” ��'�# 450SQL��������$A���:�'�j�8��8)�-K���� !��!�
IBMDB2QueryManager and SQLDevelopmentKit for i
v !���$!� �� SQL
'�#��#8 !���$!� �� SQL ��System iNavigator �'$���!#8 ��)� !�� ���� N]'#-�A��8��-���+:����$!� ��$%#���8 SQL
v $%#���8 CL�%#'!�� !��$%#���8 SQL (RUNSQLSTM)
$%#���8 RUNSQLSTM�#�#!;��-?A��!����"$%#���8 SQL���-�H�):�� )3����(���'!A�)3�� stream��(���'#���8�#!�����
-?���-���-���+:���$%#���8 RUNSQLSTM� !""���� “�#!����: !�:���$%#���8 SQL” ��'�# 463
v DB2QueryManager
4 IBM i: >#������ �#!� !��!�SQL
DB2QueryManager �����-��!�-3�������������%#8#��"+$%#���8 Kj�8���]#��'$���!#8����� -?�������� !��`#�����
��!��!#+8#���>#������)" QueryManager - � ��:�'�j�8��8)�-K���� !��!� IBMDB2QueryManager and SQL
DevelopmentKit for i '#���8�#!�����-?���-��� � !""���� QueryManagerUse
v ���-��!�-3�SQLREXX™
���-��!�-3�SQLREXX�%#�'$��!��$%#���8 SQL ���?!K�-"�!� REXX�%#'!�������-?���-���-���+:����#!��$%#���8 SQL
���?!K�-"�!� REXX � !""� �#!�$"$%#���8 SQL ����H??��-$���REXX�������� !��!���8 SQL���N8
v SQL call level interface
>#������DB2 for i �������� SQL call level interface Kj�8+���'�����#`# ILE �"�#�#!;-!�+���3N8����� SQL �"+
�!8��#��#!-!�+��� -K�!�:��� !��!�����"-�!�+��"+!�� -�A���� SQL call level interface $���#�#!;��8#�3N8�����
SQL���8'�")"�"+)��%#- ���8?!�$��)?�� ���$A���"$%#���8�#�!>#���-!�+�-?A��-�!�+�$%#���8 SQL!��$%#���8 SQL"j8�;:
��8���������#���%#���!���83N8�����!"����8 -��� �#!-!�+��� �$�#�H�����#!-�A����+8��:� !� !��!�) +�8
$��������8-�#��?��
�%#'!�� !#+�-��+"�������!����83N8��������8'�"������+����):+#�!�� � !""�'�:�� SQL call level interface ����:���8
>#��������8 i5/OS InformationCenter
v Process ExtendedDynamic SQL(QSQPRCED)API
application programming interface (API)����%#�' SQL�#�#!;�%#8#����)"�#���)" $���#�#!;�"-�!�+�$%#���8
SQL ):�� SQL�?H�-���!��$%#���8�"+�#!�� API ��� $%#���8���;���"-�!�+�- ��?H�-�":+API���+�8$8�+�� �
�!���8�?H�-�'!A�$%#���8;�������) �%#'!�������-?���-���-���+:���QSQPRCEDAPI � !""�'�:�� Process Extended
Dynamic SQL(QSQPRCED)API �%#'!����������:) -���+:���API � !""�'�:��Application programming interfaces
v SyntaxCheck SQLStatement (QSQCHKS)API
):+#�!�� API �!:���$%#���8 SQL�%#'!�������-?���-���-���+:���QSQCHKSAPI � !""�'�:�� SyntaxCheck SQL
Statement (QSQCHKS)API �%#'!����������:) -���+:���API � !""�'�:��Application programming interfaces
v DB2Multisystem
$�����`������8!�� ������#!�%#�'�������8$���!#+�+�#8���:;j8��'�#+ !��'#���8�#!�����-?���-���
� !""� DB2Multisystem
v DB2SymmetricMultiprocessing
$�����`������8!�� ������#!�� query optimizer ��:�@��#!-?���-������#!-!�+������":+�#! !�:������
��#�Symmetricmultiprocessing (SMP) - �!� �����8�#!-�#��8#������#���!��-"��+: ���Kj�8�?!-K�-K�!�'�#+
��: (CPU����: !�:��� I/O)������8��8#�!�K�!����8'��:+$:#�%# ��"�����%#8#�!�:���� -?A���')"�#Kj�8����?@�
�+�#8-"�+:�������"�#+ �#! !�:��������#�'�#+$:#�:�#��:�"�#!>#�������#�#!;!�8!���#!�A�$�#���:
!�:���!��)"�#��:�#'�j�8��: ('!A����8'�")?!�����'#���8�#!�����-?���-��� � !""� �#!$:�$�� �#!
!�:��������#��%#'!��-$�+:!� �������'�:�� !���@��#?�#!�%#8#���8>#���������#!��8#�-$�+:!��')"��"�
�����"
:��0+��3�'�6$������ ! SQL������"!';�������
�����%#��8�����-��8���?��@� ;A�:�#��������8'�"���+�����#!#8DB2 for i �H��-H��� ;���!#8��!��`#):��>#�- ��H
��-H���!��
�#!� !��!�SQL 5
http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/topic/rzatc/sc415212.pdf
�#!#8���) �����"8$:#����?��@�!':�#8&�?��-(?#��8!����&�?��-(?#��8>#������-��8���?��@�.
�������� 1. �����������������������������������SQL
�������� � �� �������� SQL
!�����. �"������H��-H���������?��@�������'$���#�#!;$�'#�H��-H���)" ":+�A����8�H��-H���.
"��"#�. !���":+)��!#!�, -�!����, journal receiver,�$H��#�H�� SQL , ���#!:�;j8?�#���!������. ������
�"������H��-H���������?��@�������'$��$�'#�H��-H���)"":+�A��.
!$�$%�&�. -KH���8-!H�$�!�". �����. -KH���8$���������;:.��'�&���(. -KH���836�"�. ")�. ��:����- ���:�����8�#!#8 Kj�8-KH���8$������-!�+8�%#"��
�+��.$%(�. ����!'�j�8��:�j��) ��8��������-���+:��8�� !-�������'�j�8 !-��.
&�����. ��:����- ���:���8��8�#!#8 !-�������'�j�8 !-��.
!$��*&�. �����+��+��836�"���-!H$$�!�"��8)3��36��$��'�j�8)3���j��) .
������. -KH�+��+��8$���������;:��8�#!#8'�j�8�#!#8�j��) .
"�'���* SQL���"��8�H��-H��� ������#!�����#!!��$%#���8 SQL . "�'���*. ���"��8�H��-H��� ������#!�����#!!��$%#���8 SQL .+-�!$�#/�67� 7;����;�������!(�������#����������!#+
SQL����������*�
v $%#���8�#`#���� SQL���N8
&>����� SQL schema &>���������/ SQLALTER FUNCTIONALTER PROCEDUREALTER SEQUENCEALTER TABLECOMMENT ONCREATE ALIASCREATE FUNCTIONCREATE INDEXCREATE PROCEDURECREATE SCHEMACREATE SEQUENCECREATE TABLECREATE TRIGGERCREATE TYPECREATE VARIABLECREATE VIEWDROPGRANTLABEL ONRENAMEREVOKE
ALLOCATE CURSORASSOCIATE LOCATORSCLOSEDECLARE CURSORDELETEFETCHFREE LOCATORHOLD LOCATORINSERTLOCK TABLEOPENREFRESH TABLESELECT INTOSET variableUPDATEVALUES INTO
&>���������-��������/ SQL &>���������7;����?� SQLDELETEINSERTMERGEUPDATE
CONNECTDISCONNECTRELEASESET CONNECTION
&>����������� SQL &>������@�7�� SQLCOMMITRELEASE SAVEPOINTROLLBACKSAVEPOINTSET TRANSACTION
DECLARE GLOBAL TEMPORARY TABLESET CURRENT DECFLOAT ROUNDING MODESET CURRENT DEGREESET CURRENT IMPLICIT XMLPARSE OPTIONSET ENCRYPTION PASSWORDSET PATHSET SCHEMASET SESSION AUTHORIZATION
&>����� SQL"��!(���� &>�����A�D�+E��� SQL"��FG�ALLOCATE DESCRIPTORDEALLOCATE DESCRIPTORDESCRIBEDESCRIBE CURSORDESCRIBE INPUTDESCRIBE PROCEDUREDESCRIBE TABLEEXECUTEEXECUTE IMMEDIATEGET DESCRIPTORPREPARESET DESCRIPTOR
BEGIN DECLARE SECTIONDECLARE PROCEDUREDECLARE STATEMENTDECLARE VARIABLEEND DECLARE SECTIONGET DIAGNOSTICSINCLUDESET OPTIONSET RESULT SETSSIGNALWHENEVER
�#!� !��!�SQL 7
|
||
|
|
|
|
SQL control statementCALL
$%#���8 SQL�#�#!; ������#!����H��-H������;���!#8�"+SQL!:����836��$��)3��������#:;j8�#+��������$��)3�������!�
���-"��+: $%#���8 SQL)���#8��8;j8$%#��+#���?�#���!� interactive data definition utility (IDDU)�%#'!��)3������@��#+
":+� !��!� )3������@��#+":+� !��!� !#�- ��#!#8�����$������-"��+:.
������������������
“Data definition language” ��'�# 17
Data definition language (DDL)$A���:� ��8 SQL����!#8 - ���+������H��-H���>#������ �H��-H���>#������ -'��#���
!���":+�������#!#8�����8�%#"�� �$�#�H��"!!��� �� alias
“�#`#�%#'!���#!"%#-����#!�����” ��'�# 55
�#`#�%#'!���#!"%#-����#!����� (DML)$A���:���8 SQL���"%#-����#!'!A�$:�$�������
���������������������
�#!�#8��8DB2�%#'!�� i5/OSSQL
�-#���������-���+:���$%#���8 SQLKj�8���#!!��8#�$!��8��#��" ��H??��-$
���� !��!���8$���#�#!;-�#;j8?A�����:���(�+ SQL �"+�� $%#���8 GETDIAGNOSTICS
������������������
�#!��?A�����:���(�+ SQL
���������������������
GETDIAGNOSTICS statement
SQL�C��'@C�*!
����������SQL$A� schema -�!���� �$�#�H���#!#8�#��8�����8"!!��� ��%#��"�!��-��!� �%#"�� stored procedure
3N8�������������%#'�"-�8 ���"��������%#'�"-�8��:� !���������?H�-� SQLSQL�!#8��!��`#�H��-H���-'��#����'
- ��H��-H���!��
������ (Schemas)
���������#!�"�������8 SQL�H��-H���������$�������� !���":+)��!#!�, -�!����, journal receiver, �$�#�H
�����#��?�#���!������
8 IBM i: >#������ �#!� !��!�SQL
|
|
|
�#!�!#8, +#+, '!A�-�H��#!#8, �����8���H��-H���!�� (-���� !��!�)�#):��)��!#!�, !���"�H)" . )3��!�����8
'�"�#;���!#8'!A�+#+) +�8������SQL'#�������SQL )����?�#���!������. '#�������SQL��?�#���!�
�������::
v source physical )3��'!A� nonsource physical )3����������#8�����!#+�#!+��+-"�+:�#�#!;;���!#8, +#+, '!A� -�H�):��������SQL )".
v -!#)���#�#!;:#8���$��)3����������SQL )"-�A��8#�)3��-'��#����)���#�#!;�@��#+�+����?�#���!������)".
$���#�#!;�!#8��- �-#��8������)"'�#+���.
'@��!������*�����'@��!���
��������� journal receiver�� ����j��#!- ���+�� �8��8�#!#8�������8��>#������
-�!������ journal receivers j8�����#! !�:���$%#���8 SQLCOMMIT,ROLLBACK, SAVEPOINT��RELEASE
SAVEPOINT -�!���� �� journal receivers +�8�#�#!;��8#�- �'���>#��#!�!:���'!A����%#'!�� forward recovery
'!A� backward recovery
������������������
�#!�"�#!-�!����
Commitment control
��*��C��
�������SQL$A�$��-�H������8�#!#8�������8����@��#+;j8�#!#8�����8"!!��� �?!K�-"�!� 3N8����� �%#"���!��-��!�
��:� ! ��%#��" � !��!��?H�-����H��-H��� XSR
���������+������"�#!#8�#!�#8��8�#���)��!#!� QSYS��QSYS2 ��SQL schema������:����"��8�;:����!#8�j��#��#
!#8 catalog����������-���+:����H��-H����� schema
�$�#�H��;���!#8�j���"+���������-�A��$���!#8 schema$��)���#�#!;��'!A�- ���+��$�#�H��
���������������������
�$�#�H��
*���$, �J�, ���������!
����� - ��#!�"�#!����������8"#�Kj�8 !���":+�� ��������
�;:$A���:����- ���:���Kj�8 !���":+$���������8���'�j�8$�������j��) . $������$A���:����- ���:"��8Kj�8 !���":+
�;:���8���'�j�8�;:�j��) �� !-�������'�j�8 !-��. ��������8'�"��'�j�8$��������8- ������ !-��-"�+:���. �#!#8
��SQL$A�36��$��)3�������$�+� '!A�)����$�+��H)".
materialized query table$A��#!#8��������#!-�H� ��������- ��A��?��?����Kj�8� �8�##��#!#8��(���'�j�8'!A�'�#+�#!#8
���!���"+ select-statement.
partitioned table$A��#!#8�������������- ���:� !����� ��$��?#!������ (-��-��!�)'�j�8'!A��#��:�#'�j�8.
�#!� !��!�SQL 9
|
|
������������������
DB2Multisystem
���������������������
���"�����
“�#!�!#8��- ���+��#!#8materialized query” ��'�# 23
�����materialized query - � �#!#8����� definition �+����?A��>#���8����?@���8-$�+:!� ��������+����!� �����8����?@�
���$%#�:�):��:8'�# Kj�8!���##��#!#8��� definition ��8�#!#8materialized query ���#8��8
Alias
alias$A�����A��'�j�8��8�#!#8'!A������8.
$���#�#!;�� alias -?A���#8;j8�#!#8'!A������8���!������%#)". ���#����, $��+�8�#�#!;�� aliase -?A��!:��#!#8-�#):
":+���.
���������������������
Alias
�����$
�!����- �-'�A���#!#8�%#'!�� ��H??��-$���� !��!��+�#8)!�H�#������8)����������"�����"8-?�+8�$� �#!#8
'�j�8'!A�'�#+�#!#8������������;���!#8�j��
�����8�#�#!;!�8!��$���������;:���8'�"��8�#!#8'!A���"+��+��8�#!#8$�������������8�#�#!;�":#8�'��#8)
#����- ��+�����#!#8����%#$�����������#)". �����8��SQL$A�!� ���?�-&`��8���$��)3�����)����$�+�.
���������������������
�����8
������ (Index)
"����#SQL$A� ��"�����+��+��$��������8�#!#8����"-!�+8�#��%#"���#!-!�+8#��#�) '#��+'!A�#���+) '#�#�
�#�$:#�-'�#��.
"!!���������:���#!�"-!�+8����+�#����. �#!�"-!�+8-'��#���)"��� �#!-!�+8�%#"�� (ORDERBYclause), �#!�"�����
(GROUPBYclause), ���#!-�A����+8. "!!��� SQL$A� ���$��)3�������$�+�.
!����"!!���-?A���'"j8���������#)"!:"-!H:�j��. $���#�#!;-�A��)":�#�!#8'!A�)���!#8"!!����H)". $���#�#!;
�!#8"!!���%#�:�-��#�"�H)". ���#���� $���#�!#8'!A���"!!���)"���"-:�#. "!!���;��!��`#):�"+!���"+
���������. �+�#8)!�H�#� -�A��8#�"!!���;��-�H�):��!��"�8����'#��� "!!���%#�:��#���8����� !���@��#?�#!
�%#8#���8��H??��-$������- ���+��#!#8
10 IBM i: >#������ �#!� !��!�SQL
������������������
+��@:�@����#!�!#8"!!���
0+�@�����
����$���" - ��~�����8$���� �"+��:�"�#!>#������ -?A��%#��"$�#����#�#!;��!���'!A���?-"� ���#!#8
DB2 for i ����������%#��""�8���) ���:
v ��%#��"���-(?# (Unique constraints)
����$���"����%���$A� ������8$��:�#$�#��8$�+�;����8�H���-�A��$�#����- �$�#-(?#. $���#�#!;�!#8��%#��"-(?#
�"+��$%#���8 CREATETABLE'!A�ALTERTABLE��:�#$%#���8 CREATE INDEX�#�#!;�!#8"!!������-(?#Kj�8
)�� K�%#��� ���"!!���"�8���#:�H)��;A�- ���%#��"
��%#��"���-(?#;���%#�#��8$����-�A�����#!!��$%#���8 INSERT��UPDATE. ��%#��" PRIMARYKEY$A� !�
�����%#��"UNIQUE$:#������#8$A� PRIMARYKEY��8)����$���������- � null.
v ��%#��"����#8��8 (Referential constraints)
����$���"���������$A� �~�����8$��:�#$�#��8$�+� foreign ;����8�H���-�A��:
– $�#-'��#���� !#�- �$�#��8$�+�'��� (parent key)
– ��:� !����#8��:��8$�+� foreign - � null.
��%#��"����#8��8;����8$����-�A�����#!!��$%#���8 INSERT,UPDATE, ��DELETE .
v ��%#��"�#!�!:���
����$���"����� ����$A� �~���%#��"$�#�������$������'!A������$������ $���#�#!;�!#8��%#��"�#!�!:��� �"+��
$%#���8 CREATETABLE'!A�ALTERTABLE��%#��"�#!�!:���;����8$����-�A�����#!!��$%#���8 INSERT��
UPDATE.'#���8�#! ������#���%#��" �;:����������;:�����!�-�#) '!A�;����?-"����#!#8��8�%#�'-8A���)�
���!��):- ����TRUE'!A� )��!��� (-�A��8#�- � null)
���������������������
“��%#��"” ��'�# 155
>#������DB2 for i �������� ��%#��"-(?#, ��%#��"���#!�#8��8 ����%#��"���#!�!:���
"�6�'���!
&�������$A���"��8 action���!���"+��������� -�A���"�H�#������-'���#!�����!��):-��"�j������#!#8'!A������8���!��):
-'���#!��"�8���#:�#- � �#!��!��#!��?-"��#!��'!A��#!��#��!��-��!��#�#!;!������'!A�'��8-'���#!����� DB2 for
i �������� �#!��!�SQL, ��?-"����!��-��!�����������!��-��!��#+���
���������������
�#!�%#�!��-��!�-'���#!����������������>#��������8$��
��&�'���!"�#'�C���+
'��(#�"���)����* �$A� � !��!�����#;��-!�+��"+��$%#���8 SQLCALL
�#!� !��!�SQL 11
DB2 for i �������� �?!K�-"�!����-�H�):����#+�����SQL �?!K�-"�!� �?!K�-"�!��#+����#- �� !��!�!��, -K�!�
:��� !��!�'!A��?!K�-"�!� REXX���)���#�#!;- �� !��!�'!A��?!K�-"�!� System/36™SQL �?!K�-"�!�;���%#'�"
):���8'�"��SQL���#��$%#���8 SQL!:����8 SQL control statements
������������������
“���!��?!K�-"�!�” ��'�# 160
'��(#�"��� (Kj�8���-!�+�:�# �?!K�-"�!����-�H�):) $A�� !��!�����#�#!;-!�+��j���#-?A�� �����8#� �?!K�-"�!��# !���":+
$%#���8�#`#������$%#���8 SQL �?!K�-"�!� �� SQL����"�-'�A������?!K�-"�!����#`#����
������ (Sequences)
sequence$A��H��-H���?A���������� ����%#'�"�' :�@��#!���8�#+��!:"-!H:���#!�!#8'�#+-��-(?#.
$���#�#!;���%#"�����#!������$������ identity '!A� $��������:-����������!#8�j���#)" �%#"�������`��#!��8#�$�#+���
�#8-�A��-'��#���
���������������������
“�#!�!#8���#!���%#"��” ��'�# 27
�%#"��-'�A�����$������ identity ��-!A��8���:�#���8$���#�#!;�!#8$�#���- � unique �+�#8)!�H�#��%#"��- ��H��-H������
�j���+������#!#8$���#�#!;���%#"��-?A���!#8$�#)"�+�#8!:"-!H: ��8�#+"#+
*���������
�� �+�'���$A���:� !������A�� Kj�8�#�#!;�!#8 -�#;j8 ����)�)"�"+�� SQL
��:� !�������#�#!;��$�#-(?#�%#'!��-K����)" ��:� !�#�#!;�%#�#�� - ���:�'�j�8��8��?�����:#8�+�����%#�'��8
��#8 -��� $%#���8 -$�+:!� �!#8�����8'!A���!�
(,$�!�������3+��+������ (User-defined functions)
,-�����������.���$�/�"$A�� !��!�����#;��-!�+��%#8#� )"-'�A�����3N8���������:�A��
DB2 for i ��������3N8���������#+���,3N8����� SQL, ��3N8�����������#8 (sourced functions).3N8���������#+���
�#- �� !��!� ILE��8!���"'!A�-K�!�:��� !��!�3N8����� SQL;���%#'�"):���8'�"��SQL���#��$%#���8 SQL
!:����8$%#���8 SQL control. 3N8�����������#8;���!#8�j���#��3N8���������:�" (built-in)'!A���3N8������������
�%#'�"������+��. $���#�#!;�!#83N8����� scalar '!A�3N8������#!#8�'- �3N8����� SQL'!A�3N8���������#+���
������������������
“�#!��3N8�������������%#'�"-�8” ��'�# 206
���#!-��+���H??��-$��� SQL$���#�#!;-�A�� ������#!'!A�"%#-����#!�#8�+�#8�����3N8�������������%#'�"-�8 (UDF)
'!A����!����+��+ ����H??��-$�����8$��;j8��:�#����#"�8�#+�:�#���#!-�A���#!"%#-����#!�'�����!����+��+����H?
?��-$�����8$��$���#��8?�#!�#;j8 !�+�����8�#!��8#�UDF���
��6�"�#�3+��+������
��")��.���$�/�"���$A����"��������$���#�#!;�%#'�")"�"+)���j��������"����� Kj�8�"-�!�+�):�"+!���"�#!>#���
���
12 IBM i: >#������ �#!� !��!�SQL
|
|
|
|
���"��������distinct ��H?������"�������: ���"���������-!+� ;����+#��"+�����"�������:- ����"����-��