iseries¿ë db2 udb sql ÇÁ·Î±×·¡¹Ö °³³ä v5r2 - your.org
TRANSCRIPT
��
iSeries� DB2 UDB SQL ����� �� �� . ix
� �� ��� . . . . . . . . . . . . . ix
SQL� �� ��� �� . . . . . . . . . x
�� ���� �� . . . . . . . . . . . x
� ���� �� ����� �� �� . . . . xi
SQL ����� �� �� V5R2 ��� ��� �
� . . . . . . . . . . . . . . . . . xii
� 1 � iSeries� DB2 UDB ��� �� ��
(SQL) �� . . . . . . . . . . . . . . 1
SQL �� . . . . . . . . . . . . . . . 1
SQL ��� ������ � ��� �� . . . 3
SQL�� �� . . . . . . . . . . . . . 6
SQL �� ��(SQLCA) . . . . . . . . . 6
SQL ���� . . . . . . . . . . . . . . 6
��� . . . . . . . . . . . . . . . 7
�, � � � . . . . . . . . . . . . . 8
�� . . . . . . . . . . . . . . . . 8
�� . . . . . . . . . . . . . . . . 8
�� . . . . . . . . . . . . . . . . 9
���� . . . . . . . . . . . . . . . 9
��� . . . . . . . . . . . . . . . 10
�� ����� . . . . . . . . . . . . 10
��� �� �� . . . . . . . . . . . 10
��� �� �� . . . . . . . . . . . 10
SQL ��� . . . . . . . . . . . . . 10
������ ���� ���� . . . . . . . 11
��� �� � �� . . . . . . . . . 13
�� �� � �� . . . . . . . . . . 13
���� . . . . . . . . . . . . . . 13
SQL ��� . . . . . . . . . . . . . 14
�� . . . . . . . . . . . . . . . . 14
��� ���� . . . . . . . . . . . . 15
� 2 � SQL �� . . . . . . . . . . . 17
��� SQL � . . . . . . . . . . . . 17
��� � . . . . . . . . . . . . . . 18
�: ��� �(SAMPLECOLL) . . . . . . 18
� � � �� . . . . . . . . . . . . . 18
�: � �(INVENTORY_LIST). . . . . . 19
��� �(SUPPLIERS) � . . . . . . . 20
LABEL ON� �� . . . . . . . . . . . 21
� �� �� . . . . . . . . . . . . . 22
�: � �� ��(INVENTORY_LIST) . . . 25
� �� �� ���� . . . . . . . . . 25
� ��� �� �� ���� . . . . . . . 28
�� �� �� . . . . . . . . . . . . . 30
�: �� �� �� . . . . . . . . . . . 30
�� �� �� . . . . . . . . . . . . 33
�: �� �� ��(INVENTORY_LIST) . . 33
�� � � �� . . . . . . . . . . . . 33
�: � �� �� � . . . . . . . . 34
�: � � ��� ���� ��� � ��
� . . . . . . . . . . . . . . . . 35
� 3 � iSeries Navigator ������ �� . . 37
iSeries Navigator � . . . . . . . . . . 37
iSeries Navigator� ��� ����� � . . . 38
�: iSeries Navigator� ��� ����� �
(SAMPLELIB) . . . . . . . . . . . . 38
iSeries Navigator ���� ����� ���
�� . . . . . . . . . . . . . . . . 39
iSeries Navigator� ��� � � � �� . . . 40
�: iSeries Navigator� ��� � �
(INVENTORY_LIST) . . . . . . . . . 40
iSeries Navigator� �� �� � �� . . 42
iSeries Navigator� ��� ���� �
(SUPPLIERS) � . . . . . . . . . . 43
iSeries Navigator� ��� � �� �� . . . 43
iSeries Navigator� �� � �� �� . . 44
iSeries Navigator� �� � �� �� . . 44
iSeries Navigator� �� �� �� �� . . 45
iSeries Navigator� �� �� �� �� 46
iSeries Navigator� �� � �� � �� 46
iSeries Navigator� ��� �� � � �� . . 47
iSeries Navigator� �� � � �� �
� �. . . . . . . . . . . . . . . 49
iSeries Navigator� �� ��� ��
��� � �� � . . . . . . . . 51
iSeries Navigator� ��� ������ ����
�� . . . . . . . . . . . . . . . . . 51
� 4 � DDL(Data Definition Language) . . . 53
��� � . . . . . . . . . . . . . . 53
� �. . . . . . . . . . . . . . . . 54
� ���� �� . . . . . . . . . . . 54
© Copyright IBM Corp. 1998, 2002 iii
||
||
||
||
LIKE� �� � � . . . . . . . . . 55
AS� �� � � . . . . . . . . . . 55
��� �� � �� . . . . . . . . . . . 56
�� � � � �� . . . . . . . . . . . 56
ROWID . . . . . . . . . . . . . . . 57
LABEL ON� ��� �� �� � . . . . 58
COMMENT ON ��� SQL ���� �� 59
COMMENT ON� ��� � �� �. . . 59
� �� �� . . . . . . . . . . . . . . 59
� ��. . . . . . . . . . . . . . . 60
� ��. . . . . . . . . . . . . . . 60
���� �� . . . . . . . . . . . . 60
� ��. . . . . . . . . . . . . . . 61
ALTER TABLE�� � �� . . . . . . 62
ALIAS �� � � �� . . . . . . . . . 62
�� � � �� . . . . . . . . . . . . 63
UNION �� �� � . . . . . . . 64
�� �� . . . . . . . . . . . . . . . 65
������ ��� ���� . . . . . . . . 66
� �� ���� �� �� . . . . . . . 66
� �� ���� �� �� . . . . . . . 67
������ ���� � . . . . . . . . . 67
� 5 � SELECT�� ���� �� �� . . . 69
SELECT� �� �� �� . . . . . . . 69
WHERE � ��� �� �� �� . . . . . 71
WHERE �� ��� . . . . . . . . . 72
�� ��� . . . . . . . . . . . . . 74
NOT ��� . . . . . . . . . . . . . 74
GROUP BY� . . . . . . . . . . . . . 76
HAVING� . . . . . . . . . . . . . . 77
ORDER BY� . . . . . . . . . . . . . 78
�� SELECT� . . . . . . . . . . . . 79
�� � � �� ��� � . . . . . . 80
SQL ��� � ���� . . . . . . . . 81
�� �� ��� . . . . . . . . . . . . 82
��, �� � ���� �� �� . . . . . . . 82
�� ��� �� �� . . . . . . . . 83
��/�� �� . . . . . . . . . . . . 83
�� � �� . . . . . . . . . . . . . . 84
� �� �� � . . . . . . . . . . . 84
LIKE �� � ����. . . . . . . . 86
WHERE� �� � �� �� . . . . . . 87
� ��� ���� �� . . . . . . . 88
�� . . . . . . . . . . . . . . 89
� �� . . . . . . . . . . . . 91
�� �� . . . . . . . . . . . 91
�� . . . . . . . . . . . . . . 92
�� . . . . . . . . . . . . . . 92
�� �� ����� . . . . . . . . 93
� ��� � �� . . . . . . . . 94
� ��� �� . . . . . . . . . . . . . 96
UNION ���� ��� � �� . . . 99
UNION ALL �� . . . . . . . . . . 100
�� � �� . . . . . . . . . . . . . 102
� 6 � SQL ��, �� � �� . . . . . . 105
INSERT �� �� � �� . . . . . 105
SELECT� �� � � �� . . . . 108
INSERT ���� � � � �� 109
�� � �� . . . . . . . . . . . . 109
UPDATE �� �� �� �� �� . . 110
��� � �� �� � �� . . . . 112
�� �� � �� � �� . . . . 112
�� � �� . . . . . . . . . . . . 113
� � � �� �� . . . . . . . . . 113
DELETE �� �� �� � �� . . . 115
� 7 � �� �� ��. . . . . . . . . . 117
SELECT ��� � �� . . . . . . . . 118
��(Correlation) . . . . . . . . . . . 118
� �� � �� �� . . . . . . . . . 119
� �� �� �� . . . . . . . . . . 119
� �� �� �� ���� . . . . . . . 121
�� � �� . . . . . . . . . . . . . 122
���� �� �� . . . . . . . . . . 122
�: WHERE�� �� � �� . . . . . 123
�: HAVING�� �� � �� . . . . . 125
�: �� ���� �� � �� . . . . . 125
UPDATE�� �� � �� �� . . . . . . 126
DELETE�� �� � �� �� . . . . . 127
� 8 � SQL �� �� . . . . . . . . . 129
ORDER BY � � �� ��� �� �� 129
�� �� � ORDER BY. . . . . . . . 130
� �� . . . . . . . . . . . . . . 131
�� �� � ��. . . . . . . . . . . . 132
�� ��� CREATE INDEX� . . . . . . 133
�� �� � ���� . . . . . . . . . . 133
� 9 � �� �� . . . . . . . . . . . 135
��� �� . . . . . . . . . . . . . . 135
� �� . . . . . . . . . . . . . 135
���� �� . . . . . . . . . . . . 136
�� �� � . . . . . . . . . . . . . 137
iv iSeries� DB2 UDB SQL ����� �� V5R2
||
||
||
||
||
||
||
||
||
||
||
||
�� 1: �� �� . . . . . . . . . . . 139
�� 2: �� ��. . . . . . . . . . . 140
�� 3: ��� � � � �� �
�� . . . . . . . . . . . . . . . 141
�� 4: ��� ��� � � . . . . . 141
�� 5a: �� � �� . . . . . . . . . 142
�� 5b: �� � �� . . . . . . . . . 142
�� 6: �� ��. . . . . . . . . . . 143
� � FETCH� ��. . . . . . . . . . 143
��� �� � ��� � � FETCH 144
� ���� �� ��� � � FETCH 146
� �� � � �� . . . . . . . . . . 149
� 10 � �� ��� . . . . . . . . . . 151
�� ���� �� � �� . . . . . . . . 151
�� � . . . . . . . . . . . . . . 152
�� ���� �� �� �� . . . . . . . 153
�� ���� �� . . . . . . . . . . 155
�� ����� �� � �� . . . . . . 155
�� ����� �� � ��. . . . . . . 156
�� ����� �� �� �� . . . . . 158
�� �� . . . . . . . . . . . . . 161
��� WITH CHECK OPTION. . . . . . 162
WITH CASCADED CHECK OPTION . . . 162
WITH LOCAL CHECK OPTION. . . . . 163
iSeries� DB2 UDB ��� �� . . . . . . 165
SQL ���. . . . . . . . . . . . . 166
SQL ��� � . . . . . . . . . . . 166
BEFORE SQL ��� . . . . . . . . . 167
AFTER SQL ���. . . . . . . . . . 168
SQL ���� ��� . . . . . . . . . 169
SQL ��� �� � . . . . . . . . . . 170
�� ��� . . . . . . . . . . . . . 171
�� ��� � ���� . . . . . . . . 171
� 11 � �� ����� . . . . . . . . . 177
�� ����� ��. . . . . . . . . . . 178
SQL ����� �� . . . . . . . . . . 179
�� ����� ��� . . . . . . . . . . 185
�� ����� �� . . . . . . . . . . 186
����� ��� �� CALL� �� . . . . 187
����� ��� �� �� CALL� �� 187
SQLDA� �� �� CALL� �� . . . . 188
CREATE PROCEDURE� �� �� CALL�
�� . . . . . . . . . . . . . . . 189
�� ����� � UDF �� ��� �� �
� . . . . . . . . . . . . . . . . . 191
����� � � �� �����. . . . . . 196
�� �� �� ���� �� �� . . . 198
CALL� � . . . . . . . . . . . . . . 199
� 1: ILE C ������� ��� ILE C
� PL/I ����� . . . . . . . . . . 200
� 2. C ������� ��� REXX ��
��� � . . . . . . . . . . . . . 204
� 12 � ���� �� �� �� . . . . . . 209
DB2 ���� �� ��� �� . . . . . 209
���� �� �� DB2 � . . . . . . . 210
�� ����(LOB) �� . . . . . . . . . 210
�� ���� �� ��(BLOB, CLOB,
DBCLOB) �� . . . . . . . . . . . 211
�� ���� �� ��� �� . . . . . . 212
�: CLOB �� �� �� �� ���
�� . . . . . . . . . . . . . . . 213
����� � � LOB �� ��� . . . . 216
LOB � �� �. . . . . . . . . . 216
�: ��� �� �� . . . . . . . . . 218
�: CLOB � �� ��. . . . . . . . 220
LOB �� � �� �� . . . . . . . . 220
LOB �� �� �� � . . . . . . . . 221
��� �� ��(UDF) . . . . . . . . . . 221
UDF� ��� �� . . . . . . . . . 222
UDF �� . . . . . . . . . . . . . 225
UDF �� . . . . . . . . . . . . . 227
UDF . . . . . . . . . . . . . 228
�� � �� ���� . . . . . . . . . 229
�: UDF . . . . . . . . . . . . 229
UDF �� . . . . . . . . . . . . . 233
��� ��� ��� ��(UDT) . . . . . . 240
UDT� ��� �� . . . . . . . . . 240
UDT �� . . . . . . . . . . . . . 241
���� �� UDT �� . . . . . . . . 241
�: CREATE DISTINCT TYPE �� . . . 241
UDT� � �� . . . . . . . . . . . 242
UDT � . . . . . . . . . . . . . 243
UDT �� � . . . . . . . . . . . 243
UDT, UDF � LOB ��� �� � . . . . 249
UDT, UDF, LOB . . . . . . . . . 249
��� ������� � . . . . . . . . 249
DataLink �� . . . . . . . . . . . . . 252
NO LINK CONTROL . . . . . . . . . 254
FILE LINK CONTROL(� ��� ���
��) . . . . . . . . . . . . . . . 254
�� v
||
||
FILE LINK CONTROL(������ ���
��) . . . . . . . . . . . . . . . 254
DataLink� �� �� ��� � . . . 254
� 13 � ��� �� ��(UDF) �� . . . . 259
UDF �� �� ��. . . . . . . . . . . 259
UDF� ���� �� � . . . . . . . 259
��� ���� . . . . . . . . . . . 260
� �� . . . . . . . . . . . . . 260
�� �� � . . . . . . . . . . . . . 261
SQL ���� UDF � . . . . . . . . 261
�� ���� UDF � . . . . . . . . 262
UDF �� � . . . . . . . . . . . . . 272
�: � �� UDF . . . . . . . . . . 272
�: ��� . . . . . . . . . . . . . 274
�: � � �� . . . . . . . . . . . 275
� 14 � � SQL ������ . . . . . . 283
�� SQL ������ �� � �� . . . . . 286
�SELECT� �� . . . . . . . . . . . 286
�� SQL�� CCSID . . . . . . . . . 286
PREPARE�� EXECUTE� �� . . . . . 287
SELECT� �� � SQLDA �� . . . . . . 288
�� ��� SELECT�. . . . . . . . . 288
�� ��� SELECT�. . . . . . . . . 289
SQL ��� ��(SQLDA) . . . . . . . 290
SQLDA �� . . . . . . . . . . . . 292
�: SQLDA ���� �� ��
SELECT� . . . . . . . . . . . . . 296
��� �� . . . . . . . . . . . . 301
� 15 � ����� ����� �� � SQL
�� . . . . . . . . . . . . . . . . 303
Java� �� �� . . . . . . . . . . . 303
Domino� �� �� . . . . . . . . . . 303
ODBC(Open Database Connectivity)� ��
�� �� . . . . . . . . . . . . . 303
PASE(Portable Application Solutions
Environment)� �� �� �� . . . . 304
� 16 � iSeries Navigator� ��� �� ��
���� �� . . . . . . . . . . . . . 305
Database Navigator� �� ������ � 305
Database Navigator � . . . . . . . 307
��� ���� �� . . . . . . . . 307
���� ���� �� . . . . . . . 308
��� �� �� � . . . . . . . . . 308
SQL ���� �� �� ������ �� 309
SQL ���� � . . . . . . . . . . 310
SQL ���� �� . . . . . . . . . . 310
SQL ���� �� �� �� �� . . . . 310
�� ����� �� � �� �� . . . 311
� � � �� . . . . . . . . . . . 311
SQL �� ��� SQL� ��� . . . . . . 312
������ ���� �� SQL �� . . . 312
SQL ��� �� ���� ��� �� . . 313
iSeries Navigator� ��� �� � �� . . . . 313
iSeries Navigator� ��� �� � . . . . 313
iSeries Navigator� ��� �� �� . . . . 314
iSeries Navigator� ��� � ���� �� 315
iSeries Navigator� ��� � ���� �� 316
iSeries Navigator� ��� �� ���� �� 317
iSeries Navigator� ��� ��� �� . . . 318
��� � � � ��� . . . . . . . 318
���� � ��� �� . . . . . . . . 319
iSeries Navigator� ��� SQL ���� �� 319
iSeries Navigator� ��� �� ����� �
� . . . . . . . . . . . . . . . . 320
iSeries Navigator� ��� ��� �� ��
�� . . . . . . . . . . . . . . . 320
iSeries Navigator� ��� ��� �� ��
�� . . . . . . . . . . . . . . . 321
SQL ��� � . . . . . . . . . . . . 321
� 17 � ��� SQL �� . . . . . . . . 323
��� SQL� �� �� . . . . . . . . . 323
��� SQL � . . . . . . . . . . . 324
�� �� �� �� . . . . . . . . . 326
���. . . . . . . . . . . . . . . 326
��� �� �� �� . . . . . . . . . 329
�� ��� �� . . . . . . . . . . . 332
��� SQL ��� . . . . . . . . . . 333
� SQL �� �� . . . . . . . . . . 334
SQL �� �� . . . . . . . . . . . 334
��� SQL� ��� ������ �� . . 334
� 18 � SQL� ���� �� . . . . . . . 337
�� �� � �� �� . . . . . . . . . 338
SQL� ����� �� �� . . . . . . . 339
SQL� ����� ��� . . . . . . . . . 339
SQL� ���� �� �� �� ��� . . . 340
� 19 � iSeries� DB2 UDB �� �� . . . 343
SQL ���� �� �� . . . . . . . . 343
�� ID. . . . . . . . . . . . . 344
vi iSeries� DB2 UDB SQL ����� �� V5R2
||
||
||
||
||
�� . . . . . . . . . . . . . . . 344
��(auditing) . . . . . . . . . . . . 344
iSeries Navigator� ��� �� �� . . . . . 345
���� �� �� � �� . . . . . . 345
��� ���� �� ��� �� � �� 346
���� �� ��� �� �� �� 346
�� � . . . . . . . . . . . . . . 347
���. . . . . . . . . . . . . . . 347
���. . . . . . . . . . . . . . . 349
�� �� . . . . . . . . . . . . . 350
���. . . . . . . . . . . . . . . 354
��� � . . . . . . . . . . . . . 356
���� . . . . . . . . . . . . . . 358
��/�� . . . . . . . . . . . . . . 359
�� �� �� . . . . . . . . . . . . 360
�� �� . . . . . . . . . . . . . 360
���� � . . . . . . . . . . . 361
��� �� ���� �(ASP) . . . . . . 362
�� �� ���� �(IASP) . . . . . . . 362
� 20 � ������ ����� �� SQL�
���. . . . . . . . . . . . . . . . 363
�� �� � . . . . . . . . . . . . 363
�� �� �� �� . . . . . . . . . 364
SQL ������ ���� �� . . . . . . 364
���� ��� ��. . . . . . . . . . 365
�� � �� . . . . . . . . . . . . 365
� 21 � �� ��� ������ �� . . . . 367
iSeries� DB2 UDB � ��� ������ �
� . . . . . . . . . . . . . . . . . 368
iSeries� DB2 UDB � ��� ������ �
���� . . . . . . . . . . . . . . . 369
SQL ��� �� . . . . . . . . . . . . 370
SQL ���� ��� SQL� . . . . . . . 371
SQL ��� � �� ���� . . . . . 371
SQL �� CCSID ���� . . . . . . . 374
� ��� �� �� . . . . . . . . . . 375
� � �� . . . . . . . . . . . . 375
PGM1 �� �� ��: . . . . . . . . 376
PGM2 �� �� ��: . . . . . . . . 377
PGM3 �� �� ��: . . . . . . . . 377
�� ��� �������� � � . . 379
��� �� �� �� ��� � �� . . 380
���� �� �� �� ��� � �� 380
� �� . . . . . . . . . . . . . . 381
� �� �� . . . . . . . . . . . . 382
�� �� �� ���� . . . . . . . . 385
� � �� . . . . . . . . . . . . 385
� � �� � ����. . . . . . . 387
� � . . . . . . . . . . . . . 388
� � ��. . . . . . . . . . . . . 389
� � �� � �� . . . . . . . . 389
�� � ��� �� . . . . . . . . . 392
������ ���� ���� ���� . . . . 392
��� �� . . . . . . . . . . . . . . 393
DRDA �� ����� ���� . . . . . . 394
�� A. iSeries� DB2 UDB �� � . . . . 395
�� �(DEPARTMENT) . . . . . . . . . 396
DEPARTMENT . . . . . . . . . . . 397
�� �(EMPLOYEE) . . . . . . . . . . 398
EMPLOYEE . . . . . . . . . . . . 399
�� �� �(EMP_PHOTO) . . . . . . . . 400
EMP_PHOTO . . . . . . . . . . . . 400
�� ��� �(EMP_RESUME). . . . . . . 401
EMP_RESUME . . . . . . . . . . . 401
���� �� �� �� �(EMPPROJACT) 401
EMPPROJACT . . . . . . . . . . . 402
���� �(PROJECT) . . . . . . . . . . 405
PROJECT . . . . . . . . . . . . . 405
���� �� �(PROJACT) . . . . . . . . 407
PROJACT . . . . . . . . . . . . . 407
�� �(ACT) . . . . . . . . . . . . . 409
ACT . . . . . . . . . . . . . . . 409
��� ��� �(CL_SCHED) . . . . . . . 410
CL_SCHED . . . . . . . . . . . . 410
� ��� �(IN_TRAY) . . . . . . . . . 411
IN_TRAY . . . . . . . . . . . . . 411
�� �(ORG) . . . . . . . . . . . . . 412
ORG . . . . . . . . . . . . . . . 413
�� �(STAFF) . . . . . . . . . . . . 413
STAFF . . . . . . . . . . . . . . 413
�� �(SALES) . . . . . . . . . . . . 415
SALES . . . . . . . . . . . . . . 415
�� B. iSeries� DB2 UDB CL �� �� . . 417
CRTSQLPKG(��� �� �� ��� �) � 417
DLTSQLPKG(��� �� �� ��� ��) � 421
PRTSQLINF(SQL(��� �� ��) �� � )
� . . . . . . . . . . . . . . . . 423
RUNSQLSTM(��� �� ��� ��) � . . 424
STRSQL(��� �� �� �) � . . . . . 435
�� vii
||
||
�� �� . . . . . . . . . . . . . . 445 � . . . . . . . . . . . . . . . . 447
viii iSeries� DB2 UDB SQL ����� �� V5R2
iSeries� DB2 UDB SQL ����� �� ��
� �� ������ ������ ���� ���� ���� SQL ����� �
� ���.
v iSeries� DB2 UDB �� ���� ��� ��
v ������� �� ��� ��
v SQL� ��� ������ ���� ��, �� � ��� ��
������ ����� ��� ��� �� iSeries� DB2 UDB SQL ��
� �� ��� ��� iSeries Information Center� ��� � �����.
v SQL ���
v ��� ��� �� iSeries� DB2 UDB SQL �����
v iSeries� DB2 UDB ������ �� � �� ���
v SQL �� �� ����(ODBC)
v SQL ��� � ��
� ��� �� ��� ��� ��� ��� �����.
v �� �� ����
v x ��� �SQL� �� ��� ���
v x ��� ��� ���� ���
v xi ��� �� ���� �� ����� �� ���
v xii ��� �SQL ����� �� �� V5R2 ��� ��� ���
� �� ���
� ���� iSeries� COBOL, iSeries� ILE COBOL, iSeries PL/I, iSeries� ILE
C, ILE C++, REXX, RPG III(iSeries� RPG� �) �� iSeries� ILE RPG �
� ��� ��� ��� �� ���� �� ��� �� ������
������ ��� �� ������ ������ ������ ����� �
��� �.
�� �� � �����.
v x ��� �SQL� �� ��� ���
v x ��� ��� ���� ���
v xi ��� �� ���� �� ����� �� ���
© Copyright IBM Corp. 1998, 2002 ix
SQL� �� ��� ��
� � �� �� SQL�� �� � A, iSeries� DB2 UDB � �� ���
� � ����, �� ��� � ���.
v ��� SQL ��� ����� ILE C �� COBOL� � ��. EXEC SQL
� END-EXEC� COBOL ����� SQL� � � �� ���.
COBOL ����� SQL� ��� �� �� ��� ″COBOL ����
�� SQL� ���″ ���� ���. ILE C ����� SQL� ��
� �� �� ��� ″C ������ SQL� ���″ ���� ���.
v � SQL ��� � ��� ���� ��� � �� �� �� ��� ���
�.
v SQL ���� ������.
v � A, iSeries� DB2 UDB � � ��� � ���� ��� CORPDATA
� ���. � � �� � ��� ���� �� ���� ����
�.
v ���� �� �� ()� �� []�� ��.
v SQL �� ��� ����.
v APOST � APOSTSQL ����� ��� COBOL� ��� ��� �
� ���� ����. SQL � ��� �� �� �� �� ��� ����
������(’)� � ��.
v � �(note)� �� �, *HEX� �� ��� ����.
v �� � ��� SQL�� ��� ��� ���� �� ���. � ��� �
�� �� �� ��� ��� �� ���� SQL ���� �����.
��� ��� ��� �� ��� ����.
� �� ������ ������ �� ���� �� � ��� ������ ��
��� �� ��� ����. ��� �� ��� �� ��� ��� ��
� SQL �� ����� �� ���. ��� SQL ���, SQL�� �
�� �� ��� ���� ��� �� ��� �� ��� ��.
�� ���� ��
� ��� ����� ��� �� ���.
IBM� �� ��� �� �� �� �� �� �� ��� �
�� ����� �� ��� ��� �� ����� � �� ��.
�� � ��� IBM �� �� ����� ����. ��� ��� �� ��
� �� ��� �� ���. ��� IBM� �� ����� ���, ��
� �� �� �� ��� ���.
x iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
� ��� �� ����� ��� � �� ��� �� �� ��� ��
�� ��� �� �� �� ″����″ ����.
� ���� �� ����� �� ��
� ��� ��� �� ��� �� �� ���.
v �� ������ �� ����, �� ��� ��� ��� �� �� �
�� ��� � ���.
��─── ��� ��� � ����.
───� ��� �� ��� �� � �� ����.
�─── ��� ��� �� �� �� �� ����.
───�� ��� ��� � ����.
�� ��� ���� ��� �� �� ��� ������� �─── ��� �
───� ��� ���.
v � ��� �(�� ��)� ����.�� required_item ��
v �� ��� ��� �� �� � ����.�� required_item
optional_item��
�� ��� ��� �� �� � ����, � ��� ��� �� ��
�� ��� ��� ������ ���� ���.
�� required_itemoptional_item
��
v ��� ��� ��� ��� ���� ��� �� ����.
�� � �� ���� � ��, ��� � ��� �� �� ����.�� required_item required_choice1
required_choice2��
�� �� ��� �� ��� �� �� ��� �� ��� �� ��
� ����.�� required_item
optional_choice1optional_choice2
��
�� � �� ����� � ���� �� �� � ���� ��� ����
�� �� �� � ����.
�� required_itemdefault_choice
optional_choiceoptional_choice
��
v ��� �� �� �� �� ��� ��� �� ��� ��� �� ��
��.
iSeries� DB2 UDB SQL ����� �� �� xi
|
|
�� required_item � repeatable_item ��
�� �� �� �� ��� ���� ��� �� ��� �.
�� required_item �
,
repeatable_item ��
�� �� �� ��� �� �� ��� ��� �� ����.
v ���� ���� ����(�� �� FROM) ��� �� ��� �� ����
�. �� �� �� ���� ����(�� �� column-name) ��� ��
���� ����.
v ���, ��, �� ��� �� �� �� �� ���� ���� ��� � �
��� ��� ���� �.
SQL ����� �� �� V5R2 ��� ��� ��
� ��� �� �� �� ����� ��� ���.
v ��� �� � ��. ����� 221 ��� ���� �� ��(UDF)� ��
���.
v ���� �� ��� �� ��. ����� 272 ��� ��� �� �� ��
�� �� ��� �����.
v ���. ����� 354 ��� ����� �����.
v �� �
v �� �. ����� 56 ��� ��� � � � ��� �����.
v ��� � ��
v SQL ����� ���. ����� 185 ��� ��� ����� ����� �
����.
xii iSeries� DB2 UDB SQL ����� �� V5R2
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) ��
�� ���� iSeries� DB2 UDB� DB2 UDB �� ��� � SQL �� � �
� 5 �� ���� ��� SQL(��� �� ��)� iSeries �� �� ��
���. SQL� ��� �� �� �� ��� ���. SQL�� �� ��
���� ���� �� � ���� ����� �� ���.
SQL� ������ �� ��� ��� �� � � �� ��� �
�� �� ����.
� ��� �� ��� ���.
v �SQL ���
v 6 ��� �SQL �����
v 11 ��� ������� ���� �����
SQL� IBM Distributed Relational Database Architecture*(DRDA*)� �� �
�� ��� ������ �� �� ��� ���. � ��� � ����
� 21 � � � ��� ������ ��� ��� ���. DRDA �� �
�� ��� � ������ ����� � �� ���.
SQL ��
iSeries� DB2 UDB SQL� ��� �� � �� ����.
v SQL ��� ��
SQL ���� SQL� �� �� SQL� ��. � �� ���
Operating System/400*(OS/400) �� ����� �� DB2 UDB �� ��
� � SQL �� � �� ����� ���� �� �� ���� SQL�
��� ������� �� � �.
v SQL �����
SQL ������ ��� �� ��� SQL�� ���� ���. �
� ��� ����.
– ILE C
– iSeries� ILE C++
– ILE COBOL
– iSeries� COBOL
– iSeries PL/I
– RPG III(iSeries� RPG� �)
© Copyright IBM Corp. 1998, 2002 1
– ILE RPG
SQL ��� �� ������ SQL�� �� �� ������ ���� �
��. �� � ��� �� ���� ����� ��� �� ���� �
��. ���� �� ��� ��� ��� ��� ��� SQL ����
� ��� SQL� ��� ���� �� � �� ��� �����. ���
�� ��� DB2 UDB �� ��� � SQL �� � �� ����� � �
��.
v SQL ��� ����
SQL ��� ����� ��� SQL� �� �� ���. ��
� SQL �� ��� ��� � 17 � ���� SQL ��� �����. �
�� SQL� DB2 UDB �� ��� � SQL �� � �� ����� � �
��.
v SQL ���� ��
iSeries Navigator� SQL ���� �� � �� SQL�� ����� �,
��, �� � ��� �� ���. SQL ���� ��� iSeries Navigator
� ���. �� ��� 309 ��� �SQL ���� �� �� ���
��� ���� �����.
v SQL� CL �� ��
RUNSQLSTM ��� �� � ���� �� �� SQL� ���
���. SQL� �� � �� ��� ��� � 18 � �SQL� ���� �
�� �����.
v iSeries� DB2 �� ���
iSeries� DB2 �� ���� ��� �� ��� ������ ���� �� �
� ��� �� �� � ���� ������ �� ���� ��
���. �� ���� DB2 UDB �� ��� � SQL �� � �� ���
�� � � ��. ��� ��� �� ��� ��� �����.
v SQL REXX ����
SQL REXX ����� ��� REXX ������ SQL� ��� �
��. REXX ������� SQL� �� �� ��� ��� ��� ��
� ��� SQL ����� �� �� REXX ������� SQL� ��� �
�� �����.
v SQL �� �� ����
iSeries� DB2 UDB� SQL �� �� ����� ���. �� �����
� �� ILE ��� ����� ���� ��� ��� ���� �� ���
�� �� �� � SQL �� ��� ���. SQL �� �� ��
��� ��� ���� � �� �� SQL �� ��� ���.
��� SQL� ��� SQL� ��� �� � �� �� �� ��
2 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
��� �� ���� �� �� � ��� ���� �� �� �� �
��� �� �� �� �� �� ���.
��� �� �� ��� �� �� ��� ��� SQL �� �� ���
�(ODBC) � �����.
v QSQPRCED API
� ������ ���� ����(API)� ��� �� SQL �� ���.
SQL�� SQL ���� ��� �� � API� �� ��� ���. �
API �� ���� ��� ��� ���� ��� ����� ��� � �
����. QSQPRCED� OS/400 �� ����� � � ��. QSQPRCED
API �� ��� ��� iSeries Information Center� ����� ��
QSQPRCED ��� �����. API �� � ��� iSeries Information
Center� OS/400 API ��� �����.
v QSQCHKS API
� API ��� SQL� ���. QSQCHKS� OS/400 �� ����� �
� ��. QSQCHKS API �� ��� ��� iSeries Information Center�
����� �� QSQCHKS ��� �����. API �� � ��� iSeries
Information Center� OS/400 API ��� �����.
v DB2 Multisystem
�� �� ���� ���� ��� �� ���� ��� � �� ���
���. DB2 Multisystem �� ��� ��� DB2 Multisystem � �
����.
v DB2 UDB � � �����
�� �� ���� ���� ��� �� ���� � ��� ���� ��
�� � �� ��� ���. � � �����(SMP)� ���� ��
� �� ��� �� ����(CPU � I/O ����)� �� � ��
�� �� �� � ���� �����. � ��� ������ �
��� �� ��� ��� ��� �� ��� �� �� ��� �
� ���. � �� �� �� �� ����� ������ �� � �
� ��� ��� ��, � �� ��� �����.
��� ��� ��� � �����.
v �SQL ��� ������ � ��� ���
v 4 ��� �SQL�� ���
v 6 ��� �SQL �� ��(SQLCA)�
SQL ��� ������ � ��� ��
��� ��� �� ��� � �� ��� ����. iSeries� DB2 UDB
����� ��� ����� ��� �����. �� ��� ��� ���
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 3
SQL ��� ������ �� ��� ��� ���. �� � ���� �
� �� ������ ����� �� ��� ��� ������ ����� �
�����.
� 1. ��� ��� SQL �� ��� ��
��� �� SQL ��
�����. �� ����� ��� ����
������.
���. �����, ��, �� ���, SQL ��
�� � ���� �� ���� ����. ��
�� ��� ����� ���� �����
���� � �.�� ��(PF). �� ��� �. �� �� �
��. �� �� �. �� �� �� �� �� �
�. �� �� �� �� � ��� ��
�� ��
�. �� �� �� �� �� � �
�� ��. � ��� �� �� ��� ��
�� ����
��. � ��� � �� �� �� ����
SQL ���. SQL� ��� ��� ����
��
���. SQL� ��� ��� ���� ��
��� ���� ���� �� �� ID
�� �� �����.
v �SQL � ��� �� ���
SQL � ��� �� ��
iSeries� DB2 UDB ������ ��� �� �� ��� � ��(���
(*SYS) � SQL(*SQL))� ���. ���� �� ��� ��� SQL ��� �
��� �, � ��, ��� ��� �� �� ���. ���� �� �
�� SQL �� ��� �� ����� REXX� �� SET OPTION� �
� ����. ��� ��� SQL ���� ����� �� ������ �� �
����.
��� ��(*SYS): ��� �� ���, SQL�� � � � SQL �����
�� �� ������ ����.
schema/table
SQL ��(*SQL): SQL �� ���, SQL�� � � � SQL ����� �
� �� ������ ����.
schema.table
SQL�� ��
��� ��� SQL� �� ����.
v DDL(data definition language)�
v DML(data manipulation language)�
v �� SQL�
4 iSeries� DB2 UDB SQL ����� �� V5R2
v �� ��
SQL�� SQL ��� � ��� ��� ���� ����� ��� �� �
� � �� � � �� �� SQL �� �� ����� �� �
��. ���� �� � �� IDDU �� ��� ���� ���. ����
�� �� � �� �� ��� ����.
SQL DDL� SQL DML�
ALTER TABLE
COMMENT ON
CREATE ALIAS
CREATE DISTINCT TYPE
CREATE FUNCTION
CREATE INDEX
CREATE PROCEDURE
CREATE SCHEMA
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DECLARE GLOBAL TEMPORARY TABLE
DROP ALIAS
DROP DISTINCT TYPE
DROP FUNCTION
DROP INDEX
DROP PACKAGE
DROP PROCEDURE
DROP SCHEMA
DROP TABLE
DROP TRIGGER
DROP VIEW
GRANT DISTINCT TYPE
GRANT FUNCTION
GRANT PACKAGE
GRANT PROCEDURE
GRANT TABLE
LABEL ON
RENAME
REVOKE DISTINCT TYPE
REVOKE FUNCTION
REVOKE PACKAGE
REVOKE PROCEDURE
REVOKE TABLE
CLOSE
COMMIT
DECLARE CURSOR
DELETE
FETCH
INSERT
LOCK TABLE
OPEN
RELEASE SAVEPOINT
ROLLBACK
SAVEPOINT
SELECT INTO
SET �
UPDATE
VALUES INTO
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 5
|||||||||||||||||||||||||||||||||||||
|||||||||||||||
|
� SQL� �� ���
DESCRIBE
EXECUTE
EXECUTE IMMEDIATE
PREPARE
BEGIN DECLARE SECTION
CALL
CONNECT
DECLARE PROCEDURE
DECLARE STATEMENT
DECLARE VARIABLE
DESCRIBE TABLE
DISCONNECT
END DECLARE SECTION
FREE LOCATOR
HOLD LOCATOR
INCLUDE
RELEASE
SET CONNECTION
SET OPTION
SET PATH
SET RESULT SETS
SET SCHEMA
SET TRANSACTION
WHENEVER
SQL DDL�� 53 ��� � 4 � �DDL(Data Definition Language)� ���
� ���. SQL DML�� 69 ��� � 5 � �SELECT� �� ��
�� � 105 ��� � 6 � �SQL ��, �� � ��� ���� ���. �
�� �� ��� �� SQL ���� ��� ���.
SQL �� ��(SQLCA)
SQLCA� �� SQL�� �� ��� ���� � ����. ����� SQL
�� ��� ����� �� �� SQLCA� ���� �(��� SQLCODE
�� ��� SQLSTATE �� �� ���� ��� ����). ��� ���
iSeries Information Center� SQL ��� �� SQL �� �� ��� ����
�.
SQL ����
SQL ����� ���, �� ��, ��, ����, �, ��, ��, ��, ����,
���, �� �����, ��� �� ��, ��� �� �� � SQL �����.
SQL� ��� ����� ��� ����� �� ����. ��� ��
� ���� �� ��� ����.
v 7 ��� �����
v 7 ��� ��� ���
v 7 ��� ���� �� ����
v 8 ��� ������
6 iSeries� DB2 UDB SQL ����� �� V5R2
|||||||
|||||||||||||||||||||
|
|
|
|
v 8 ��� ��, � � ��
v 8 ��� ����
v 8 ��� ����
v 9 ��� ����
v 9 ��� ������
v 10 ��� �����
v 10 ��� ��� ������
v 10 ��� ���� �� ���
v 10 ��� ���� �� ���
v 10 ��� �SQL ����
���
���� SQL ����� � �� ���. ���� �����, ��, ��
���, ����� ���� �� �� ��� ���. �, �� � ��� �
���(�: ����)� ��� ������ �, �� �� ��� ���. SQL
��� �� ��� ���� �� ��, �� ��� �� SQL ���� ��
�� ��� ���. SQL ��� �� ��� ��� ��, ��� �� ��
� ���.
v ��� �� �� �� ��� ��� �� �� SQL ���� �, ��
�� ��� ���.
v � �� �� ��� ��� ���� SQL ��� �� ���.
��� ���� �� ��� ���. �� ��� ���� ���� �
�� ���.
�� ��
���� �� 3 ��� 1 ��� ����� CREATE SCHEMA� WITH
DATA DICTIONARY �� ��� ��, ��� �� ��� ����. �� �
� ���� ��� ��� � ����. SQL� �� �� �� ���
���� ��� �� �����. ���� OS/400 ����� �� ���
�� �� ����(IDDU)� �� �� �� �� �� ���. IDDU
�� ��� ��� IDDU �� �����.
��� �� ���
��� �� ���� ������ �� �� �� �� �� � �� ���
�. �� ��, �� � �� ���� SQL COMMIT, ROLLBACK, SAVEPOINT
� RELEASE SAVEPOINT� �� ����. ��� �� ���� �� ��
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 7
���� ����� ��� �� ���� �� ��� ��� ���. ��
� �� ��� ��� ��� ��� �����. �� �� �� ��� ��
� �� �� ��� �����.
����
SQL ����� �, ��, ��, ���, �����, �, ��� � ���� ��
� �� �� ��� ����. � ��� ����� QSYS� QSYS2 ��
�� �� ��� ����. � SQL ���� ���� �, ��, ��, ���,
� � ���� �� ��� �� �� ���� � �� �� �� ���
���.
����� ���� �� � ���� ���. ����� ���� ����
� ��� �� ����.
SQL ���� �� ��� ��� SQL ��� �� ���� ��� ���
��.
�, � � �
�� �� �� ��� ��� 2�� ���. �� � ��� �� �� ��
� ��. �� � �� ��� ��� � � �� ��� �� � � �
�. � �� �� ��� �� ����� �. SQL� �� �� ��� ��
�� �� ���. �� �� �� ��� SQL ���� �� �� ��� �
����.
�� ��� � �� ��� ���. �� �� ��� ��� DB2
Multisystem �����.
��
��� � �� �� �� �����. � �� ��� ��� �� ��
�� �� � �� ��� ��� ���. ���, ��� � ���
� � ��� ���. �� �� ��� ��� SQL ���� �� ���
�����.
��
��� ������ ���� �� �� ��� ��� ��� ���. ��
� ��� ���� ���. ��� ��� �� �� ��� ����� ��
��� ��� ��� �� �� ��� ���� �� ��� ���. ��
��� � � �� ��� ��� �� � �� ���. SQL� ���
�� �� � �� � ����.
�� �� ��� ��� iSeries Information Center� SQL ��� �� ���
�����.
8 iSeries� DB2 UDB SQL ����� �� V5R2
��
SQL �� ���� �� ������ ���� �� � � �� ��� �
�����. � ��� ����� ��� ���. ��� �� ���(ORDER
BY�), ���(GROUP BY�) � �� ����. SQL ��� �� ��
� ���.
��� �� �� �� � �� ��� �� ����. �� �� �� �
���. �� �� �� �� ���. ��� �� ��� ��
� ���. ��� ��� �� ����� �����. ��� ��� �
�� �� ������ �� � ��� �� ��� ������ � �
� �� �� ���.
���� �� ��� �� ��� ��� iSeries Information Center� ���
��� �� � �� ��� �� � � ��� ��� �� �� �� ���
�����.
����
����� ������ ��� �� ���� ����. iSeries� DB2 UDB
�� ��� ���� ��� ���.
v �� ����
�� ����� � � ��� ��� ���� ����. CREATE TABLE
� ALTER TABLE� �� �� ���� �� ���. ��
CREATE INDEX� ��� ��� �� �� �� ���, �� ��
��� ����� ���.
�� ����� INSERT � UPDATE�� ��� ����. PRIMARY KEY
����� UNIQUE ����� � ����. PRIMARY KEY� ��� � �
� � ��� ��� �� ���.
v �� ����(referential constraints)
�� ����� ��� ��� �� �� � ���� ����.
– �� �� � �� �� �� ��� � ��
– �� �� � ����� �(null) �
�� ����� INSERT, UPDATE � DELETE�� ��� ����.
v �� ����(Check constraints)
� ����� � �� � �� ���� ��� ����. �� ��
��� CREATE TABLE � ALTER TABLE� �� ��� ���.
�� ����� INSERT � UPDATE�� ��� ����. ���� ���
��� �� �� �� ��� � �� TRUE �� � ��(� �� ��)
�� ����� �.
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 9
���� �� ��� ��� � 10 � ��� �� �����.
���
��� �� ���� ��� ��� �� ��� ��� ���� ���� ��
� ����. ���� ��,��,�� �� �� �� � ���. ���� �
�� �� �� �� �� ���. iSeries� DB2 UDB�� SQL ��,
�� � �� ���� �� ���� ���. ��� �� ��� ��� � �
� � 10 � ��� �� ���� ������ ������ ������
� �� ��� ��� ��� �����.
�� �����
�� ������ SQL CALL� �� ��� �� ������. iSeries�
DB2 UDB� �� �� ������ SQL ������ ���. �� �� ��
���� �� ��� ���� �� REXX ������ � ���. ���
System/36 ������ �����, �� ��� ����� � ���. SQL �
����� ����� SQL ���� SQL ���� �� �� SQL ���
���. �� ����� �� ��� ��� � �� � 11 � ��� ����
�� ��� �����.
��� �� ��
��� �� ��� �� ��� �� ��� �� ������. iSeries� DB2
UDB� �� ��, SQL �� � �� �� ���. �� ��� �� ���
ILE ������ ��� ����� � ���. SQL ��� ����� SQL
� ���� SQL ��� �� SQL�� � ���. �� ��� ���
�� �� ��� �� �� �� ���. SQL �� �� �� � �� �
�� � �� � �� �� ���. ��� �� �� �� ��� ��
� 259 ��� � 13 � ���� �� ��(UDF) �� �����.
��� �� ��
��� ��� ��� ���� ������ �� ��� �� ��� �� ���
��� ��� �� ��� �� ����. � ������ �� �� 1�
1 ��� ��� �� �� ��� �� �� �� ��� ��� 240 ���
���� ��� ��� ��(UDT)� �����.
SQL ���
SQL ���� ������ ���� �� SQL�� ��� ��� ������ �
� ���(DBMS) � � ��� �� ��� ��� ������. DBMS
� � �� ��� ��� ������ ���� �� ��� SQL� ��
�.
10 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
SQL ���� ��� �������(RDB ���)� SQL �(CRTSQLxxx) �
��� �� ���� ����� �� � ��� . �� ����
CRTSQLPKG � �� �� ���. ���� � ��� ���
��� �� �� ��� � 21 � � � ��� ������ ��� ���
��
SQL ���� QSQPRCED API� �� �� ���. � �� ��
� SQL ���� � ���� SQL ���� ���. QSQPRCED� �� �
� SQL �� ��� � SQL ���� ���. QSQPRCED �� ���
��� iSeries Information Center� OS/400 API � �� QSQPRCED ��� �
����.
�: � �� xxx� ��� �� ������ �����, ILE C ��� �� CI,
iSeries� ILE C++ ��� �� CPPI, iSeries� COBOL ��� �� CBL, ILE
COBOL ��� �� CBLI, iSeries PL/I ��� �� PLI, iSeries� RPG �
�� �� RPG � ILE RPG ��� �� RPGI� ����.
������ ���� ����
iSeries� DB2 UDB ������ ����� � ���� �� � �����
�� ���. � ��� ��� iSeries� DB2 UDB ������ � �
��� �� ���. iSeries� DB2 UDB� �ILE � ILE ���� ���
� ���. ������ ����� � ���� �� � � ����
���. iSeries� DB2 UDB ������ ���� � �� �� �
�� ��� �� �� SQL ����� � SQL� �� SQL ����� ��
� �����.
iSeries� DB2 UDB� ��� �� �� ����� ���� �.
v �� ��
v �� ����� ILE ���� �� �� ����
v ���� �� ��� ����
v � ���� �� SQL ���
� � �ILE iSeries� DB2 UDB ������� �� ��� � ����� �
��� �. ��� � � �ILE iSeries� DB2 UDB ���� �� ����
� �� ����� ��� ��� �� ��� ����� � ��.
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 11
� � ILE iSeries� DB2 UDB ������ �� ��, �� � � �����
� ��� ���� ���� �. ��� ���� � OBJTYPE(*PGM)
� ���� � � � ILE iSeries� DB2 UDB ���� �� ���� �
�� ��� ���� ����� ��� ��� ���.
� �ILE iSeries� DB2 UDB ������� �� ��, � ���� � �
���� ���� �. ��� � �ILE iSeries� DB2 UDB ���� ��
���� � �� ��� ��� ����� ��� ���.
� ILE iSeries� DB2 UDB ������� �� ��, �� ����, � ��
���� ��� ���� � � ���� ���� �. SQL ���� � ILE
������ ��� ����� ��� � �� �� �� ���. ��
� � ILE iSeries� DB2 UDB ���� �� ���� � �� ���
��� ����� ��� ���.
12 iSeries� DB2 UDB SQL ����� �� V5R2
�: iSeries� DB2 UDB � ���� ����� ��� �� �� �����
��� �� � � ��� ���.
��� ��� ��� � �����.
v ���� �� � ���
v ��� �� � ���
v ������
v 14 ��� ����
v 15 ��� ���� �����
��� �� � ��
�� � ��� ������ ������ ��� SQL�� �� ���.
iSeries� IBM WebSphere Development Studio �� ����� �� �� �
� ����(SEU)� �� �� � ��� �� ���� ���.
�� �� � ��
SQL ����� �� �� � ��� ��. ���� ���� ����
� QTEMP �� �� � QSQLTxxxxx� ��� �� ���� ����
� �� ���� �� �� � ��� ���. ���� ���
�� QTEMP ������ ����� ���� � ��� ���� � � �
��. ����� �� �� �� ��� �� �� � ����. � �
�� �� ���� ���.
v SQL ��� �� �� ��. �� ��� SQL� ���.
v ��� �� �� SQL�
������ ���� ��� �� ���� ���. ����� �� �
�� ��� ��� ��� ��� SQL ����� ��� SQL� ��� ���
� �� � �� ��� �����.
����
����� ���� �� �� �����, �ILE ��� ��� �� �
�� ��, ILE ��� ��� ��� �� ���.
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 13
�� �� ��� SQL� �� ����� �� �� SQL ����
�� ���� � ����. �� ����� ��� �� ��� ���.
�� �� ��� ��� ��� SQL� �� ���� �� ��� ��
�.
v �� � �� ��� ��� ��
v �� �� ���� � �� ��� ��� ��
��� �� �� �� �� ����� �� � ���. � � �
� ��� ��� �� ��� ��� SQLCODE� ���. �� �
� � � SQL ���� �� ���� ����� � SQL ���� ��
SQL ���� ���� �����.
SQL ���
SQL ���� � SQL ���� �� �� �� ����.
SQL ���� ��� �� ��� ������.
v CRTSQLxxx �� RDB ���� �� � SQL ����� �����
�� ��
v CRTSQLPKG(SQL ��� �) �� �� ��
� SQL ���� �� SQL ����� �� �� ��� � ���� ��
��. ��� SQL ���� � SQL ���� � ���� �� ��� ��
� �� ��� ����. � SQL ���� �� SQL ����� �� �
��� SQL ��� ��� �� �� �� ���.
v ��
v �� ��
v ��
v � ����� ��
��
��� CRTxxxMOD �(�� CRTBNDxxx �, �� xxx� C, CBL �� RPG)
�� �� ��� ������ �� ILE(Integrated Language Environment)
������. CRTPGM(���� �) � �� ����� ���� �
�� �� ��� ���. ��� � �� �� �� ����� ��
� �� �� ���� ���. ��� SQL� �� ��� ���. �
�� SQL �� �� ��� ������ ��� ������ � � ��
��� ���. CRTPGM(���� �) �� ��� ��� � �� ���
CRTPGM(���� �) � �����.
14 iSeries� DB2 UDB SQL ����� �� V5R2
��� ����
��� ����� �� �� �� �� ��(�� �� �����) ��� ���
�� ���� � ��� � �� ��(ILE) ������. � ���
� � � ��� ����� ��� ���� �� ��� ����� �����
����� � �� ��� ���. �� �� ����� �� �� ��
��� ��� � �����. �� �� ���� � ��� ��� ���
� � �� �� �� �� �����.
� 1 � iSeries� DB2 UDB ��� �� ��(SQL) �� 15
� 2 � SQL ��
� ��� ��� SQL� SQL� �� ���, � � ��� �� �
�� �� �� ���.
� �� ��� SQL� �� �� ��� SQL ��� ��� ���� ��
�. �� ��� �� SQL�� � ��� �� �� ��� 53 ���
� 4 � �DDL(Data Definition Language)�, � 5 � �SELECT� �� ��
�� � � 6 � �SQL ��, �� � ���� ���.
� � ��� �� ��� SQL ����� �� SQL� ��� � �
��. ��� SQL ������ �, �� � �� ����� ��� ��
SQL� ��� ��� ������� ��� �� �� ���.
����� �� ��� �����.
v ���� SQL ��
v 18 ��� ���� ��
v 18 ��� �� � � ���
v 21 ��� �LABEL ON� ���
v 22 ��� �� �� ���
v 25 ��� �� �� �� �����
v 28 ��� �� ��� �� �� �����
v 30 ��� ��� �� ���
v 33 ��� ��� �� ���
v 33 ��� ��� � � ���
�: �� � �� ��� x ��� ��� ���� ���� �����.
��� SQL ��
�� � �� ��� SQL ��� �� �����.
STRSQL NAMING(*SQL)
Enter �� ����. SQL �� ��� ���� SQL� ��� ��� � ��
�. ��� SQL � STRSQL � �� ��� ��� � 17 � ���� SQL
��� �����.
© Copyright IBM Corp. 1998, 2002 17
�� ��� SQL �� ���� ��� �� ��� ��� SQL ����
���� �. ��� F13(���) ��, �� 1(�� � ��) ��� ��
�.
��� ��
���� �, ��, �� � ���� ��� �� ������. ��� � �
� ��� ��� SQL CREATE SCHEMA �� �����.
�: �� ��� ���� ���� ��� ���.
��� SQL ��� ��� �� �� ��: ��� �(SAMPLECOLL)� �
����.
�: ��� �(SAMPLECOLL)
SQL� �� ��� ��� SQL� ��� Enter �� �� ���
SAMPLECOLL� � ���� �� ���.
SQL� ��
SQL�� ��� � Enter �� �����.�� ��� ��� ������ SYSTEM1� ���� ����.
===> CREATE SCHEMA SAMPLECOLL____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
� ��F3=�� F4=��� F6=� �� F9=�� F10=� ��F12=�� F13=��� F24=�� �
�: � �� �� � ����� ��� � �� ��� ��� ��
��.
���� ����� �� � � � �, �� � �� �� ���. �,
�� � ��� ��� �� ����� � �� ���.
� �� � ��
SQL CREATE TABLE �� �� �� �� ���. CREATE
TABLE�� �� �� � �� �� �� � ��� �� ����
��� ���� ��� �� �.
��� SQL� �� ��� �� � ���� 19 ��� ��: � �
(INVENTORY_LIST)� �����.
�� �� �, � � ��� � �� ��� �. � � � � ��
��� � ����. ��� �� �� �� ��� � �� ″� ��″
18 iSeries� DB2 UDB SQL ����� �� V5R2
���. �� �� � � � ���. �� �� � ��� ��
� � �� ��� �� ��� ��� ����� �.
��� � � � �� ���� �� � ��� � � � � � ���
�. �� � ��� ��� � ���� ��� ��� ��� � ����.
INSERT ���� ��� �� ��� ��� 105 ��� �INSERT �
� �� � ��� �����.
�: � �(INVENTORY_LIST)
�� ���� �� �� �� ��� ���� �� �� �� ���. �
� �� ��, ��, �� ���, � �� � � �� �� �� ��� �
���. ��� ���. ��� �(null)� � ���. ���, ��� �
���� ��� �� ��� ���. � ��� �� � ��
�.
SQL �� ��� CREATE TABLE ��� � F4(���) �� ����. �� �
�� ����(�� ��� �� ���� �� ���).
CREATE TABLE� ��
��� ��� � Enter �� �����.
� . . . . . . . . . . . INVENTORY_LIST______ ����� . . . . . . SAMPLECOLL__ ��, ���� �� F4
�: 1=NULL, 2=NOT NULL, 3=NOT NULL WITH DEFAULT
� FOR� �� �� �� �ITEM_NUMBER_______ ____________ CHAR___________ 6____ __ 2ITEM_NAME_________ ____________ VARCHAR________ 20___ __ 3UNIT_COST_________ ____________ DECIMAL________ 8____ 2_ 3QUANTITY_ON_HAND__ ____________ SMALLINT_______ _____ __ 1LAST_ORDER_DATE___ ____________ DATE___________ _____ __ 1ORDER_QUANTITY____ ____________ SMALLINT_______ _____ __ 1__________________ ____________ _______________ _____ __ 3
� ��� �� . . . . . . . . . . . . . . . . . N Y=�, N=������ . . . . . . . . . . . . . . . . . . N Y=�, N=���
F3=�� F4=��� F5=���� F6=� �� F10=� ��F11=�� �� �� F12=�� F14=� �� F24=�� �
�� ��� ��� �� ��� �� � ��� ����, INVENTORY_LIST�
SAMPLECOLL �����. � �� ���� ��� �� �� �� ��
� �� �� �� ����. ��� � �� � ��, �� �� ��, �
� �� � � � �����.
� � ��� �� �� � ��� F11 �� ����. ��� ���
� ��� ���.
� 2 � SQL � 19
CREATE TABLE� ��
��� ��� � Enter �� �����.
� . . . . . . . . . . . INVENTORY_LIST______ ��Collection . . . . . . SAMPLECOLL__ Name, F4 for list
�: 1=BIT, 2=SBCS, 3=MIXED, 4=CCSID
� � �� CCSID CONSTRAINT ���ITEM NUMBER_______ _ _____ _____ N __________________ITEM NAME_________ _ _____ _____ N ’***K v x=***’___UNIT_COST_________ _ _____ _____ N __________________QUANTITY_ON_HAND__ _ _____ _____ N NULL______________LAST_ORDER_DATE___ _ _____ _____ N __________________ORDER_QUANTITY____ _ _____ _____ N 20__________________________________ _ _____ _____ _ __________________
� ��� �� . . . . . . . . . . . . . . . . . N Y=�, N=������ . . . . . . . . . . . . . . . . . N Y=�, N=���
F3=�� F4=��� F5=���� F6=� �� F10=� ��F11=�� �� �� F12=�� F14=� �� F24=�� �
�: � ��� ��� � ��� ��� ���� � �� � � �� F4(�
��) �� �� ���. �� � � ��� �� �� � ���
�� ����.
�� � ���� �� Enter �� �� �� ����. SQL �� ��� ��
���� ���� ���� �� �� ����.
��� �� SQL �� ��� � CREATE TABLE��� � ��� ��
�.
CREATE TABLE SAMPLECOLL.INVENTORY_LIST(ITEM_NUMBER CHAR(6) NOT NULL,ITEM_NAME VARCHAR(20) NOT NULL WITH DEFAULT ’***UNKNOWN***’,UNIT_COST DECIMAL(8,2) NOT NULL WITH DEFAULT,QUANTITY_ON_HAND SMALLINT DEFAULT NULL,LAST_ORDER_DATE DATE,ORDER_QUANTITY SMALLINT DEFAULT 20)
��� �(SUPPLIERS) �
� �� � ��� �� 2� � ��� ��. � �� �� ��� ���,
�� ��, ��� �� �� �� ��� ����. �� ��� SQL ��
��� � ���� F4(���) �� �� �� � �� ��� SQL ��
�����.
CREATE TABLE SAMPLECOLL.SUPPLIERS(SUPPLIER_NUMBER CHAR(4) NOT NULL,ITEM_NUMBER CHAR(6) NOT NULL,SUPPLIER_COST DECIMAL(8,2))
20 iSeries� DB2 UDB SQL ����� �� V5R2
LABEL ON� ��
���� � ��� ��� SQL� SELECT�� �� ��� � � ��� �
���. LABEL ON� ������ � ��, � ��, ��� �� SQL ���
� �� �� ��� �� �� ���. ��� SQL� ��� ��
���� � ��� ��� �� LABEL ON� ���. � ��� ����
�� � � ��� � � ��� � � ����� ��� �� ����.
�� ��� � �� ��� ��� �� �� � � ���.
� �� �� ���� SQL �� ��� LABEL ON COLUMN ��� �
F4(���) �� ����. �� ��� ����.
LABEL ON� ��
����� ��� � Enter �� �����.
Label on . . . . 2 1=� �� ��2=�3=���4=��
� �� �� INVENTORY_LIST______ ��, ���� �� F4��� . . . . SAMPLECOLL__ ��, ���� �� F4
�� . . . . . . 1 1=� ��2=���
F3=�� F4=��� F5=���� F12=�� F20=��� ��F21=��� ��
�� ���� �� �� �� �� ���� �� ��� � Enter ��
����. �� ��� ���� ���� � �� ��� � ����.
� 2 � SQL � 21
LABEL ON� ��
��� ��� � Enter �� �����.
� ��� ....+....1....+....2....+....3....+....4....+....5....ITEM_NUMBER ’ITEM NUMBER’___________________________ITEM_NAME ’ITEM NAME’_____________________________UNIT_COST ’UNIT COST’_____________________________QUANTITY_ON_HAND ’QUANTITY ON HAND’_________LAST_ORDER_DATE ’LAST ORDER DATE’_________ORDER_QUANTITY ’NUMBER ORDERED’__________________________
� ��F3=�� F5=���� F6=� �� F10=� �� F12=��F14=� �� F19=��� � �� F24=�� �
� �� � ��� �����. � ��� 20�� �� ���� ����. � �
�� SELECT�� ��� ��� � �� � � ����. � �� �� ��
� � � ��� ��� ���� ��� �� ��� �� � �� ���
���. ��� ��� � Enter �� ����.
��� ���� LABEL ON�� ����� ���� ����.
SAMPLECOLL� INVEN00001� �� LABEL ON� ���.
���� � ��� ��� �� ��� ��� �� � �� ���� ��
�. iSeries� DB2 UDB� 10��� � �� �� � �� � �� ��
����. ��� � �� �� ��� ��� SQL ���� CREATE
TABLE� �����.
LABEL ON�� �� ��� �� SQL �� ��� � ��� ���.
LABEL ON SAMPLECOLL.INVENTORY_LIST(ITEM_NUMBER IS ’ITEM NUMBER’,ITEM_NAME IS ’ITEM NAME’,UNIT_COST IS ’UNIT COST’,QUANTITY_ON_HAND IS ’QUANTITY ON HAND’,LAST_ORDER_DATE IS ’LAST ORDER DATE’,ORDER_QUANTITY IS ’NUMBER ORDERED’)
�� �� ��
�� �� �� SQL INSERT �� �� ��(��)� � �� �� �
�� ���.
22 iSeries� DB2 UDB SQL ����� �� V5R2
��� SQL� �� � ��� ��� � ���� ��: � �� ��
(INVENTORY_LIST)� �����.
�: �� �� ��(INVENTORY_LIST)
SQL �� ��� ��� SQL �� ���, INSERT� ��� � F4(���)
�� ����. INSERT� �� ��� ����.
INSERT� ��
����� ��� � Enter �� �����.
INTO � . . . . . . . . INVENTORY_LIST______ ��, ���� �� F4��� . . . . . . SAMPLECOLL__ ��, ���� �� F4
INTO� ��� ��� . . . . . . . . . Y Y=�, N=���
�� �� . . . . . . . . 1 1=VALUES ��2=�� ��
����� ��� � Enter �� �����.
WITH �� �� . . . . . 1 1=�� ��, 2=NC (NONE)3=UR (CHG), 4=CS, 5=RS (ALL)6=RR
F3=�� F4=��� F5=���� F12=�� F20=��� ��F21=��� ��
��� �� �� �� �� � ��� ���� �����. INTO� ��� �
�� ���� �� �����. ��� � ��� �� �� ��� Enter
�� ����.
INSERT� ��
��� �� �� ��(1-999)� ��� � Enter �� �����.
Seq � �� �� �� ��1__ ITEM_NUMBER CHARACTER 62__ ITEM_NAME VARCHAR 203__ UNIT_COST DECIMAL 8 24__ QUANTITY_ON_HAND SMALLINT 4___ LAST_ORDER_DATE DATE___ ORDER_QUANTITY SMALLINT 4
� ��F3=�� F5=���� F12=�� F19=��� � �� ��F20=��� �� F21=��� ��
� ��� 4�� �� ��� ���. � �� ��� � ��� � �
��. � ��� �� ��� �� � � INSERT�� ���� ��� ���
�. ��� � ��� �� �� ���� Enter �� ����.
� 2 � SQL � 23
INSERT� ��
��� �� ��� � Enter �� �����.
� �ITEM_NUMBER ’153047’_____________________________________________ITEM_NAME ’Pencils, red’_______________________________________UNIT_COST 10.00________________________________________________QUANTITY_ON_HAND 25___________________________________________________
� ��F3=�� F5=���� F6=� �� F10=� �� F11=�� ��F12=�� F14=� �� F15=� �� F24=�� �
�: �� ��� �� � �� �� ��� �� ��� F11(�� ��) ��
����. � �� �� ��� ��� ��� ��� � ��� �
���.
�� � ��� ��� � Enter �� ����. � ��� �� �
����. ���� �� � � ��� � ����.
LAST_ORDER_DATE� ��, ���� ���� �� � �� � ����
� � ����. ORDER_QUANTITY� ��, CREATE TABLE�� ���
�� ��� 20� ����.
INSERT�� ��� �� SQL �� ��� ��� ���.
INSERT INTO SAMPLECOLL.INVENTORY_LIST(ITEM_NUMBER,ITEM_NAME,UNIT_COST,QUANTITY_ON_HAND)
VALUES(’153047’,’Pencils, red’,10.00,25)
� �� � ���� SQL �� ��� F9( �) �� ����. ��� �
�� INSERT�� �� �� ����. �� INSERT�� � ����
F4(���) �� �� ��� SQL �� �� ��� ��� ���.
INSERT�� �� � �� � � �����. ��� � ����
�� � ��� ���� ���� ����. INSERT� � ��� �
��� � ��� �����. �� �� � �� � ���� � �� �
� ITEM_NUMBER� UNIT_COST� ��� �� � �� � �� �
24 iSeries� DB2 UDB SQL ����� �� V5R2
VALUES ��� ���.
ITEM_NUMBER ITEM_NAME UNIT_COST QUANTITY_ON_HAND
153047 Pencils, red 10.00 25
229740 Lined tablets 1.50 120
544931 5.00
303476 Paper clips 2.00 100
559343 Envelopes, legal 3.00 500
291124 Envelopes, standard
775298 Chairs, secretary 225.00 6
073956 Pens, black 20.00 25
�� � SAMPLECOLL.SUPPLIERS � �����.
SUPPLIER_NUMBER ITEM_NUMBER SUPPLIER_COST
1234 153047 10.00
1234 229740 1.00
1234 303476 3.00
9988 153047 8.00
9988 559343 3.00
2424 153047 9.00
2424 303476 2.50
5546 775298 225.00
3366 303476 1.50
3366 073956 17.00
�� � ���� �� � �� �� �� �� � �� �� �� ���.
�� ��� �� ����
�� � ��� �� �� ��� �� ��� �. SQL�� SELECT��
� �� ��. SELECT�� �� SQL� � �� ����. � ��� �
�� �� �� ����.
1. ��� ��� ��� �� �� ��� SELECT�
2. ��� ��� �� � ��� �� �� ��� FROM�
3. ��� ��� � �� �� �� ��� WHERE�
� �� �� � � � ��� � � �� �� � � �� 69
��� � 5 � �SELECT� �� �� �� � SQL ��� ���� ��
�.
� 2 � SQL � 25
INVENTORY_LIST � ��� ��� SELECT� ��� � F4(���) ��
����. �� ��� ����.
SELECT� ��
SELECT� ��� ��� � ���� ��� F4� �����.
FROM � . . . . . . . . . . SAMPLECOLL.INVENTORY_LIST____________________SELECT � . . . . . . . . *____________________________________________WHERE � . . . . . . . . . _____________________________________________GROUP BY� . . . . . . . . . _____________________________________________HAVING � . . . . . . . . _____________________________________________ORDER BY � . . . . . . . . _____________________________________________FOR UPDATE OF � . . . . . _____________________________________________
� ������� ��� � Enter �� �����.
� �� DISTINCT � . . . . . . . . . . . . . N Y=�, N=���� SELECT UNION . . . . . . . . . . . . . . N Y=�, N=����� �� �� . . . . . . . . . . . . . . . . . N Y=�, N=���
F3=�� F4=��� F5=���� F6=� �� F9=�� �� ��F10=� �� F12=�� F14=� �� F15=� �� F24=�� �
� �� ��� FROM � �� �����. �� �� � ����, *�
��� SELECT � �� �����. Enter �� �� � �� � �� �
� ��� ��� ��� ���. �� ��� ����.
� ��� � . . . . . . : 71
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+....5....+....6....+....7.ITEM ITEM UNIT QUANTITY LAST NUMBERNUMBER NAME COST ON ORDER ORDERED
HAND DATE153047 Pencils, red 10.00 25 - 20229740 Lined tablets 1.50 120 - 20544931 ***UNKNOWN*** 5.00 - - 20303476 Paper clips 2.00 100 - 20559343 Envelopes, legal 3.00 500 - 20291124 Envelopes, standard .00 - - 20775298 Chairs, secretary 225.00 6 - 20073956 Pens, black 20.00 25 - 20******** �� � ********
F3=�� F12=�� F19=� F20=�� F21=��
LABEL ON� �� ��� � ��� ����. � �� ���
ITEM_NAME� CREATE TABLE� ��� ��� ���.
QUANTITY_ON_HAND �� � ���� �� � �� � ���.
LAST_ORDER_DATE �� � �� INSERT� � �� � �� ���
��� �� ���� ��� �� �� � � ����. �����
ORDER_QUANTITY �� �� � ��� � ����.
� ��� ��� �� SQL �� ��� ��� ���.
26 iSeries� DB2 UDB SQL ����� �� V5R2
SELECT *FROM SAMPLECOLL.INVENTORY_LIST
SELECT� �� ��� �� � ���� ���� ��� �� �����
�. ��� �� �� � ����� WHERE�� ����. ��� 10
��� ��� ��� �� ITEM_NUMBER, UNIT_COST � ITEM_NAME
�� � ����� SELECT� ��� � F4(���) �� ����. SELECT
� �� ��� ����.
SELECT� ��
SELECT� ��� ��� � ���� ��� F4� �����.
FROM � . . . . . . . . . . SAMPLECOLL.INVENTORY_LIST____________________SELECT � . . . . . . . . ITEM_NUMBER, UNIT_COST, ITEM_NAME____________WHERE � . . . . . . . . . UNIT_COST > 10.00____________________________GROUP BY� . . . . . . . . . _____________________________________________HAVING � . . . . . . . . _____________________________________________ORDER BY � . . . . . . . . _____________________________________________FOR UPDATE OF � . . . . . _____________________________________________
� ������� ��� � Enter �� �����.
� �� DISTINCT � . . . . . . . . . . . . . N Y=�, N=���� SELECT UNION . . . . . . . . . . . . . . N Y=�, N=����� �� �� . . . . . . . . . . . . . . . . . N Y=�, N=���
F3=�� F4=��� F5=���� F6=� �� F9=�� �� ��F10=� �� F12=�� F14=� �� F15=� �� F24=�� �
SELECT� �� ��� � ��� �� ��� � �� ����� �� � ��
� �� �� � ��� ���� F6(� ��) �� ��� ���. ��
� �� SELECT � ��� ����� � �� ��� WHERE ��� �
�� �� ��� ���.
� ��� �� �� �� �����. Enter �� �� SELECT�� ��
�. �� ��� ����.
� ��� � . . . . . . . : 41
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4.ITEM UNIT ITEMNUMBER COST NAME775298 225.00 Chairs, secretary073956 20.00 Pens, black******** �� � ********
F3=�� F12=�� F19=� F20=�� F21=��
��� ��� � ��� � WHERE� ��� ��� ���� ���. ��
�� ��� SELECT�� ����� ��� ���� ���. �� �� �
���� ��� � ��� � ��� ��� ���.
� 2 � SQL � 27
� ��� ��� �� SQL �� ��� ��� ���.
SELECT ITEM_NUMBER, UNIT_COST, ITEM_NAMEFROM SAMPLECOLL.INVENTORY_LIST
WHERE UNIT_COST > 10.00
�� ��� ��� �� ����
SQL�� � ��� � ��� ���� ��� � ���. � �
�� �( � �� �� ���, 88 ��� �� ��� ����
�� � ��). SQL� �� ���� SELECT�� �� FROM�
�� ���� � �� ����� ����.
���� �� ���, �� �� � ��� ��� ���� ���� ��� ��
� ���. � ���� SUPPLIERS � ���. ��� INVENTORY_LIST
� ���. � �, ITEM_NUMBER� �� � � ��� ��� � �
� � ��� � ���.
� ��� � �� � ��� �� ��� � ��� ��� ��� �
��� � �� �� ����� �. � SELECT�� � ��� � �
� �� ��� � �� � �� ITEM_NUMBER� ����. �� � ��
�� ��� ��� ��� ���� ��� �� �����.
� �� �� ��� SELECT�� ��� ���. SQL �� ��
� � ���� ��� �����. ���� ��� ��� � � ��
��� FROM � �� � ����� �.
SELECT SUPPLIER_NUMBER, SAMPLECOLL.INVENTORY_LIST.ITEM_NUMBER, ITEM_NAMEFROM SAMPLECOLL.SUPPLIERS, SAMPLECOLL.INVENTORY_LISTWHERE SAMPLECOLL.SUPPLIERS.ITEM_NUMBER
= SAMPLECOLL.INVENTORY_LIST.ITEM_NUMBER
�� �� ��� � �� ��� ��� ��� ���. ���� �
� ��� � ��� � �� ���. ���� � ��� �� � �
��� �. ��� FROM ��� �� ��� � �� �� ��� ��
�. �� �� ��� �� �� � ���.
SELECT SUPPLIER_NUMBER, Y.ITEM_NUMBER, ITEM_NAMEFROM SAMPLECOLL.SUPPLIERS X, SAMPLECOLL.INVENTORY_LIST YWHERE X.ITEM_NUMBER = Y.ITEM_NUMBER
� ��� SAMPLECOLL.SUPPLIERS� X� ����� ����
SAMPLECOLL.INVENTORY_LIST� Y� ����� ����. X� Y�
ITEM_NUMBER � �� ���� ����.
� � ��� �� ��� ��� iSeries Information Center� SQL ���� �
�� �����.
28 iSeries� DB2 UDB SQL ����� �� V5R2
� �� �� �� ��� ���.
� ��� � . . . . . . : 45
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+SUPPLIER_NUMBER ITEM ITEM
NUMBER NAME1234 153047 Pencils, red1234 229740 Lined tablets1234 303476 Paper clips9988 153047 Pencils, red9988 559343 Envelopes, legal2424 153047 Pencils, red2424 303476 Paper clips5546 775298 Chairs, secretary3366 303476 Paper clips3366 073956 Pens, black
******** �� � ********
F3=�� F12=�� F19=� F20=�� F21=��
�: � �� � ORDER BY �� ���� ����� �� �� �� �
��� �� ���.
� �� ��� � �� � INVENTORY_LIST� SUPPLIERS ��� ��
� � ���. � � �� SUPPLIER ����� ��� ���
INVENTORY_LIST ����� ��� ��� ���. SUPPLIER � ��
�� �� ��� � � � ���� ���. �� SELECT� �� ORDER
BY�� ���� �� � �� ���� � ��� ���. SUPPLIER �
�� � ��� ��� ����� SUPPLIER_NUMBER � ��� � ��� �
���.
��� �� ��� ��� �� ORDER BY� ��� ���. ��� ��
SUPPLIER_NUMBER � �� � �� ����. SUPPLIER_NUMBER
�� �� �� �� ��� ITEM_NUMBER �� �����.
SELECT SUPPLIER_NUMBER, Y.ITEM_NUMBER, ITEM_NAMEFROM SAMPLECOLL.SUPPLIERS X, SAMPLECOLL.INVENTORY_LIST YWHERE X.ITEM_NUMBER = Y.ITEM_NUMBERORDER BY SUPPLIER_NUMBER, Y.ITEM_NUMBER
��� �� �� ��� ��� ����.
� 2 � SQL � 29
� ��� � . . . . . . : 45
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+SUPPLIER_NUMBER ITEM ITEM
NUMBER NAME1234 153047 Pencils, red1234 229740 Lined tablets1234 303476 Paper clips2424 153047 Pencils, red2424 303476 Paper clips3366 073956 Pens, black3366 303476 Paper clips5546 775298 Chairs, secretary9988 153047 Pencils, red9988 559343 Envelopes, legal
******** �� � ********
F3=�� F12=�� F19=� F20=�� F21=��
�� �� ��
UPDATE� �� �� � � � �� �� �� �� ��� ��
�.
��� SQL� �� � �� ��� ��� � ���� ��: �� �� �
�� �����.
� ��� ���� �� ��� �� � ����, UPDATE�� ��
WHERE� �����. �� ��� 110 ��� �UPDATE �� ��
�� �� ��� �����. WHERE� ��� ��� ��� � �� �
� �� ����. ���, WHERE� ���, ���� ���� ��� �
� ��� �� ���. �� ��� 71 ��� �WHERE � ��� �
� �� ��� �����.
�: �� �� ��
��� SQL ��� �� ��� � �� �� ��� ��� ��, �� �
� 303476 �� LAST_ORDER_DATE � ORDER_QUANTITY� ����
UPDATE� ��� F4(���)� �����. UPDATE� �� ��� ����.
30 iSeries� DB2 UDB SQL ����� �� V5R2
UPDATE� ��
����� ��� � Enter �� �����.
� . . . . . . . . . . INVENTORY_LIST______ ��, ���� �� F4��� . . . . . . . SAMPLECOLL__ ��, ���� �� F4
�� . . . . . . . . . ____________________ ��
F3=�� F4=��� F5=���� F12=�� F20=��� ��F21=��� ��
� ��� ���� ��� � Enter �� ����. � �� �� ����
��� ��� �� ����.
UPDATE� ��
����� ��� � Enter �� �����.
� . . . . . . . . . INVENTORY_LIST______ ��, F4=������ . . . . . . SAMPLECOLL__ ��, F4=���
�� . . . . . . . . . ____________________ ��
��� ��� � Enter �� �����.
� �ITEM_NUMBER _____________________________________________________ITEM_NAME _____________________________________________________UNIT_COST _____________________________________________________QUANTITY_ON_HAND _____________________________________________________LAST_ORDER_DATE CURRENT DATE_________________________________________ORDER_QUANTITY 50___________________________________________________
� ��F3=�� F4=��� F5=���� F6=� �� F10=� ��F11=�� �� F12=�� F14=� �� F24=�� �
�� CURRENT DATE� ��� ��� �� �� ��� �� ��� ��
��.
� �� ��� ��� � WHERE ��� ��� �� �� ��� Enter
�� ����. WHERE ��� ���� ��� � �� �� �� �� ���
�� ����.
� 2 � SQL � 31
UPDATE� ��
WHERE �� ��� � Enter �� �����. ���� ��� F4 �� �����.ITEM_NUMBER = ’303476’______________________________________________________________________________________________________________________
� ������� ��� � Enter �� �����.
WITH �� �� . . . . . 1 1=�� ��, 2=NC (NONE)3=UR (CHG), 4=CS, 5=RS (ALL)6=RR
F3=�� F4=��� F5=���� F6=� �� F9=�� �� ��F10=� �� F12=�� F14=� �� F15=� �� F24=�� �
�� ��� � �� �� ��� Enter �� ����. ��� ����
� ���� ���� ����.
� ��� ��� �� SQL �� ��� ��� ���.
UPDATE SAMPLECOLL.INVENTORY_LISTSET LAST_ORDER_DATE = CURRENT DATE,
ORDER_QUANTITY = 50WHERE ITEM_NUMBER = ’303476’
���� �� � �� �� SELECT� ��(SELECT * FROM
SAMPLECOLL.INVENTORY_LIST) ��� �� ���.
� ��� � . . . . . . : 71
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+....5....+....6....+....7.ITEM ITEM UNIT QUANTITY LAST NUMBERNUMBER NAME COST ON ORDER ORDERED
HAND DATE153047 Pencils, red 10.00 25 - 20229740 Lined tablets 1.50 120 - 20544931 ***UNKNOWN*** 5.00 - - 20303476 Paper clips 2.00 100 05/30/94 50559343 Envelopes, legal 3.00 500 - 20291124 Envelopes, standard .00 - - 20775298 Chairs, secretary 225.00 6 - 20073956 Pens, black 20.00 25 - 20******** �� � ********
� ��F3=�� F12=�� F19=� F20=�� F21=��
� �� �� ��� ������. LAST_ORDER_DATE� �� ��� �
�����. � ��� �� ���� ����. NUMBER_ORDERED� ���
���.
32 iSeries� DB2 UDB SQL ����� �� V5R2
��� �� ��
SQL DELETE� �� �� ��� ��� ���. �� ��� �
�� �� �� ��� �� �� � ����, DELETE�� �� WHERE�
�� � �� ��� �� �� � ��� ���. �� ���
115 ��� �DELETE �� �� �� � ���� �����.
��� SQL� �� �� ��� ��� � ���� ��: �� �� �
�(INVENTORY_LIST)�� �����.
�: ��� �� ��(INVENTORY_LIST)
QUANTITY_ON_HAND � �� � �� �� � �� ���� �
�, SQL �� �� �� �� ��� ��.
DELETEFROM SAMPLECOLL.INVENTORY_LIST
WHERE QUANTITY_ON_HAND IS NULL
� �� � ��� ���� IS NULL ��� ����. ��� ��� �
� SELECT� �� ��� � �� ���.
� ��� � . . . . . . : 71
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+....5....+....6....+....7.ITEM ITEM UNIT QUANTITY LAST NUMBERNUMBER NAME COST ON ORDER ORDERED
HAND DATE153047 Pencils, red 10.00 25 - 20229740 Lined tablets 1.50 120 - 20303476 Paper clips 2.00 100 05/30/94 50559343 Envelopes, legal 3.00 500 - 20775298 Chairs, secretary 225.00 6 - 20073956 Pens, black 20.00 25 - 20******** �� � ********
� ��F3=�� F12=�� F19=� F20=�� F21=��
QUANTITY_ON_HAND �� � �� �� ������.
�� �� � ��
���� ��� � �� ��� �� � �� � ���. �� ���
� �� � �� ���� ��� ��� �� ���. ��� ��
� ��� ��� ��� � �� ����� �� ���. ��� ��
� ��� �� ��� ���.
SQL CREATE VIEW� �� ��� �� ���. CREATE VIEW�
��� ��, �� ��� ��� �� ���� �� �� �� ���
��� �� �� �� ���. ���� ������� ��� ��� ��, �
� 2 � SQL � 33
� �� �� ��� �� ��� ���. ���, SQL WITH CHECK
OPTION� ���� � ��, � �� �� �� �� �� ��� ��
��� ���. WITH CHECK OPTION �� �� ��� ��� � 10 �
��� �� �����.
��� SQL� �� ��� �� � ���� �� �����.
v ��: � �� �� ��
v 35 ��� ��: � � ��� ���� ��� � �� ��
��� �� ���� ��� ��� �� �� �� �� � �� ��
� �� ��� �. ��� � ���� SQL ���� CREATE VIEW�
�����.
�� �� � �� ��� ��� � ��� ��� ��� � � �� �
��� �� ��.
�� �� � � ��� �� �� ��� �� �� ���� ���.
INSERT� ��, �� �� �� �� ��� ��� �.
��� �� �� � ��� � ���� ��� ���� ��� ��� �
�� ���. ��� �� ��� ���� �� �� ����� ���
���. ��� ���� �� ���� ����� �� ��� ��� � �
�� � �� ��� ����. ���� ��� ��� �� �� ��� �
� ����� �� �� ����.
�� ��� 63 ��� ��� � � ��� �����.
�: � ��� �� �
�� ���� � �� ��� �� �� ���. ���
INVENTORY_LIST �� ���. �� 6�� �� ��� ��� � �� �
�, ITEM_NUMBER, LAST_ORDER_DATE � QUANTITY_ON_HAND� �
��. SELECT�� � ��� ��� � �� ���� ����. ���
��� 2� � ��� �� �� �� ���. CREATE VIEW�� ��
� �� ��� ���.
CREATE VIEW SAMPLECOLL.RECENT_ORDERS ASSELECT ITEM_NUMBER, LAST_ORDER_DATE, QUANTITY_ON_HAND
FROM SAMPLECOLL.INVENTORY_LISTWHERE LAST_ORDER_DATE > CURRENT DATE - 14 DAYS
�� ��� ��� �� �� � ���� ���� ��� �� � �� ��
�� ���. ��� ��� ���� � ��� �� �� �� ��� �
�� ���. �� ��� �� ������ ��� ���. �� ��� SQL
�� �� ���.
34 iSeries� DB2 UDB SQL ����� �� V5R2
SELECT * FROM SAMPLECOLL.RECENT_ORDERS
� ��� � . . . . . . : 26
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+.ITEM LAST QUANTITYNUMBER ORDER ON
DATE HAND303476 05/30/94 100******** �� � ********
� ��F3=�� F12=�� F19=� F20=�� F21=��
�� �� ��� �� �� �� ��� � ��� ���. �� � ��
�� �� � � �� ���� ��� ���.
�: � ��� ���� ��� �� �� �
FROM��� � � ��� �� �� � � ��� �� ��� � �
�� �� ���. �� �� INVENTORY_LIST �� �� �� �
ITEM_NUMBER� �� �� � UNIT_COST� ���. ��� SUPPLIERS �
� ITEM_NUMBER �� SUPPLIER_COST ��� ��. WHERE�� �
�� �� � ���� ����. ��� �� �� ���� � ��� ��
��� �� ���� �� �� ��� ���.
CREATE VIEW�� ��� �� ��� ���.
CREATE VIEW SAMPLECOLL.LOWER_COST ASSELECT SUPPLIER_NUMBER, A.ITEM_NUMBER, UNIT_COST, SUPPLIER_COSTFROM SAMPLECOLL.INVENTORY_LIST A, SAMPLECOLL.SUPPLIERS BWHERE A.ITEM_NUMBER = B.ITEM_NUMBERAND UNIT_COST > SUPPLIER_COST
�� �� SQL�� � ���.
SELECT * FROM SAMPLECOLL.LOWER_COST
� ��� � . . . . . . : 51
�� � . . . . . . . . . . � �� . . . . . . . . .....+....1....+....2....+....3....+....4....+....5.SUPPLIER_NUMBER ITEM UNIT SUPPLIER_COST
NUMBER COST1234 229740 1.50 1.009988 153047 10.00 8.002424 153047 10.00 9.003366 303476 2.00 1.503366 073956 20.00 17.00
******** �� � ********� ��
F3=�� F12=�� F19=� F20=�� F21=��
�: � �� � ORDER BY �� ���� ����� �� �� �� �
��� �� ���.
� 2 � SQL � 35
� ��� �� ��� �� �� �� ���� � ��� ��� �� ���
�.
��� SQL �� �� ��� ��� 323 ��� � 17 � ���� SQL ���
�����.
36 iSeries� DB2 UDB SQL ����� �� V5R2
� 3 � iSeries Navigator ������ ��
� ��� iSeries Navigator� �� �����(��� �� SQL ���), �
� ��� �� � �� �� �� ���. iSeries Navigator ���
���� � �� �� �� ������ � �� � ��� �� ��
� ������. �� � iSeries Navigator �� SQL(��� �� ��) �
��� �� �� �� SQL �� ��� ��� ���. 305 ��� �
16 � �iSeries Navigator� ��� �� ������ ����� iSeries Navigator
� ��� � �� ������ �� ���. � � ��� �� iSeries
Navigator� �� �� ������ ���� �� ���. �� ���
��� 17 ��� � 2 � �SQL ��� ��� SQL �� � ��
� ����� �� ������.
����� �� ��� �����.
v �iSeries Navigator ��
v 38 ��� �iSeries Navigator� ��� ����� ��
v 39 ��� �iSeries Navigator ���� ����� ��� ���
v 40 ��� �iSeries Navigator� ��� � � � ���
v 41 ��� �iSeries Navigator� �� �� � ���
v 43 ��� �iSeries Navigator� ��� � �� ���
v 43 ��� �iSeries Navigator� �� � �� ���
v 44 ��� �iSeries Navigator� �� � �� ���
v 46 ��� �iSeries Navigator� �� � �� � ���
v 47 ��� �iSeries Navigator� ��� �� � � ���
v 51 ��� �iSeries Navigator� ��� ������ ���� ���
�: �� � �� ��� x ��� ��� ���� ���� �����.
iSeries Navigator ��
��� � �� iSeries Navigator� ���, ��� �� ���.
1. iSeries Navigator ��� � � �����.
2. ���� ��� �����.
iSeries Navigator �� �� ��� ��� iSeries Navigator ��� ����
�.
© Copyright IBM Corp. 1998, 2002 37
iSeries Navigator� ��� ����� ��
������ �, �� � �� ���� ��� ��� ������ ����. ��
���� �� ��� ����� ���� ����� ���� ��
�. �� ���� ������ �� �� �� ��� ���.
�� ���(SQL ���)� ����� �� �� �, ��, ��, �, ���
� ���� �� ��� ��� �� �� ���� �� ����. ����
�� �� �� ���� ���� ���.
�� � ������� �� ���. ����� � �������
� �����.
iSeries Navigator� �� �����(���)� �� �� �� �� ��:
iSeries Navigator� ��� ����� �(SAMPLELIB)� �����.
�: iSeries Navigator� ��� ����� �(SAMPLELIB)
��� �� � ��� SAMPLELIB� � ������ �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������� �
����.
2. ������ �� ��� �� ��� � ������ �����.
3. � ����� �� ��� �� �� SAMPLELIB� �����.
4. �� �����(���).
5. ��� ����� ��� ����, ����� ���� �� �� �
����.
6. ���� �� �� ���� ������ �� �� � �� ��
�� �� �� ���. ���, � � ������ �� ���
���� ����.
7. ������ ��� ��� � �����. ������ ��� ��� �
�� 1 �����.
8. �� �����.
38 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
�:
1. ���� SAMPLELIB� � ��, � �� ����� ��� � ����
� �� ��� ���.
2. ��� ��� �� ����� � �� ��� ��� � �������
� �����.
iSeries Navigator� ���� ����� ��� ��
������ ����� � ��, � � �, ��, ��, �� �����, ���
�� �� � ��� �� �� �� ���. ������ �� ���
� ����� ���� ����, ��� �� ���.
1. ������ �� ��� �� ��� �� ����� ��
���.
2. �� ����� �� ��� ������ ��� ��� ��
���� ��� ���.
3. ��� ����� ���� �� ������ ��� �� �� ��
� ����� ���� ������ ��� ���.
� 3 � iSeries Navigator ������ � 39
|
|
|
������ ���� SAMPLELIB� �� ����.
iSeries Navigator� ��� � �� � ��
�� ��� ��� � ���� �� ������ ������. �� � �
�, � �� �� ��� �� � ���, �� ��, ��� � �
��� ��� ���.
iSeries Navigator� ��� � � �� ��: iSeries Navigator� ��� � �
(INVENTORY_LIST)� �����.
�� �� �, � � ��� � �� ���� �. � � � � �
� ��� � ����. ��� �� �� �� ��� � �� ″� ��″
���. �� �� � � � ���. �� � ��� ���,
� ���� �. � � ��� �� ���� ��� ��.
� �� ��� � � � ���� �� ��, � �� ��� � ���
�. � �� ��� � ���� �� ��, �� ��� ��� ���.
INSERT ���� ��� �� ��� ��� 105 ��� �INSERT �
� �� � ��� �����.
�: iSeries Navigator� ��� � �(INVENTORY_LIST)
�� ���� �� �� �� ��� ���� �� �� �� ���. �
� �� ��, ��, �� ���, � �� � � �� �� �� ��� �
���. ��� ���. ��� �(null)� � ���. ���, ��� �
���� ��� �� ��� ��. � ��� �� � ���.
40 iSeries� DB2 UDB SQL ����� �� V5R2
�� ���, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� ��� �� ���� ��� ��� �����.
3. �� �����.
4. � � �� ��� � ���� INVENTORY_LIST� �����.
5. �� �����(���).
6. � �����.
� � - INVENTORY_LIST� ����. � �� ��� �� ����. �� �
�� ���.
iSeries Navigator� ��� ��� � ��
��� �� �� �� � ��� ���. � � �� � ���
��, ������ → ����� → SAMPLELIB(�� �� ������)� � �
�� �����. ���� � �� � INVENTORY_LIST� �� ��� �
��� ��� ����� �����.
1. � ���� �� � � �� ��� � ����, �� �� �� ��
���. � �� �� ��� �� ����.
2. � �� �� �� ITEM_NUMBER� �����.
3. ��� CHARACTER�� �����. �� ��� �� ��� �� ��
��� ��� ��� ���� ��� �� �� �� ��� �
��.
4. � � � 6 �����. ��� �� �� �� ��� ��, ���
���� � ��� ���.
5. � �� �� ��� ���. � ��� �����.
6. � �� ��� �� � �� ��� �� �� �� ��� ���.
�� �� ��� ���, ���� ���� �� ���. � ��� 10
� ��� ��, �� ��� � ��� ��. �� � � �� ���
� ��� �� ���. ��� � �� ���� ����.
� 3 � iSeries Navigator ������ � 41
|
|
|
|
|
|
|
7. � � �� � �� �����.
8. �(�� ��)� ��� � �����. ���, � ��� ��� �� � �
� ��� ����.
9. ��� �� ��� ��� �����. ��� ���� � ��
�.
�� � ITEM_NUMBER� �� ��. � INVENTORY_LIST ��� � �
����.
� �� �� �� ��� � ��� �
ITEM_NAME VARCHAR 20 �� �� UNKNOWN
UNIT_COST DECIMAL 8 2 �� �� (� �� �� �
��� ��)
QUANTITY_ON_HAND SMALLINT NULL NULL
LAST_ORDER_DATE DATE NULL
ORDER_QUANTITY SMALLINT NULL 20
��� � ��� �� ��, � �� �� ����.
42 iSeries� DB2 UDB SQL ����� �� V5R2
iSeries Navigator� ��� ���� �(SUPPLIERS) �
� �� � ��� �� 2� � ��� ��. � �� �� ��� ���,
�� ��, ��� �� �� �� ��� ����. SAMPLELIB SUPPLIERS
�� � �� ����. � �� SUPPLIER_NUMBER, ITEM_NUMBER
� SUPPLIER_COST� 3�� �� ���. � �� � INVENTORY_LIST�
���� �� ITEM_NUMBER� ��� � �����. ��� ITEM_NUMBER
� ����� INVENTORY_LIST � ITEM_NUMBER �� ���� �
��� ��� ���.
iSeries Navigator� ��� � �� ��
� ��� ����, ��� �� ���.
1. SUPPLIER � ���� �� � � �� ��� ����� �����.
2. � ���� �� ��� SAMPLELIB� �����.
3. INVENTORY_LIST� �����. � �� ��� �� ��, �� � ���
�� ����.
4. ITEM_NUMBER� �����.
5. � � ��� SUPPLIERS � �� � �����.
SUPPLIER_NUMBER, CHAR(4), NOT NULL � SUPPLIER_COST,
DECIMAL(8,2)� �� � SUPPLIERS �� ��� � �� � �����.
iSeries Navigator� ��� �� �� ��
�� ��� ��, �� �� ����, � � �� �� ��� �. �
INVENTORY_LIST ��� ����, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� �����.
3. INVENTORY_LIST� ��� �� �� ��� ��� �����.
4. � ��� �� �����. ��� �� ����.
5. �� �� �� ��� ��� �����.
� 3 � iSeries Navigator ������ � 43
|
|
|
|
|
|
�: ��� � �� ���� ����� � �� �� ����� �. �
�� �� ������ ��� �� ��, ��� � �� � ����
�. � ��� �� ��, ���� ��� � ����. � ��
�� ��� �� ��� � ���� �� ��� ���
�.
ITEM_NUMBER ITEM_NAME UNIT_COST QUANTITY_ON_HAND
153047 Pencils, red 10.00 25
229740 Lined tablets 1.50 120
544931 5.00
303476 Paper clips 2.00 100
559343 Envelopes, legal 3.00 500
291124 Envelopes, standard
775298 Chairs, secretary 225.00 6
073956 Pens, black 20.00 25
�� ��� �� �����.
�� � SAMPLELIB.SUPPLIERS � �����.
SUPPLIER_NUMBER ITEM_NUMBER SUPPLIER_COST
1234 153047 10.00
1234 229740 1.00
1234 303476 3.00
9988 153047 8.00
9988 559343 3.00
2424 153047 9.00
2424 303476 2.50
5546 775298 225.00
3366 303476 1.50
3366 073956 17.00
�� ��� �� �����. � ������ �� ��� �� � ��
�� �� � �� �� ����.
iSeries Navigator� ��� � �� ��
� ��� �� �� ��� �� ��� ���. �� � � ���
�� ���� �� ��� �. INVENTORY_LIST� �� ���, ���
�� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� �����.
44 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
3. INVENTORY_LIST� ��� �� �� ��� �� ��� ����
�.
�: � ��� �� �� � � ��� URL ��� � ��� ��
� ����� ��.
iSeries Navigator� ��� �� �� ��
iSeries Navigator� �� �� �� �� ��� ���. �� ��
�� �� ��� ���� �� iSeries Navigator� �� � ����
��� ����. ��� � �� � �� ���� � �����.
1. � INVENTORY_LIST� � � �� ���.
2. �� � �� LAST_ORDER_DATE � �� ��� �����. ��� �
�� �� �� �� �����.
3. ORDER_QUANTITY� 50�� �����.
4. ���� ��� �� ��� �� � �� ����.
�� �� ��� �� ���.
iSeries Navigator� ��� ��� �� ��
iSeries Navigator� �� �� ��� ��� ���. � �� � �
� ��� ���� � �� ��� ���. � � ��� ��, �� �
��� ��� �� ��� ��� � �����.
1. � INVENTORY_LIST� � � �� ���.
2. Envelopes, standard �� ORDER_QUANTITY �� � �����. �
��� ���� ��� ���.
3. Lined tablets �� UNIT_COST �� � �����. �� � �
�� ���� ��� ���� ���.
� � � �� �� ��� �� �� � ��� ���.
1. � INVENTORY_LIST� � � �� ���.
2. *UNKNOWN* �� � �� �� � �����. ���, �� �� �
�����.
� 3 � iSeries Navigator ������ � 45
|
|
3. Rows ��� ��� ���� ���� Delete �� ����.
*UNKNOWN* �� ����.
4. � INVENTORY_LIST� QUANTITY_ON_HAND � � �� �� �
�����.
5. ���� ��� � ��� �� �� ����. ��� ��� ��
�� �� ��� �.
I T E M _
NUMBER
I T E M _
NAME
UNIT_ COST QUANTITY_
ON_ HAND
L A S T _
O R D E R _
DATE
O R D E R _
QUANTITY
153047 Pencils, red 10.00 25 20
229740 Lined tablets 1.50 120 20
303476 Paper clips 2.00 100 2000-10-02 50
559343 Envelopes,
legal
3.00 500 20
775298 Chairs,
secretary
225.00 6 20
073956 Pens, black 20.00 25 20
iSeries Navigator� ��� � �� � ��
iSeries Navigator� �� � ������ ���� � ������ �����
�� ���� ���� ���. �� ��� ��� � ���� �
�� ����� ��� ��� �� ���� �� ��� ���� ����.
LIBRARY1��� � ��� ������ �� �� ���� ����� �
�� �����. � ��� ������ � ��, INVENTORY_LIST�
LIBRARY1� �����. �� ����, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� �����.
3. INVENTORY_LIST� ��� �� �� ��� ��� �����.
4. LIBRARY� ��� �� �� ��� ����� �����.
�� � INVENTORY_LIST� LIBRARY1� �� ��� � SUPPLIERS�
LIBRARY1� �������. �� ������, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� �����.
3. SUPPIERS� ��� �� �� ��� ����� �����.
4. LIBRARY1� ��� �� �� ��� ����� �����.
46 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
�: ��� ����� �� �� ��� �� ���� ���. �� ���
��� ������ �� ���� � �� �� ���� �� ���. ��
��, �� � �� �� �� ��� �� �� �� ��, �� �� ��
� ���� ���. ���, � �� � ���� �� ��� ��
���� �� ��� ���.
iSeries Navigator� ��� �� �� � ��
���� ��� � �� ��� �� � �� � ���. �� ���
� �� � �� ���� ��� ��� �� ���. ��� ��
� ��� ��� ��� � �� ����� �� ���. ��� ��
� ��� �� ��� ���.
��� �� ���� ��� ��� �� �� �� �� � �� ��
� �� ��� �. ��� � ���� ��� SQL ���� CREATE
VIEW� �����.
�� �� � �� ��� ��� � ��� ��� ��� � � �� �
��� �� ��.
�� �� � � ��� �� �� ��� �� �� ���� ���.
INSERT� ��, �� �� �� �� ��� ��� �.
��� �� �� � ��� � ���� ��� ���� ��� ��� �
�� ���. ��� �� ��� ���� �� �� ����� ���
���. ��� ���� �� ���� ����� �� ��� ��� � �
�� � �� ��� ����. ���� ��� ��� �� �� ��� �
� ����� �� �� ����.
�� ��� 63 ��� ��� � � ��� �����.
iSeries Navigator� ��� �� � �� ��� �� �����.
v �iSeries Navigator� �� � � �� �� ��
v 50 ��� �iSeries Navigator� �� ��� �� ��� � �
� ��
iSeries Navigator� ��� � �� �� �� �
�� ���� � �� ��� �� �� ���. ���
INVENTORY_LIST �� ���. �� 6�� �� ��� ��� � �� �
�, ITEM_NUMBER, LAST_ORDER_DATE � QUANTITY_ON_HAND� �
��.
� 3 � iSeries Navigator ������ � 47
� � �� ��� ���, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� ��� �� �� ��� ��� ��� ��, ��� �
����.
3. � �� �� ��� �� �� RECENT_ORDERS� �����.
4. ����� �� ��� ���.
5. ���, � �� ��� � �� �����. ���� � ��� �
������ ��� � ��� �� ����� ��� � ���. �
�� �� ��� ��� 162 ��� ���� WITH CHECK OPTION�
�����. � ��� ��, �� �����.
6. � �����.
� �� �� ��� ��� �� ����.
1. � �����.
2. � ���� �� ��� SAMPLELIB� �� ��, INVENTORY_LIST� �
����.
3. �� �����.
4. � �����. �� INVENTORY_LIST� � �� �� ��� � �
� ��� �.
5. ��� ��� �� � ����, ��� �� �� ��� �� ��
� ��� �� �� �� �� �� ��� �����. ITEM_NUMBER,
LAST_ORDER_DATE � QUANTITY_ON_HAND� �����.
6. �� �� ���� �� ��� �� ���� ����. � ��� ��
��, � ��� ��� ��� ������. ITEM_NUMBER
LAST_ORDER_DATE QUANTITY_ON_HAND� ��� � ����.
48 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
�� ��� ���� ����� �� 14 �� ��� ��� ��� �.
� ��� ��� �� WHERE � ��� �.
1. � �����.
2. � �� �� WHERE LAST_ORDER_DATE > CURRENT DATE -
14 DAYS� �����. ��� ��� �� � WHERE � ���
��� ��� ���.
3. � �����.
4. � ��� ��� � ��� SQL ���, SQL ��� �����.
5. � �� ��� ����.
RECENT_ORDERS� �� ����, RECENT_ORDERS� ��� �� �
� ��� �� ��� �����. ��� ��� ���� � � ��
�.
ITEM_NUMBER LAST_ORDER_DATE QUANTITY_ON_HAND
303476 2000-10-02 100
�� ��, ��� �� ��� ����� ��� �� �� �� ��� �
�. ��� ��� ���� � ��� �� �� �� ��� ��� �
��. ��� �� ������ ��� ���.
� 3 � iSeries Navigator ������ � 49
iSeries Navigator� ��� ��� ��� ��� �� �� �
� �� �� ��� � ��� ��� �� �� ��� �� ��
� � ��� �� ���. � �� � �� ������ � �
�� �� �� ��� �� ��� ��� �� ���. ���,
� �� � �� � �� ��� � ��� �� �� ��� �
� �� ��� WHERE � ��� �� �� ���.
�� �� ���� � ��� �� ��� �� ����� �� �� ��
�� ��� ��� ����. �� INVENTORY_LIST ��
ITEM_NUMBER � UNIT_COST� � � � �� SUPPLIERS ��
SUPPLIER_NUMBER � SUPPLIER_COST� ��� �� ���.
WHERE�� ��� �� � ���� ����.
1. LOWER_COST�� � ��� ����.
2. � �� �� ��� � �����.
3. SAMPLELIB� INVENTORY_LIST� ��� LIBRARY1� SUPPLIERS
� �����.
4. � �����. � � �� �� ��� � �� ���� �.
5. INVENTORY_LIST� ITEM_NUMBER � UNIT_COST� �����.
6. SUPPLIERS� SUPPLIER_NUMBER � SUPPLIER_COST� �����.
7. ����, INVENTORY_LIST� ITEM_NUMBER� ��� ��
SUPPLIERS� ITEM_NUMBER� ������. � �� � �� �� �
��� �� �� ��� ���.
8. �� �� ��� �� �� �����. �� ��� ��� 88
��� �� ��� ���� �� � �����.
9. � �����.
10. �� � �, SQL ��� �� � ��� �� � ��� SQL �
���. SQL �� �� SQL ��� ���. SQL ��� SQL
� ��� �� SQL ��� �� ��. ���, SQL ���
��, � �� �� �� �� ��� SQL ��� ��� �� �
��� �. � �� �� ��� �����, ����� ���� ���.
11. � �� �� �� WHERE� ����. SUPPLIER_COST
� ��� ��, < ������ ���, ����� UNIT_COST
� �����. �� ���, �� ��� ����. �� ���
� �� ���.
12. � �� �� LOWER_COST� ����.
50 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
� ��� ��� �� ����, LOWER_COST� ��� �� �� �
�� �� ��� �����. � ��� ���� ��� �� ���� � �
�� ����.
SUPPLIER_NUMBER ITEM_NUMBER UNIT_COST SUPPLIER_COST
9988 153047 10.00 8.00
2424 153047 10.00 9.00
1234 229740 1.50 1.00
3366 303476 2.00 1.50
3366 073956 20.00 17.00
iSeries Navigator� ��� ������ ���� ��
���� ��� ����� � ��, ��� �� ��� �� ���
���. ��� ���� ��� �� �� ���.
�: ��� � ��� ����, � �� ������ �� �� ��� �
�����. ��, LIBRARY1� INVENTORY_LIST �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. LIBRARY1 �����.
3. INVENTORY_LIST� ��� �� �� ��� ��� ���� Delete
�� ����.
� 3 � iSeries Navigator ������ � 51
|
|
|
|
|
4. ���� �� �� �� ���, ��� �����. INVENTORY_LIST �
� ���.
���� LIBRARY1� SUPPLIERS� �����.
1. SUPPLIERS� ��� �� �� ��� ��� ���� Delete ��
����.
2. ���� �� �� �� ��� �� �����.
3. �� LOWER_COST� SUPPLIERS �� ��� � �� ���� �
�� �� ���� ��� �� ��� ���. ��� �����.
SUPPLIERS � LOWER_COST� ����. �� LIBRARY1� �� ��� �
� ��� �� ���� ��� ��� �� �����. ���� �� �
� �� ��� �� �����. LIBRARY1� ����.
����� SAMPLELIB� �����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. SAMPLELIB� ��� �� �� ��� ��� �����.
3. ���� �� �� �� ���, ��� �����.
4. � INVENTORY_LIST� �� RECENT_ORDERS� INVENTORY_LIST
�� ��� � �� ���� ��� �� ���� ��� �� ��� �
��. �� �����.
SAMPLELIB, INVENTORY_LIST � RECENT_ORDERS� ����.
iSeries Navigator �� �� ��� ��� 305 ��� � 16 � �iSeries
Navigator� ��� �� ������ ��� �����.
52 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
� 4 � DDL(Data Definition Language)
�� ���(DDL)� ������ ����� �, �� � ��� � �
SQL � ���. ��� ������ ����� ���, �, ��, ���
�, �� � ��� ����.
����� ��� � �����.
v ���� ��
v 54 ��� �� ��
v 55 ��� �LIKE� �� � ��
v 55 ��� �AS� �� � ��
v 56 ��� ���� �� � ���
v 56 ��� ��� � � � ���
v 57 ��� �ROWID�
v 58 ��� �LABEL ON� ��� �� �� ��
v 59 ��� �COMMENT ON ��� SQL ���� ���
v 59 ��� �� �� ���
v 62 ��� �ALIAS �� � � ���
v 63 ��� ��� � � ���
v 65 ��� ��� ���
v 66 ��� ������� ��� �����
v 67 ��� ������� ���� ��
��� ��
���� SQL ����� � �� ���. ���� �����, ��, ��
���, ����� ���� �� �� ��� ���. �, �� � ��� �
���(�: ����)� ��� ������ �, �� �� ��� ���. SQL
��� �� ��� ���� �� ��, �� ��� �� SQL ���� ��
�� ��� ���. SQL ��� �� ��� ��� ��, ��� �� ��
� ���.
v ��� �� �� �� ��� ��� �� �� SQL ���� �, ��
�� ��� ���.
v � �� �� ��� ��� ���� SQL ��� �� ���.
��� ���� �� ��� ���.
© Copyright IBM Corp. 1998, 2002 53
|
|
|
|
|
|
|
|
|
|
|
|
|
|
���� CREATE SCHEMA� �� ���. �� �� ��� ���.
DBTEMP�� � ���� ����.
CREATE SCHEMA DBTEMP
�� ��� ���� ���� ��� ���. CREATE SCHEMA� ��
��� ��� SQL ���� CREATE SCHEMA� �����.
� ��
�� �� �� ��� ��� 2�� �� ���� ���. �� � ���
�� �� �� � ��. �� � �� ��� ��� � � �� ��� �
� � � ��. � �� �� ��� �� ����� �. SQL� ��
�� ��� �� �� �� ���. �� �� �� ��� SQL ���� �
� �� ��� �����.
�� CREATE TABLE� �� ���. � ��� �� � ��� ��
� �� ����� �. ��� �� � �(�: 1� �)� ��� �
��.
� 1: ���� �� �� ��� ��� �� �� ��� ‘INVENTORY’��
��� �� ����.
v �� ��: 1 - 9 999 ��� �� �(null)� ��� ���.
v ��: 0 - 24� �� �
v �� �� �: 0 - 100000 ��� �
1� �� PARTNO��.
CREATE TABLE INVENTORY(PARTNO SMALLINT NOT NULL,DESCR VARCHAR(24 ),QONHAND INT,PRIMARY KEY(PARTNO))
�� ���� ��
� �� � � ���� ��� ���. CREATE TABLE �� ALTER
TABLE� ADD constraint � �� �� � �� 1� �, �� ���� �
� � ���� ��� ���. �� ��, ��� � �� �� � 1
� �� ���. �� �� ALTER TABLE� �� �� � 1� ��
��� ����.
ALTER TABLE CORPDATA.DEPARTMENTADD PRIMARY KEY (DEPTNO)
54 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
||
� �� �� �� �� PRIMARY ���� UNIQUE� �����. ��� ��
� 151 ��� � 10 � ��� �� �����.
LIKE� ���� � ��
�� �� ��� �� �� ���. �, �� �� �� � ��� ��
� �� �� ���. ���� ��� ��� ���.
v � ��(� ��� � ��)
v �� ��, �� � ��
v CCSID
v � ���(LABEL ON)
v � �� (LABEL ON)
LIKE �� � �� �� �� ��� �� ��� �� �� �� ��� ��
� ����.
v ���
v � �� ��
��� �� �� �� �� �� � � �� �� � �� CREATE
TABLE� INCLUDING IDENTITY� ���� �. CREATE TABLE �
� ��� �� EXCLUDING IDENTITY��. ��� � �� ��� SQL�
�� �� �� �� ���� � �� �� � SQL �� ����.
EMPLOYEE� �� � ��� � EMPLOYEE2� ����.
CREATE TABLE EMPLOYEE2 LIKE EMPLOYEE
CREATE TABLE LIKE �� ��� ��� SQL ���� CREATE TABLE �
�� �����.
AS� ���� � ��
CREATE TABLE AS� SELECT�� ���� �� ��. SELECT� �
�� �� �� ���� CREATE TABLE AS� ��� ���. �� �
�� � ��� ���� ���� �� ���� ���.
�� ��, DEPTNO = D11� EMPLOYEE��� �� � ��� ���
EMPLOYEE3��� �� ��.
CREATE TABLE EMPLOYEE3 AS(SELECT PROJNO, PROJNAME, DEPTNOFROM EMPLOYEEWHERE DEPTNO = ’D11’) WITH NO DATA
� 4 � DDL(Data Definition Language) 55
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
��� �� �� �� �� �� � � �� �� � �� CREATE
TABLE� INCLUDING IDENTITY� ���� �. CREATE TABLE �
� ��� �� EXCLUDING IDENTITY��. WITH NO DATA �� ���
�� � ��� ���� � ���. � � EMPLOYEE3 ���� ����
�� WITH DATA� ���� �. SELECT �� �� ��� ��� 69
��� � 5 � �SELECT� �� �� �� �����. ��� ��
SQL� �� �� �� �� ��� � �� ���� �� ��, �SQL
� �� ����. CREATE TABLE AS �� ��� ��� SQL ����
CREATE TABLE ��� �����.
��� � � ��
DECLARE GLOBAL TEMPORARY TABLE � �� �� �� ��� �
� �� �� ���. � �� �� ��� ����� ���� ���
� � ��� ��� ���. �� �� � � �� ���� �� �
(drop)��.
� ��� ��� CREATE TABLE� ���(LIKE � AS� ��).
�� ��, �� � ORDERS� ��.
DECLARE GLOBAL TEMPORARY TABLE ORDERS(PARTNO SMALLINT NOT NULL,DESCR VARCHAR(24),QONHAND INT)
ON COMMIT DELETE ROWS
� �� QTEMP ���. ��� �� �� �� ���� SESSION
�� QTEMP � �� �����. � �� ����� � � ���
SELECT, INSERT, UPDATE � DELETE � ��� ���. DROP TABLE
� �� � �� �(drop)� ���.
DROP TABLE ORDERS
��� ��� SQL ���� DECLARE GLOBAL TEMPORARY TABLE ���
�����.
�� � �� � ��
� �� �� �� ��� � ��� ��� � �� �� � � ��� ��
��(�� ��)��. SMALLINT, INTEGER, BIGINT, DECIMAL ��
NUMERIC ��� �� �� �� �� ���. �� �� �� �� ��
��. � ��� ��� � ���� � �� �� �� �� ��� ���
� �� �� �� � ���.
56 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
�� �� � �� � �� �� �� ��� ���. �� ��, ORDERNO,
SHIPPED_TO � ORDER_DATEF�� � �� �� � ORDERS� ��. �
� �� ORDERNO� �����.
CREATE TABLE ORDERS(ORDERNO SMALLINT NOT NULLGENERATED ALWAYS AS IDENTITY(START WITH 500INCREMENT BY 1CYCLE),SHIPPED_TO VARCHAR (36) ,ORDER_DATE DATE)
� �� � 500�� ��� � �� ��� ��� 1� �� ��
�� �� ���� ����. � ��, �� � �� ��� �� ��
�� ����. �� ��� SMALLINT� ���� �� ��, ORDERNO
��� �� � ��� 500 - 32767��. � � 32767 �� 500�
�� ��. ��� � 500� ���� �� �� �� � ���� �� �
��� ���. �� �� � 501 ��� � ���. �� �� � �
��� �� �� �� �� �� � � ���� 500� �� ����.
� ��� � �� � INTEGER �� BIGINT� ��� ���. ��
� ������ INCREMENT �� � ���. �� MINVALUE
� MAXVALUE� �� ��� �� ��� ��� ���.
ALTER TABLE� �� � �� �� � �� ���. �� ��
� �� �� � �� ��� ��� �� ���.
ALTER TABLE ORDERALTER COLUMN ORDERNORESTART WITH 1
�� �� �� � �(drop)� ���.
ALTER TABLE ORDERALTER COLUMN ORDERNODROP IDENTITY
ORDERNO �� SMALLINT�� �� ���, �� �� �(drop)��. ��
�� �� � � ��� ���.
ROWIDROWID� ��� � ���� �� � ��� �� � � �
����. ROWID� �� �� ���� �� �� ���� ��� �� �
�� ����. �� � �� ��� �� ��� �� ����.
� 4 � DDL(Data Definition Language) 57
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|||
|
|
|
|
|
|
CREATE TABLE ORDERS(ORDERNO ROWIDGENERATED ALWAYS,SHIPPED_TO VARCHAR (36) ,ORDER_DATE DATE)
LABEL ON� ��� �� ��� ��
��� � ��, � ��, ���, �� �� SQL ����� �� ��� ���
��� ��� ��� ��� �� ��� ���. LABEL ON� �� �
��, � ��, ���, �� �� SQL ���� �� �� ��� �� ��
���. �� ��� LABEL �� SQL ����� � ���.
LABEL ON�� ��� ���.
LABEL ONTABLE CORPDATA.DEPARTMENT IS ’Department Structure Table’
LABEL ONCOLUMN CORPDATA.DEPARTMENT.ADMRDEPT IS ’Reports to Dept.’
��� �� � � � DEPARTMENT� ��� �� Department Structure
Table� ��� � ADMRDEPT� �� Reports to Dept� ���. �, ��,
SQL ��� � � ��� �� ��� 50�� ��� � ��� � ��
�� ��� 60�� ��� � ���. ��� � �� �� LABEL ON
�� ���.
LABEL ON�� � �� 1� � �� 2� ���.
*...+....1....+....2....+....3....+....4....+....5....+....6..*LABEL ON COLUMN CORPDATA.EMPLOYEE.EMPNO IS
’Employee Number’
LABEL ON�� SALARY� �� 3 ��� � ��� ���.
*...+....1....+....2....+....3....+....4....+....5....+....6..*LABEL ON COLUMN CORPDATA.EMPLOYEE.SALARY IS
’Yearly Salary (in dollars)’
� LABEL ON�� SALARY �� � ��� ���.
*...+....1....+....2....+....3....+....4....+....5....+....6..*LABEL ON COLUMN CORPDATA.EMPLOYEE.SALARY IS ’’
� ��� ��� DBCS � ��� ����.
*...+....1....+....2....+....3....+....4....+....5....+....6..*LABEL ON COLUMN CORPDATA.EMPLOYEE.SALARY IS
’<AABBCCDD> <EEFFGG>’
LAVEL ON�� EDLEVEL � �� � ���� ���.
*...+....1....+....2....+....3....+....4....+....5....+....6..*LABEL ON COLUMN CORPDATA.EMPLOYEE.EDLEVEL TEXT IS
’Number of years of formal education’
58 iSeries� DB2 UDB SQL ����� �� V5R2
|||||
|
LABEL ON� �� ��� ��� SQL ���� LABEL ON� �����.
COMMENT ON ���� SQL ���� ��
�, ��, ��, ���, �����, ���, ��� �� ��, �� �� ����
�� SQL ����� �� � ����� ��, ���, ���� ��� ��
� �� � �� �� ��� �� � �� ��� ��� ���. �� ��
��� � � �� ��� ��� ��� ���. ��� ��� 2000����
��� ���. COMMENT ON� �� ��� ��� SQL ��� ��
COMMENT ON �����.
����� ��� ����� �� ��� ���� �� ��, � ��� ��
�. ��� �� ��� ����� ��� �� ��� �� �� ��
�.
COMMENT ON ��� �� ��� ���.
COMMENT ON TABLE CORPDATA.EMPLOYEE IS’Employee table. Each row in this table representsone employee of the company.’
COMMENT ON�� ��� � �� �
� �� COMMENT ON� �� ��, ���� ��� SYSTABLES�
LONG_COMMENT � ����. � ���� �� ��� ���� ���
� �� LONG_COMMENT � ����(��� �� �� �� �� ���
� ��� ��� ���� ����). �� ��� �� ��� COMMENT ON
� �� ��� ����.
SELECT LONG_COMMENTFROM CORPDATA.SYSTABLESWHERE NAME = ’EMPLOYEE’
� �� ��
� ��� ��� ��� � ��� �� � � ��(�: �, ��� )�
��� � � ��� ���� �� � ��� ���. � ��� SQL
ALTER TABLE� �� ����.
�� ALTER TABLE�� �� �� �� �� ���� � ��, �� ��
��� ���. ���, �� �� ADD COLUMN, ALTER COLUMN �
DROP COLUMN� � ��� ����. �, � ��� � � � ��
ALTER TABLE�� ��� ��� ���� ���.
��� ��� ��� ��� �����.
v 60 ��� �� ���
� 4 � DDL(Data Definition Language) 59
v �� ���
v ����� ���
v 61 ��� �� ���
v 62 ��� �ALTER TABLE�� � ���
� ��
SQL ALTER TABLE�� ADD COLUMN� �� � � ��� �
��.
��� �� � ��� � � �� �� �� � �� ��� �� ����
��. NOT NULL� ���� �� ���� ����� �.
��� �� �� 8000�� �� ��� ���. �� ��� � 32,766 �
� � VARCHAR�� VARGRAPHIC �� ���� ��� 32,740 �
� �. LOB � ��� ��, �� ��� �� ��� � 328 640 �
� �.
� ��
ALTER TABLE�� ALTER COLUMN� �� �� � ��� ���
���. � �� �� �� ��� ��, �� �� ��� �� �� ��
��� �. ����� ���� ��� �� ��� �� ���.
� �� �� ���� ��� �� �� ���� �� ��� ����.
�� �� �� ���� ��� �� ��� ��� ��� ���. ���
� ��� �� �� ���� �����.
� ��� �� �� � � � �� � � ���� DROP
NOT NULL� �����. � ��� �� � � � � � �
�� ! ���� SET NOT NULL� �����. �� �� ��
���, ALTER TABLE� ���� ���� �� SQLCODE -190��.
��� ��
� 2. ���� ��
FROM �� �� TO �� ��
10� ��
10� Bigint, �, Smallint
10� �� �
�� 10�
�� Bigint, �, Smallint
�� �� �
Bigint, �, Smallint 10�
60 iSeries� DB2 UDB SQL ����� �� V5R2
� 2. ���� �� (�)
FROM �� �� TO �� ��
Bigint, �, Smallint ��
Bigint, �, Smallint �� �
�� � ��
�� � Bigint, �, Smallint
�� DBCS ��
�� UCS-2 ���
DBCS �� ��
DBCS �� UCS-2 ���
DBCS �� ��
DBCS �� DBCS ��
DBCS �� UCS-2 ���
DBCS �� DBCS ��
DBCS �� DBCS ���
DBCS �� UCS-2 ���
DBCS ��� UCS-2 ���
UCS-2 ��� ��
UCS-2 ��� DBCS ��
UCS-2 ��� DBCS ���
��� �� �� ��
�� �� ��� ��
�� � �� �� ���� ��� �� ����. �� � ��� �
��� �� �� ���. �� �� ��� �� � ��� ��� ���.
CREATE TABLE EX1 (COL1 CHAR(10) DEFAULT ’COL1’,COL2 VARCHAR(20) ALLOCATE(10) CCSID 937,COL3 VARGRAPHIC(20) ALLOCATE(10)
NOT NULL WITH DEFAULT)
� ��� �� ALTER TABLE� ��
ALTER TABLE EX1 ALTER COLUMN COL2 SET DATA TYPE VARCHAR(30)ALTER COLUMN COL3 DROP NOT NULL
� COL2� �� �� 10�� CCSID� 937�� COL3 �� �� �� �
��� 10��.
� ��
ALTER TABLE�� DROP COLUMN� �� � ��� ���.
� 4 � DDL(Data Definition Language) 61
� �� � ��� �� �� ����. CASCADE� ��� ��� �
� � �� ��, �� � ����� �� ����. RESTRICT� ���
�, ��, �� � ����� � �� ��, �� ���� �� SQLCODE -196
� ����.
ALTER TABLE DEPTDROP COLUMN NUMDEPT
ALTER TABLE�� � ��
ALTER TABLE�� ��� �� �� ��� ���.
1. � ����
2. RESTRICT ��� ��� �� �
3. � �� ��(CASCADE ��� ��� �� �� � � ��)
4. ����� ��
� �� ��, ���� � ��� ��� ��� ��� ���� ���
����. �� �� ��� � ��� ����� ���� � �� ��
���� ���. ��� ��� ALTER TABLE�� �� ��� �� �
��.
ALIAS �� �� � ��
� ��� ��� �� � �� �� �� ��� ��� ��, �� �
� ��� ��� � ���. SQL CREATE ALIAS� �� �
� �� ���.
�� �� �� �� ���.
v � �� ��
v �� ��
� ��� �� ��� �� ��� � �� �� ���. � �� �
�� �� �� ���� SQL� � �� ��� ���. ��� �� �
�� �(drop)� � � �� ������.
�� �� �� MBR1 � MBR2� �� �� �� � MYLIB.MYFILE� ��
��, ��� � �� �� �� �� �� �� SQL �� �� ���
���.
CREATE ALIAS MYLIB.MYMBR2_ALIAS FOR MYLIB.MYFILE (MBR2)
�� MYLIB.MYMBR2_ALIAS� ��� INSERT� ���� ��, �
MYLIB.MYFILE� �� MBR2 ����.
INSERT INTO MYLIB.MYMBR2_ALIAS VALUES(’ABC’, 6)
62 iSeries� DB2 UDB SQL ����� �� V5R2
||
�� �� DDL� ��� ���. �� MYLIB.MYALIAS� �� �
�� � MYLIB.MYTABLE �� ����� ���. ��� DROP�� �
MYLIB.MYTABLE �� ���.
DROP TABLE MYLIB.MYALIAS
�� �� ��� ALIAS ���� DROP� �����.
DROP ALIAS MYLIB.MYALIAS
�� �� � ��
��� � ��� � �� �� �� �� ��� � ��� ���.
�� SELECT� �� ���. SELECT� �� �� ����� 69
��� � 5 � �SELECT� �� �� �� �����. ��� ��,
ORDER BY� ��� ���.
�� ��, �� �� ���� �� ��� ��� ��� ��� �� ��
���.
CREATE VIEW CORPDATA.EMP_MANAGERS ASSELECT LASTNAME, WORKDEPT FROM CORPDATA.EMPLOYEEWHERE JOB = ’MANAGER’
�� ���� ���, ��, � �� ����� �� � ��� ��� ��� AS
�� � ���� ���� �� �� �� �� � ���� �����
�. �� �� ��� �� LASTNAME� YEARSOFSERVICE��.
CREATE VIEW CORPDATA.EMP_YEARSOFSERVICE(LASTNAME, YEARSOFSERVICE) ASSELECT LASTNAME, YEARS (CURRENT DATE - HIREDATE)FROM CORPDATA.EMPLOYEE
�� ��� ��� � ��� �� �� ���� AS� �� ���
���. �� �� ��� ���.
CREATE VIEW CORPDATA.EMP_YEARSOFSERVICE ASSELECT LASTNAME,
YEARS (CURRENT_DATE - HIREDATE) AS YEARSOFSERVICEFROM CORPDATA.EMPLOYEE
� ��� ��, � ��� ��� SQL��� ��� ���. �� ��
�� ��� ���.
��� �� �� �� �� �� ��� ���� �.
v �� �� ��� �� ��� ��, �� �� ��� ���. ��� �
� ��� �� ���� �� �� ����.
– � �� FROM�� � � ��� �()� ���.
– � �� FROM�� �� �� ��� ���.
� 4 � DDL(Data Definition Language) 63
|
|
|
|
– � �� FROM�� ��� �� � �� ���.
– � �� SELECT� SQL � �(SUM, MAX, MIN, AVG, COUNT,
STDDEV, COUNT_BIG �� COUNT) � �� ����.
– � �� SELECT�� ��� DISTINCT� ���.
– �� � �� GROUP BY� HAVING�� ����.
– �� � �� UNION�� ����.
– �� �� �� � ��� �� ����� �� � ��� � ���
�� �� ���.
�� ��� SQL SELECT� �� ��� ��� � ���
INSERT, UPDATE �� DELETE� �� ��� ��� ���.
v ��� ��� ��� ��� ���.
– ��� ��� � �� ��� � �� �(null) ��� ��� ��
�� � �� ��
– ��� ���, �, �� �� � ������� ���� � ��� � �
� INSERT � ��� ��� ��
– �� �� WITH CHECK OPTION� ������ �� �� �� �
� �� ��
v ���� ���, �, �� �� � ������� ���� ��� � ��
� ���.
v FOR UPDATE OF, FOR READ ONLY, FETCH FIRST n ROWS, ORDER
BY, OPTIMIZE FOR n ROWS �� �� �� �� � � ��� �
��.
��� CREATE VIEW� �� ���� �� ��� ���. �� ���
CREATE VIEW� � ��� �� ��� UCS-2 ��� �� ����. �
� �� �� ��� ��� 129 ��� � 8 � �SQL �� ���� ����
�.
��� UNION ���� �� �� ���. ��� ��� �UNION �
� �� �� �����.
��� �� ��� �� ��� ����� ��� � ���� � �� ��
��� �� WITH CHECK OPTION �� �� ���. ��
� ��� 162 ��� ���� WITH CHECK OPTION� �����.
UNION� ��� �� �
UNION ���� ���, � � ��� � �� � ��� ���
���. �� �� ��� ���.
64 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
CREATE VIEW D11_EMPS_PROJECTS AS(SELECT EMPNO
FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = ’D11’
UNIONSELECT EMPNO
FROM CORPDATA.EMPPROJACTWHERE PROJNO = ’MA2112’ OR
PROJNO = ’MA2113’ ORPROJNO = ’AD3111’)
�� ��� �� ���� �� �� ����.
� 3. UNION �� �� �
EMPNO
000060
000150
000160
000170
000180
000190
000200
000210
000220
000230
000240
200170
200220
UNION �� ��� ���� 97 ��� �UNION ���� ��� � �
� � �����.
�� ��
�� �� ��� ��� ��� ���. ��, �� ��� ���
� �� ��� �� ��� ����.
SQL CREATE INDEX� �� �� ����. ��� ��
CORPDATA.EMPLOYEE �� � LASTNAME �� ��.
CREATE INDEX CORPDATA.INX1 ON CORPDATA.EMPLOYEE (LASTNAME)
�� �� �� �� ���. ��� ��� ����� ���� ��
�� ��� ��� �� �� ��� ���� �� �� ���. �� �
�� �� �� ��� ��� ������ �� � �� ��� ��� SQL �
�� ���� �� �����.
� 4 � DDL(Data Definition Language) 65
||||||||||
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
� �� ��, ���� �� ��� ��� �� �� ����� �� �
��� ��� ��. SQL CREATE INDX� �� ���� �� ��
��. accelerating your queries with encoded vector indexes ��
��� ��� iSeries� DB2 ���� ����.
�� ��� ��� � �� ��� ��� ��� ��� � ��� 2� �
�� ���. ��� �� ��� � 2� ��� ���. ��� ��� �
� 1� �� ��� � ���� ��� ��� �� � ��� ��� �
� ����� � 2� ��� ���. ��� � ��� ��� ��
�� �� ��� �� �� � �� � ��� UPDATE� �� ���� �
��� �� ����.
��� CREATE VIEW� �� ���� �� ��� ���. �� ��� �
� ��� �� SBCS �� ��� UCS-2 ��� �� ����. �� �� �
� ��� ��� 129 ��� � 8 � �SQL �� ���� �����.
������ ��� ����
����� ���� �� � ���� ���. �� ��� QSYS2 �����
��� ��� ���� ����� ���. SQL ����� ��� ��
� ��� ���� �� ���� ���� � �� ��� ����. SQL ��
��� ����� ��� QSYS2 ����� ����. DECLARE GLOBAL
TEMPORARY TABLE �� �� �� ���� ���� ���. ��
�� �� ��� ��� SQL ���� �����.
��� �� ��� �� �� ���� ���� ��� ��� ���. �
��� ��� INSERT, DELETE �� UPDATE� ���. �� ��� �
�� ���� �� SELECT �� ��� �.
�� �� ���� �� ��
SYSTABLES� SQL ���� �� �� �� �� �� �� ���. � �
� ����� � �� ����� �, �����, ����� ���, ����� �
� �� SQL ��� ����.
�� � ��� CORPDATA.DEPARTMENT � �� ��� ���.
SELECT *FROM CORPDATA.SYSTABLESWHERE NAME = ’DEPARTMENT’
66 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
�� �� ���� �� ��
SYSCOLUMNS� ���� �� �� ��� � � �� �� �� ���.
�� � ��� CORPDATA.DEPARTMENT �� �� � �� ���.
SELECT *FROM CORPDATA.SYSCOLUMNSWHERE TBNAME = ’DEPARTMENT’
�� � ��� �� � �� � � �� ��� ��� ����. ���
�� �� �� ��� �� � ��� ���� � ���.
� � �� ��� ��� ��� ��� �� SELECT� �����.
SELECT NAME, TBNAME, COLTYPE, LENGTH, DEFAULTFROM CORPDATA.SYSCOLUMNSWHERE TBNAME = ’DEPARTMENT’
� �� � �� � SELECT�� �� ���.
v �� �� � ��
v �� �� ��
v �� � �
v �� ��� �� �
�� ��� ���.
NAME TBNAME COLTYPE LENGTH DEFAULT
DEPTNO DEPARTMENT CHAR 3 N
DEPTNAME DEPARTMENT VARCHAR 29 N
MGRNO DEPARTMENT CHAR 6 Y
ADMRDEPT DEPARTMENT CHAR 3 N
������ ���� ��
DROP�� ����� ���. ���� �� �� �� ���� � ��
���� �� �� ����� ����� �(drop)�� � ��� �
��. �� �� �� �(drop)� �� � �� ��� ��, ����, ���,
�� �� �� ���. ����� ��� ��� ����� ��� ���
�.
�� ��, � EMPLOYEE� �(drop) �� �� �����.
DROP TABLE EMPLOYEE RESTRICT
��� ��� SQL ���� DROP� �����.
� 4 � DDL(Data Definition Language) 67
|
|
|
|
|
|
|
|
|
� 5 � SELECT� ���� �� ��
SELECT� �� ������� ��� �� ���. � ��� �
� ���.
v �SELECT� �� �� ���
SQL�� �� � �� � ��� �� ���. ��� ����� SQL
�� ��, � � �� ��� ��� ��(����� �� ��)� ��� �
�.
�:
1. �� ���� SQL�� SQL �, ��, ������ �� � � ��
���� ���. �, �� � �� ��� �� ����� � � �
���.
2. SQL� ��� �� ���(WHERE �� VALUES� ��� �� ��)�
����� � ��. �, ���� ���� ����� � ���� ����
����� �.
WHERE ADMRDEPT=’a00’ (�� ��� � )
WHERE ADMRDEPT=’A00’ (��� �� �� ��)
��� � ���� �� ��� ���� �� �� ��� �� ��� ��
��� ��� ����� � � ���.
SELECT� ���� �� ��
� � ��� � �� ��� ��� ���. �� �� � �� �
�� ����� SELECT� �� �� �(�: �� �� �) �� �
��. ��, � �� �� ���� ��� ��� �� � � �� ����.
SQL� �� ���� ��� ��� �� ��� ��� � �� �� ��
�. ��� ��� ��� ���.
v 71 ��� �WHERE � ��� �� �� ���
v 74 ��� �GROUP BY��
v 76 ��� �HAVING��
v 77 ��� �ORDER BY��
� ��� ��� ��� �� ��� �� ����. SELECT�� � � �
�� ��� � � ���. SELECT�� ��� ��� ���.
1. ���� � � � ��
© Copyright IBM Corp. 1998, 2002 69
2. ��� �� �� � �� ���
3. �� ��� �� �� � ��� ��� �� ��
4. �� ��� ���� � � ��
5. �� ��� �� �� �� ��� ��� �� ��
6. ��� � �� �� �� �� � � �� ��
SELECT�� ��� ���.
SELECT column namesFROM table or view nameWHERE search conditionGROUP BY column namesHAVING search conditionORDER BY column-name
SELECT � FROM�� ����� �. � �� �� ���.
SELECT�� ��, ��� � � �� �� ���. �� �� ��� �
��.
SELECT EMPNO, LASTNAME, WORKDEPT...
�� � �� 8000 �� �� ��� ���. ��� � �� SELECT
�� ��� ��� ���.
�� � ���(�� �� ���� �� �� ���) � ��� ��
��� �� ��(*)� �����.
SELECT *
...
FROM �� ���� ��� ��� �� �� ���. ��� �� � �
�� ���. SELECT� ���, FROM� ���� �. �� ��
�����.
SELECT *FROM EMPLOYEE
�� EMPLOYEE �� �� �� �� ����.
�� SELECT ���� ���(����, � ���� � ��� � ��) ��
� ���. � � �� ��� AS � ��� ���. ��
��, �� �� ���.
SELECT LASTNAME, SALARY * .05 AS RAISEFROM EMPLOYEEWHERE EMPNO = ’200140’
70 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
||
|
� ��� �� ��� ���.
� 4. �� �� �
LASTNAME RAISE
NATZ 1421
SQL� �� �� ����� � � ��� +100� SQLCODE� �
��.
���� ��� �� SQL� ��� ��� �� SQLCODE� ���. SQL
� ��� �� ��� �� ��� +326� ���.
�� �� �� �� ��� �WHERE � ��� �� �� ��� ��
���.
WHERE � ���� �� �� ��
WHERE�� �, �� �� ���� � ��� �� �� �� ��
�. SQL��� ��� �� � WHERE� �� �� ��� �� ��
����. �� ��� � ��� �� ��� ��. ��� �� ��� �
SQL �� � ��� ���. �� �� ��� ��� 84 ��� ��
�� �� �� �����.
�� ��� WORKDEPT = 'C01'� ���� WORKDEPT� 'C01'� ����
� �(=)� �� �����. ��� ������(’)� �� ��� �
� ���� � �����. �� SQL� �� �� ���� ��� ��
� ����. �� �� �� ��� C01� � ���� ��� �� �
��� �.
... WHERE WORKDEPT = ’C01’
� ��, �� ��� �� ��� ����. � WORKDEPT = 'C01'� ��
�.
WHERE� � ���� �� SELECT � �� ���. CORPDATA.
DEPARTMENT � ��� � �� �� �� ��� ��� ���. �� C01
�� CORPDATA.DEPARTMENT �� ���� ��� ��� �� �
��. �� �� �����.
SELECT DEPTNAME, MGRNOFROM CORPDATA.DEPARTMENT
WHERE DEPTNO = ’C01’
� 5 � SELECT� �� �� � 71
� ��� ��� �� � ��� ����.
� 5. ��
DEPTNAME MGRNO
INFORMATION CENTER 000030
�� �� �� �� UCS-2 ��� � ��� �� ��, �� �� ��� ��
��� ��� �� ����. �� �� � �� �� ��� ��� 129 �
�� � 8 � �SQL �� ���� �����. �� ��� ���� �� �� �
� �� ��� ��� ���� �� ��� �� ���� ���� �.
WHERE� �� ��� ��� �� � �����.
v �WHERE �� ����
v 74 ��� ��� ����
v 74 ��� �NOT ����
WHERE �� ���
WHERE� �� ���� � �� �� ���� � ���� ���. �
���� SQL �� �� � �� ���, ��/��/���� �� ��� �
�. ��� �� ��� ��� ���.
v � ��� � ���. �� �� ��� ���.
... WHERE EMPNO = ’000200’
EMPNO� 6��� �� �� ��� � ���. � ��(�, X = Y �
� X <> Y)� �� �� �� �� ���. � ��� �� �� �
� �� �� ���.
��� �� ��� ��� ��� � ���. �� �� ���� �� �
� �� ���(EMPNO� ��� ���� �� ���� �� ��).
��� �� ���� ��� �� �� ��� �� ��� �� ���
���. ��/�� � �� �� � ���.
v � �� �(+), ��(-), ��(*), � �(/)� ���� � ��� �
� �� ��(**)�� �(CONCAT �� ||)�. ���� �����
��� � ���.
�
�
��� �
�� ��
� ����
72 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
� ��
� ���
�� �� ��� ���.
... WHERE INTEGER(PRENDATE - PRSTDATE) > 100
�� ��� ��� ���� �� ��, ���� �� ��� ���.
1. �� ���
2. �
3. ��, ���, �
4. ��, ��
�� �� ��� ���� �� ���� ����.
v �� ��� �� ��� ���. �� �� ��� ���.
... WHERE 40000 < SALARY
SALARY� 9�� � �� (DECIMAL(9,2))�� ��� � ���. ��
� �� � 40000 ����.
v ��� �� ������ ����� �� ���. �� �� ��� �
��.
... WHERE EMPNO = :EMP
v �� ���� ������ ��� �� ��� � ���. �� �
� ��� ���.
... WHERE LASTNAME = USER
v NULL� � �� �� �� ���.
... WHERE DUE_DATE IS NULL
v � ��. � �� �� �� ����� 117 ��� � 7 � �� ��
��� �����.
�� �� � �� � ���� �� ��� �� �� ��� �� �� �
� ��� ��� ���. AND� OR, ��� � �� �� � �� ��
� ��� � �� �� ��� ���. �� ��� �� ���
� �� �� � � �� �� ���. ��� ��� ���� � �
� � �� �. �, � � �(null)�� � �� �� �� ��� ��
� �� �� �� �� �� �� ��� ���. �� ��� ��
��� ��� 84 ��� �� �� �� �� ���� ���.
WHERE� �� ���� SQL� �� ��� ��� �� ��� �
�� �� ��� �. � ��� SQL ��� �� ��.
� 5 � SELECT� �� �� � 73
�� ��
SQL� ��� �� ���� ���.
= ��
<> �� ¬= �� != �� ��
< �� �
> �� �
<= �� ¬> �� !> �� �� ��(�� �� �� ��)> = �� ¬< �� !< �� ��� ��(�� �� � ��)
NOT ��
�� � � ��� �� NOT ���� ��� ���� ���(�, ���
FALSE�� TRUE�� � � ���). ��� NOT� WHERE� �� �� ��
� �� NOT� � ��� ��� ����. �� �� �� C01� �
�� ��� �� �� �� ���� ��� �� �� ���.
... WHERE NOT WORKDEPT = 'C01'
�� ��� ���.
... WHERE WORKDEPT <> 'C01'
GROUP BY�
GROUP BY� �� SQL � �� ������� �� � ��. GROUP
BY ��� � �� �� ��� �� � �� � �� ����.
GROUP BY� �� �� �� �� � ��� �� ���.
GROUP BY� ��� SQL� ��� � ���� � ��, � ��� ���
� ��� ��� ���� � � �. �� � SQL� � �� �
� �� �� � � �� ���. GROUP BY� � ��� ��
� ��� �� � ���� ���. SELECT� ��� ��� �
� �� �� �� � �� ��� �� ��� � �� �� ����.
�� �� CORPDATA.EMPLOYEE �� � � ��� �� � ��� �� �
�� ��� ��� ��� ����. � ��� � �� �� ���� �
� ��� ���.
SELECT WORKDEPT, DECIMAL (AVG(SALARY),5,0)FROM CORPDATA.EMPLOYEE
GROUP BY WORKDEPT
� �� � �� ��, � �� �� ����.
WORKDEPT AVG-SALARY
A00 40850
74 iSeries� DB2 UDB SQL ����� �� V5R2
WORKDEPT AVG-SALARY
B01 41250
C01 29722
D11 25147
D21 25668
E01 40175
E11 21020
E21 24086
�:
1. �� ���� �� ���� ���� ���. ���� ��� ��� �
� � � � SQL� �� ��� �� ���� ��� �� ����
� � �� �� � ���� �� ����� ���� � � ���(77
��� �ORDER BY�� � � ��� ���� ���). ������ �
�� �� ��� �� �� � ��� ��� ��� � ���.
2. GROUP BY�� ��� � �(null)� ��� �� �� �� �� � �
�� ����.
3. �� �� UCS-2 ��� � �� ���� ��� ��, �� �� ���
�� ��� ��� ����. �� �� � �� �� ��� ��� 129
��� � 8 � �SQL �� ���� �����.
GROUP BY ���, ���� SQL� � ���� �� ��� ��� ���
���. �� �� CORPDATA.PROJECT � ��� � �� ����� �
�� ��� ���� �� �� ��� �� ��� ���.
SELECT SUM(PRSTAFF), MAJPROJFROM CORPDATA.PROJECTGROUP BY MAJPROJ
�� ��� �� �� ����� � ����� � �� � �����.
SUM(PRSTAFF) MAJPROJ
6 AD3100
5 AD3110
10 MA2100
8 MA2110
5 OP1000
4 OP2000
3 OP2010
32.5 ?
� 5 � SELECT� �� �� � 75
|
|
|
|
|
��, � � � ��� ��� ����� ���� ���. �� ��
CORPDATA.EMPLOYEE �� �� � �� �� � �� ��� ��
SELECT� ��� ���. �� �� �� ��� ���.
SELECT WORKDEPT, SEX, DECIMAL(AVG(SALARY),5,0) AS AVG_WAGESFROM CORPDATA.EMPLOYEEGROUP BY WORKDEPT, SEX
�� ��� ���.
WORKDEPT SEX AVG_WAGES
A00 F 49625
A00 M 35000
B01 M 41250
C01 F 29722
D11 F 25817
D11 M 24764
D21 F 26933
D21 M 24720
E01 M 40175
E11 F 22810
E11 M 16545
E21 F 25370
E21 M 23830
� ���� WHERE� ����� ��� �� SQL� CORPDATA.
EMPLOYEE � �� �� � ��� ���. SQL� � ��� � �
��� � �� �� ���, (� �� ��) ��� ��� �����.
HAVING�
HAVING� �� GROUP BY� �� ��� �� �� �� ���
���. HAVING�� �� �� �� ����� ��� �� ���.
���� HAVING� ��� �� ��� �� �� �� �� ����� � �
�� �� ���� �.
HAVING�� GROUP BY� � �� WHERE�� ��� �� �� �
� �� �� ��� ���. �� HAVING� � �� ��� ��
�. �� �� � �� � �� � �� ��� ��� ���. ��
��� AVG � �� �� WORKDEPT �� � � ����
WHERE� SEX = ’F’� �����.
76 iSeries� DB2 UDB SQL ����� �� V5R2
��� ��� ���� �� 16(�� ���) ��� �� �� �� � �
� � ��� �� ��� ���� HAVING� �����. HAVING��
��� ��� ���. � �� ��� �� �� MIN(EDLEVEL)
���.
SELECT WORKDEPT, DECIMAL(AVG(SALARY),5,0) AS AVG_WAGES, MIN(EDLEVEL) AS MIN_EDUCFROM CORPDATA.EMPLOYEEWHERE SEX=’F’GROUP BY WORKDEPTHAVING MIN(EDLEVEL)>=16
�� ��� ���.
WORKDEPT AVG_WAGES MIN_EDUC
A00 49625 18
C01 29722 16
D11 25817 17
AND � OR� � HAVING� � ��� ��� ��� �� ���
�� �� NOT ��� ���.
�: � ���� � ��� �� DECLARE CURSOR� �� SELECT�
GROUP BY��� HAVING� ���� ���(DECLARE CURSOR
�� 135 ��� � 9 � ��� ��� ���� ���). � �� �� �
� ��� ���.
� �� �� �� �� ��� WHERE �� HAVING� �� �� ��
���. �� ��� �� ����� �� �� WHERE�� �� ��
�� �� �����. HAVING ��� � �� �� ��� ��
�.
�� �� �� �� UCS-2 ��� �� ��� ��� �� ��, �� �� �
�� �� ��� ��� �� ����. �� �� � �� �� ��� ���
129 ��� � 8 � �SQL �� ���� �����.
ORDER BY�
��� � �� ��� �� ORDER BY� �� � �� ��� � �
��� �� ������ �� ��� ���. GROUP BY� ��� �
�� ORDER BY� ��, �� ��� � �� � SQL�� ��� �
�� ��� ��� ���.
�� ��, �� ��� ������ ��� � ��� ��� �� ��� �
�� �� �� SELECT� ��� ���.
� 5 � SELECT� �� �� � 77
SELECT LASTNAME,WORKDEPTFROM CORPDATA.EMPLOYEEWHERE SEX=’F’ORDER BY WORKDEPT
�� ��� ���.
LASTNAME WORKDEPT
HAAS A00
HEMMINGER A00
KWAN C01
QUINTANA C01
NICHOLLS C01
NATZ C01
PIANKA D11
SCOUTTEN D11
LUTZ D11
JOHN D11
PULASKI D21
JOHNSON D21
PEREZ D21
HENDERSON E11
SCHNEIDER E11
SETRIGHT D11
SCHWARTZ E11
SPRINGER E11
WONG E21
�: �� �� � �� �����.
ORDER BY � ��� �� SELECT� ���� ��� ���. �� ��,
�� �� �� �� �� �� ���� ��� � �� ��.
SELECT LASTNAME,FIRSTNMEFROM CORPDATA.EMPLOYEEWHERE SEX=’F’ORDER BY SALARY DESC
AS �� �� � � �� �� ��� �� ������ � ��� ORDER
BY � ��� ���. AS� ��� ��� �� ���� ����
�. �� �� ������ ��� ���� ��� �� ���� �� ���
��� ���.
SELECT LASTNAME CONCAT FIRSTNME AS FULLNAMEFROM CORPDATA.EMPLOYEE
ORDER BY FULLNAME
78 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
||||
� SELECT�� ����� ��� �� �� ���.
SELECT LASTNAME CONCAT FIRSTNMEFROM CORPDATA.EMPLOYEE
ORDER BY LASTNAME CONCAT FIRSTNME
�� ���� �� � ��� �� ��� ��� ���. �� ��
ORDER BY 3� SELECT� �� ��� �� � �� � �� � �� �
� ���� ���. ��� ��� �� �� � � �� � ���
�� ��� �����.
�� SQL� � ����(ASC) �� ����(DESC) ��� ��� ���
���. ���� ���� � ����. �� SELECT��, SQL� (��
� � ���) �� � FULLNAME ���� �� � �� ���� ��
� �� � � � ����. � �� ��� ���� � ��� � �
���� �� �����.
... ORDER BY FULLNAME DESC
GROUP BY� �� 1� ��� �� �� �� 2� ��� ��(�� �
��� ��� ��)� ��� ���. �� ��, �� �� ���� ���
� �� �� ����� � ����� ���. �� ��� ��� �
� �����.
... ORDER BY WORKDEPT, FULLNAME
�� � �� UCS-2 ��� �� ORDER BY� ���� ��, ��� � ��
���� �� �� ��� �� �� ��� ��. �� ��� ��� ��
� �� �� ��� ��� 129 ��� � 8 � �SQL �� ���� ����
�.
� SELECT�
�� SELECT�(SQL ���� ��� �)� �� INTO�� FROM� � ��
��� �. INTO�� ��� �( �� � ������ ���� ����
�� �)� ���. SELECT� ��� � �� � �� � INTO� �
�� � �� ��� � ��� � �� � � �� ��� � ���
���.
SELECT INTO� � �� � �� �� ���� �. �� ��
CORPDATA.EMPLOYEE � �� � �� ��� EMPNO(�� ��)� ��
�. WHERE�� EMPNO� � ��� ��� ��, � � �� SELECT INTO
�� �� �� 1�(�� 0�)� ��. � � ��� �� ���� �� ��
��� ��� ��. ORDER BY� �� �� ��� �� � �
�� ���. ORDER BY� ��� � � �� � �� �� ���.
� 5 � SELECT� �� �� � 79
SELECT�� �� ��� � �� ��, DECLARE CURSOR� ��
� ��� FETCH� �� � � � ��� ��� � ��� �
�����. �� �� �� ��� 135 ��� � 9 � ��� ��� �
����
������ ���� �� SELECT� ��� ��� ���� �� �� �
�� ���� � �� �����. � ���� � �� ��� ���.
1. �� ��� ��� SELECT� �� � ��� INTO� �� ��� ��� �
�� 1 � 1 � �� � ���.
2. �� ���� ��� �SELECT * ....�� ��� ��� �� ����
�� � �� �� ��� ��, INTO�� ��� � �� ���
�� ��� �� ��� ���. �� �� �� ���� SQLCA� �
�(��� ��)� �� ��(SQLWARN4� �W�� ���).
�� � �� �� ���� � �
NULL � � � �� ��� � ����. � � ��� ��� �� ��
���� ��. � � WHERE � HAVING�� ���� � �� �
� ��� ���. �� �� WHERE�� � � �� �� �� �� �
��� ���. ���� � ��� �� � ��� �� ��� �
� �� � �� �� � ��� ���. �� � � �� ���
�� � �� �� ��� � � ����. ��� �� �� � �
� �� �� �� ���� �� �����.
SELECT DEPTNO, DEPTNAME, ADMRDEPTFROM CORPDATA.DEPARTMENTWHERE MGRNO IS NULL
� �� ��� ���.
DEPTNO DEPTNAME ADMRDEPT
D01 DEVELOPMENT CENTER A00
F22 BRANCH OFFICE F2 E01
G22 BRANCH OFFICE G2 E01
H22 BRANCH OFFICE H2 E01
I22 BRANCH OFFICE I2 E01
J22 BRANCH OFFICE J2 E01
��� �� �� � �� �� �� � ��� ��� �� WHERE�
��� ���.
WHERE MGRNO IS NOT NULL
� � �� �� ��� ��� SQL ��� � �����.
80 iSeries� DB2 UDB SQL ����� �� V5R2
SQL ����� �� ����
SQL� �� ������ ��� ���. ��� �� SQL�� ��, �
����� ��� �� � ���.
�� ��� ��
CURRENT DATE
CURRENT_DATE
�� ��
CURRENT PATH
CURRENT_PATH
CURRENT FUNCTION PATH
���� ��� SQL�� ���� �� �� ��
�, ������ � ��� �� � ����
SQL ��
CURRENT SCHEMA ���� �� ������ ����� ��� �
��� ��� ��� ���� ��� SQL��
�� ��� � ���.
CURRENT SERVER
CURRENT_SERVER
�� �� �� ��� ������� ��
CURRENT TIME
CURRENT_TIME
�� ��
CURRENT TIMESTAMP
CURRENT_TIMESTAMP
���� ���� � �� ��� ��
CURRENT TIMEZONE
CURRENT_TIMEZONE
�� ��� �� �� UTC(Universal Time
Coordinated) �� ��
local time - CURRENT TIMEZONE = UTC
��� QUTCOFFSET� ����.
USER �� �� �� ID(��� ���)
� �� CURRENT DATE, CURRENT TIME, CURRENT TIMESTAMP �
���� �� CURDATE, CURTIME, NOW ��� �� 2� �� �� �
� ��� �� � �� �� �� ��(clock reading) ��� �.
���� �� SQL�� ��, � ����� ��� �� � ����.
�� ��� ��
CURRENT DATE
CURRENT_DATE
CURRENT TIME
CURRENT_TIME
CURRENT TIMESTAMP
CURRENT_TIMESTAMP
�� ���� �� ��� ���� �� ���
��
CURRENT TIMEZONE
CURRENT_TIMEZONE
��� ��� �� UTC �� ��
CURRENT SERVER
CURRENT_SERVER
�� �� �� ��� ������� ��
CURRENT SCHEMA ��� ��� �� �� ���
� 5 � SELECT� �� �� � 81
|||
|||
|||
|||
||||
|||
|||
|||
||||
|
|
|||
|||
||||||
||
|||
|||
||
�� ��� ��
USER ��� ���� �� �� �� ��
ID
CURRENT PATH
CURRENT_PATH
CURRENT FUNCTION PATH
��� ��� �� �� ��
���� ��� � ����� ��� �� ��� ��� ��� �� � �
��� ��� ����. �� �� ��� ��� DB2 Multisystem � �
����.
�� �� ���
�� ���� ��� � ��� ���� � �, �� �� �� �� �
� ��� ���� ������ ����� � ��� ���. �� �� ��
� �� �� �� � ��� � � ���� �� ��� �� ����
�� ��� �� ��� � � ���. � ��� ���� ��
� �� ��� �� �� ��� ��� �� ��� ���� ��� ��
��� �.
��� �� ���� CAST �� �� ��� �� � ��� ���
� ����� ���� ���. �� �� DATE� ��� �� �(BIRTHDATE)
� �� � �� ��� �� �� � 10� ��� ����� � �� ��
� �� ��� ���.
SELECT CHAR (BIRTHDATE,USA)FROM CORPDATA.EMPLOYEE
�� CAST �� �� ���� � ���� ���.
SELECT CAST(BIRTHDATE AS CHAR(10))FROM CORPDATA.EMPLOYEE
��� �� �� ��� ��� SQL ���� ��� ��� �� ����
�.
��, �� � ���� �� ��
��, �� � ����� SQL ���� � �� �� ���� ���� �� �
���. ��, �� � ����� �� ��� �� ��� ��� ��� �
��� ���. ������ ���� ��, ��, ���� �� ��
���.
v DATE, TIME �� TIMESTAMP ��� � �� �� .
82 iSeries� DB2 UDB SQL ����� �� V5R2
||
|||
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
||
|
|
v CURRENT DATE, CURRENT TIME �� CURRENT TIMESTAMP � �
��� �� �� .
v ��� �� ��� ������ � �� ��, �� �� ����� �� �
��. �� �� ���� ��� ���.
... WHERE HIREDATE < ’1950-01-01’
HIREDATE� �� �� ��, �� ��� ‘1950-01-01’� ��� ����.
v ��, �� �� ���� � ���� ���� �� ��� �� ��
UPDATE�� SET��� INSERT�� VALUES� ���.
��, �� � ���� � �� ��� �� �� ��� ��� SQL ����
�� �� �����.
�� �� ��� �����.
v ��� ��� �� ���
v ���/�� ���
�� ��� �� � ��
� �� � ���� CURRENT DATE, CURRENT TIME �� CURRENT
TIMESTAMP � �� �� ��� �� ��, �� �� ���� ���
���. � � �� �� ��� �� �� �� ���. �� SQL
� �� CURRENT DATE, CURRENT TIME �� CURRENT TIMESTAMP
�� � ��� �� ��� . �� ��� �� ��
EMPLOYEE � �� � ��� ��(��)� ����.
SELECT YEAR(CURRENT DATE - BIRTHDATE)FROM CORPDATA.EMPLOYEE
CURRENT TIMEZONE � ����� �� �� �� UTC(Universal Time
Coordinated)� ��� ���. �� �� STARTT�� ��� �� � ���
�� �� DATETIME�� ��� �� �� STARTT� UTC� ���� �� �
� ��� ���.
SELECT STARTT - CURRENT TIMEZONEFROM DATETIME
��/�� �
��� ��� ��, �� � ���� ��� �� �� �� ����
�. ���� � �� �� ��, �� �� ���� ���� ��� ��
�, ��� �� �� ����� ���� � ���. �� � �� �
� �� ��� ��� SQL ��� �� �� �� �� �����.
� 5 � SELECT� �� �� � 83
�� � ��
SQL� SELECT� �� � SELECT�� �� �� ����� � ��
� �� � � ��� ���. � �� � �� ��� ���.
� �� ���� � �� DISTINCT ���� �� ��� �� ���
���.
SELECT DISTINCT JOB, SEX...
DISTINCT� ���� �� �� ���� � ���. ��� �� � �
�� � �� ���� �� �� ���(�� � � � �� ��). ��
�� �� � �� ���� ���� ���. � � ���� �� ��� �
� � ��� ��� ���� � ��� ���. �� �� �� ��� ��
� ��� �� ���� � � �� � ��� � �� DISTINCT
� ��� ���.
�� �� �� �� �� ���.
SELECT DISTINCT JOBFROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’
�� � ���.
JOB
DESIGNER
MANAGER
DISTINCT� SELECT� ����� � ��, SQL� �� �� ����� �
� �� JOB �� �� �� �� �� � ���. Null
� DISTINCT �� �� ��� ����.
SELECT� DISTINCT� ��� �� �� ��� �� ��� ����� ��
�� � ���. �� ��� �� ��� ��� � �� ���� �
�. 'MGR', 'Mgr', 'mgr' ��� �� � ��� � ��� ��� �
��. �� �� � �� �� ��� ��� 129 ��� � 8 � �SQL ��
���� �����.
� �� �� ��
�� �� ��(=, >, <, etc)� �� �� ��� BETWEEN, IN, EXISTS, IS
NULL � LIKE � ���� ��� ���. �� �� ��� � ���
��� ���. ��� �� � �� 117 ��� � 7 � �� �� ���
�����.
84 iSeries� DB2 UDB SQL ����� �� V5R2
�� � UCS-2 ��� � ��� ��, �� ��� BETWEEN, IN, EXISTS �
LIKE� �� �� � �� ���� ����. �� �� �� �� �
� �� ��� ��� 129 ��� � 8 � �SQL �� ���� �����.
�� � �� �� �� ���. ��� ��� 87 ��� �WHERE
� �� � �� ��� �����.
v BETWEEN ... AND ...� � ����� �� �� ����� �� ��
���� ����. �� ��, 1987� ��� �� �� ��� ��
�� ��� ��.
... WHERE HIREDATE BETWEEN ’1987-01-01’ AND ’1987-12-31’
BETWEEN ���� �����. �� �� ��� �� ���� ��
�� �� ��� ��� ���.
... WHERE HIREDATE >= ’1987-01-01’ AND HIREDATE <= ’1987-12-31’
v IN� ��� ���� ��� � �� �� � � � �� ���. �
� ��, �� A00, C01 � E21 �� �� ��� �� � ���� ��
��� ��.
... WHERE WORKDEPT IN (’A00’, ’C01’, ’E21’)
v EXISTS� �� �� ��� ��� � � � �� ����. �� �
�, ��� 60000 ��� �� ��� �� ��� ���.
EXISTS (SELECT * FROM EMPLOYEE WHERE SALARY > 60000)
v IS NULL� � �� � � �� ����. �� ��, ���� ��
� �� �� ��� �� ��� ���.
... WHERE EMPLOYEE.PHONE IS NULL
v LIKE� � � ���� ��� � ��� � � � �� ���.
LIKE� ��� ��, SQL� ���� ��� �� ���� ��� �� ���
���. ���� �� �� �� ��� ���� ���� �� �
�� � �� �� ����.
_ ��� 1� ��� ����.
% ��� ��� 0� ��� �� � ���� �� ��� ����.
��� ��� �� ��� �� SQL� �� �� � 0
� ��� ��� ���. ��� ��� �� �� ���� �� �
�� ��� ���� �.
�: MIXED �� �� �� ��� ��� � � ����. SBCS ��
��� �� SBCS ��� ����. ��� ����� ��� ��� �
��� ���. �, ��� ��� �� � SBCS �� DBCS ��� ��
��. LIKE ��� MIXED �� �� ��� ��� SQL ���� �
����.
� 5 � SELECT� �� �� � 85
|
|
|
|
|
|
�� �� ��� ���� �� �� ���� �� �� ��� ��� ��
���. �� ��, Minneapolis �� �� ��� ��� �� ����
�.
... WHERE ADDRESS LIKE ’%MINNEAPOLIS%’
SQL� � ���� �� ��� ADDRESS �� MINNEAPOLIS �� ��
�� �� �� � ����.
� �� ��� 'SAN'�� ��� �� ���� ��� �� ��� �
��.
... WHERE TOWN LIKE ’SAN%’
�� ��� ��� �� �� � �� ��� ���, LIKE ��� ��
� ��� ���. � ��, �� STREET �� ���� ����.
... WHERE UCASE (:address_variable) NOT LIKE ’%’||STREET||’%’
���� ��� ��� ��� �� ��� ���� ESCAPE� ��
�� ��� �����. �� ��, �� ���� �� �� �� ���
�� �� ��� ��.
... WHERE BUSINESS_NAME LIKE ’%@%%’ ESCAPE ’@’
� ��� ��� ��� ��� �� �� ����. ‘@%’� �� �� �
�� ��� ����. ��� ��� �LIKE �� � ����� ���
��.
�� �� �� �� � SQL ���� ��� �����.
LIKE� �� �� ���
v ��� �� �� �� �� ��� �� �� ��� ��, �� � �
�� � �� ���� �. ��� �� ���.
– �� ��� ��� �� ���� ��� � ���.
– ��� �� ��� ��� �� �� ��� �� ��.
v �� � ��� �� �� �� �� ��� � �� ��� ��, �
�� � ��� � ��� � �� �� ��� �� ���� �
��� �. � ���� �� ��� �� �� ��� ���� ����
��.
�� �� �� ��� �� ��� � ‘ABC%’� �� �� �
�� ��� �� �� �� ���.
’ABCD ’ ’ABCDE’ ’ABCxxx’ ’ABC ’
86 iSeries� DB2 UDB SQL ����� �� V5R2
�� �� �� �� 10� ��� � �� �� ‘ABC%’�� �� �
�� �� �� ��, � �� 12�� ��� � �� �� � �
�� ���.
’ABCDE ’ ’ABCD ’ ’ABCxxx ’ ’ABC ’
��� �� � ‘ABC’� � ��� 6�� ���� ���� � ��
���. �� ��� �� � 6� ��� � ���� �� ��� ��
��� ����.
� 7� �� �� � � �� � ��� �� ����
‘ABC%%%%%%%’� ��� ��. ��� �� �� � ��.
’ABCDEFGHIJ’ ’ABCXXXXXXX’ ’ABCDE’ ’ABCDD’
WHERE �� �� �� ��
71 ��� �WHERE � ��� �� �� ��� �� � �� �� �
�� �� ����. � �� ��� �� �� �� �� �� �� �
� ��� ��� ���. ���� ��� �� ��� �� ��� ��
BETWEEN, IN, LIKE, IS NULL � IS NOT NULL � �� � ��� ��
� ���.
��� AND� OR� � �� ��� � ���. �� NOT ���� ��
�� �� ��� ��� �� ��� �� ��� ��� ���.
WHERE�� ���� �� ��� ��� ��� ���.
v AND� ��� �� �� ��� � �� ��� ���� � ���. ��
�� �� D21� �� ��� 1987� 12� 31 �� ������� �� �
� �� ��� ���.
...WHERE WORKDEPT = ’D21’ AND HIREDATE > ’1987-12-31’
v OR� ��� �� �� ��� � �� �� � �� �� �� ��� ��
���� � ���. �� �� �� C01 �� D11 �� ��� ���
��� �� ��� ���.
...WHERE WORKDEPT = ’C01’ OR WORKDEPT = ’D11’
�: �� � ��� ��� � IN ��� ���.
WHERE WORKDEPT IN (’C01’, ’D11’).
v NOT� ��� �� NOT �� �� ��� �� �� �� ��� �� �
���� �� ���. �� �� � ��� ANALYST� �� ���
�� E11� �� �� �� ���� ��� �� ��� ���.
...WHERE WORKDEPT = ’E11’ AND NOT JOB = ’ANALYST’
� 5 � SELECT� �� �� � 87
SQL� ��� ��� �� �� �� �� �� � �� �� �� ��
��. SQL� �� NOT� �� �� AND� �� OR� �
�.
��� �� � ��� ��� ���. ��� � �� ��� �� �
��. �� �� �� �� 12 ��� �� E11� E21� �� �� ���
���� �� ��� ���.
...WHERE EDLEVEL > 12 AND
(WORKDEPT = ’E11’ OR WORKDEPT = ’E21’)
��� �� ��� ��� ��. � ��� ��� �� �� �� ���
�.
WORKDEPT � E11 �� E21��
EDLEVEL � 12�� � �
��� ��� �� ��,
...WHERE EDLEVEL > 12 AND WORKDEPT = ’E11’OR WORKDEPT = ’E21’
�� ����. ��� �� ��� �� ���.
WORKDEPT = E11 � EDLEVEL > 12, ��
EDLEVEL ���� WORKDEPT = E21� �
�� ��� ���� ��
��� �� ��� �� �� �� � ���. � �� � ��
� �� �� � �� �� � � �� � �� �� �� ���.
� � ��� � �� � � �� ��� � ���.
iSeries� DB2 UDB �� ���� 4�� ��� �� , � �� ,
�� �� , � �� � �� �� � �� � ���.
v 89 ��� ��� �� � �� �� � �� �� ��.
� ��� �� �� ��� � � ���� ���.
v 90 ��� � � �� �� � �� �( � �� �)� �� � � � �
� �� �� � ��. � �� �� � � �� �� ���
� �� �� �� � �� � ��.
v 91 ��� ��� �� �� � �� �(��� �)� �� � ��
�� �� � �� � �� �� ��. � �� �� �
� �� �� ��� � �� �� �� � �� � ��.
88 iSeries� DB2 UDB SQL ����� �� V5R2
v � �� � � �� �� � �� �� �� �� ��.
� �� � � �� �� � ��� � ���.
v �� �� � �� �� � � �� �� �� �� �
�. � �� � � �� �� � � ���.
v 92 ��� ��� �� � ���� ��� � � ��� � � �
��(Cartesian Product).
� �� � �� �� �� �� �� ������ �
��. ����� 93 ��� ��� �� ������� �����. �� �
�� � �� ��� ���. ����� 94 ��� �� �
�� � ��� �����.
��� �� ����
� � ��� � � �� ����.
v ���� � ��� � ��� � � �� � � ��(�� ���) ���
� �. ��� � ��� ��� �� ��.
v �� � �� ��� �� ��� � �� SELECT *� ��� �� SQL
� � �� �� �� �� � �� � �� �� �� �� ���� � �
�.
v FROM� ��� � �� ��� � ��� �� ��� �.
v �� ��� �� �� ��� UCS-2 ��� � ����.
�� �
�� ��� � �� ��� ���� ��� �� � �� �� �
�(�� ��) �� � �� �� � ��. SQL� ��� ���
� �� � �� �� ����� �� ����� ��� ��. �
� ��� ��� JOIN �� ��� �� WHERE� ��� 2�
�� ���.
���� �� �� ��� ��, �� � ���� ��� �� ��� �
�� ����. � CORPDATA.EMPLOYEE �� EMPNO � LASTNAME �
��� CORPDATA.PROJECT �� PROJNO � �� �. ��
� �� ‘S’� � �� ���� �� ��� �������. � ��� ��
���� � �� �� �� �.
JOIN ��� ��� �� �
�� �� ��� ���� � ���� ��� �� ���� �
� ��� FROM� ��� �. ��� ON ��� � ����
�� ��� �� � �� �� ���� �� ��. �� �� ����
��� ��� � � � ���� ��� ��� ���. � ��� AND
� 5 � SELECT� �� �� � 89
|
|
|
|
���� � �� ON� ��� ���. �� ���� �� �� ��
� WHERE���, ON�� �� � � �� ����.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.EMPLOYEE INNER JOIN CORPDATA.PROJECT
ON EMPNO = RESPEMPWHERE LASTNAME > ’S’
� ��� ���� EMPNO� RESPEMP � �� � � �� �
���. ��� �� ‘S’� �� ���� ��� � �� ��� WHERE�
� ����.
� ��� �� �� ��� ���.
EMPNO LASTNAME PROJNO
000250 SMITH AD3112
000060 STERN MA2110
000100 SPENSER OP2010
000020 THOMPSON PL2100
WHERE � ��� �� �
WHERE� �� �� �� �� ���� ��� WHERE
�� �� �� �� ��� �� ��. � ��� FROM� ��
� �� ����.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.EMPLOYEE, CORPDATA.PROJECTWHERE EMPNO = RESPEMPAND LASTNAME > ’S’
� ��� �� �� � �� �� ��� ��.
�� �� �
� �� � �� � ���� � � � �� �� �� ��
� � �� � �� ��� � � �� �� � ����.
�� ��� � ���� �� �� �� ����� ��� ��� ����.
�� �� ���� �� �� �� ��� � � �� ��� ����.
��� ��� �� ‘S’��� � �� ��� ��� �� �� � ��� ��
�� ��� ���� ��.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.EMPLOYEE LEFT OUTER JOIN CORPDATA.PROJECT
ON EMPNO = RESPEMPWHERE LASTNAME > ’S’
� ��� �� ���� ��� �� � ��� ��� ���. ��� �
� � � ��� �� ���� �� �� � ����.
90 iSeries� DB2 UDB SQL ����� �� V5R2
EMPNO LASTNAME PROJNO
000020 THOMPSON PL2100
000060 STERN MA2110
000100 SPENSER OP2010
000170 YOSHIMURA -
000180 SCOUTTEN -
000190 WALKER -
000250 SMITH AD3112
000280 SCHNEIDER -
000300 SMITH -
000310 SETRIGHT -
200170 YAMAMOTO -
200280 SCHWARTZ -
200310 SPRINGER -
200330 WONG -
�
RRR ��� �� �� � �� �� �� � �� � �� �
�� �� ��� ��� �� �� �� � �� 0� ���.
�� �� �
�� �� � �� � �� �� � � � �� �� � ��
� �� �� �� ��� � �� �� �� � ��. ��� �
� ��� ����� � ���� � �� � ��.
� �� �� ��� ��� ��� �� �� �� �� �� � �
��.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.PROJECT RIGHT OUTER JOIN CORPDATA.EMPLOYEE
ON EMPNO = RESPEMPWHERE LASTNAME > ’S’
� ��� �� � �� ��� �� ��.
�� �
� �� � � �� �� � �� �� �� �� �� ��. �
� �� �� �� �� ���� �� �� ��� ������.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.EMPLOYEE EXCEPTION JOIN CORPDATA.PROJECT
ON EMPNO = RESPEMPWHERE LASTNAME > ’S’
� 5 � SELECT� �� �� � 91
� � ��� ��� ���.
EMPNO LASTNAME PROJNO
000170 YOSHIMURA -
000180 SCOUTTEN -
000190 WALKER -
000280 SCHNEIDER -
000300 SMITH -
000310 SETRIGHT -
200170 YAMAMOTO -
200280 SCHWARTZ -
200310 SPRINGER -
200330 WONG -
�� � NOT EXISTS ��� �� � ��� �� ���. ��
��� ��� �� ���� �� �� ���.
SELECT EMPNO, LASTNAMEFROM CORPDATA.EMPLOYEE
WHERE LASTNAME > ’S’AND NOT EXISTS
(SELECT * FROM CORPDATA.PROJECTWHERE EMPNO = RESPEMP)
� ��� �� ���� PROJECT �� �� ��� ���.
��� ��� ��� � ���� � �� � �� �� �� �
� �� � ���.
�� �
�� (�� Cartesian Product )� � �� �� � �� � �� �� � �
� �� ���� � �� ��. � �� � � � � �� � �
���. �� ��� ��� � ��� ��� �� �� �� �
��.
�� � � �� ���� ��� ��� �� JOIN �� ��� ��
�� � �� �� ��� �� WHERE� ��� �� FROM�
�� �� � ��� ����.
��� �� ��� ���� ���.
� 6. � A
ACOL1 ACOL2
A1 AA1
A2 AA2
92 iSeries� DB2 UDB SQL ����� �� V5R2
� 6. � A (�)
ACOL1 ACOL2
A3 AA3
� 7. � B
BCOL1 BCOL2
B1 BB1
B2 BB2
��� �� � SELECT�� �� �� �� ��.
SELECT * FROM A CROSS JOIN B
SELECT * FROM A, B
� SELECT�� � �� ��� ���.
ACOL1 ACOL2 BCOL1 BCOL2
A1 AA1 B1 BB1
A1 AA1 B2 BB2
A2 AA2 B1 BB1
A2 AA2 B2 BB2
A3 AA3 B1 BB1
A3 AA3 B2 BB2
�� �� � �����
� � �� �� �� �� �� �� � � �� �� � �
�. ��� �� �� � � � ��� � �� �� �� �
��. iSeries� DB2 UDB� �� �� �� ��� ���� � �
� � �� �� �� �� �� ������ ���.
�� ��� �� ����� �� � �� ���� �� �� �� ��
� �� ��� ���. ��� ��� �� ‘S’��� � �� ��� ���
�� �� � ��� ���� ��� ���� ��.
SELECT EMPNO, LASTNAME, PROJNOFROM CORPDATA.EMPLOYEE LEFT OUTER JOIN CORPDATA.PROJECT
ON EMPNO = RESPEMPWHERE LASTNAME > ’S’
UNION(SELECT EMPNO, LASTNAME, PROJNO
FROM CORPDATA.PROJECT EXCEPTION JOIN CORPDATA.EMPLOYEEON EMPNO = RESPEMP
WHERE LASTNAME > ’S’);
� 5 � SELECT� �� �� � 93
|
|
|
|
|
|
|
|
|||||||||
� ��� �� � ��
�� �� �� �� 3� ��� �� �� � �� � ���. �� �
�, � ��� ��� � ��� �� �� ����� �� �� ��� �
��� EMPLOYEE �, DEPARTMENT � � PROJECT �� �� �. �
�� ��� � �� ���.
SELECT EMPNO, LASTNAME, DEPTNAME, PROJNOFROM CORPDATA.EMPLOYEE INNER JOIN CORPDATA.DEPARTMENT
ON WORKDEPT = DEPTNOLEFT OUTER JOIN CORPDATA.PROJECTON EMPNO = RESPEMP
WHERE LASTNAME > ’S’
� ��� �� ��� ���.
EMPNO LASTNAME DEPTNAME PROJNO
000020 THOMPSON PLANNING PL2100
000060 STERN MANUFACTURING SYSTEMS MA2110
000100 SPENSER SOFTWARE SUPPORT OP2010
000170 YOSHIMURA MANUFACTURING SYSTEMS -
000180 SCOUTTEN MANUFACTURING SYSTEMS -
000190 WALKER MANUFACTURING SYSTEMS -
000250 SMITH ADMINISTRATION SYSTEMS AD3112
000280 SCHNEIDER OPERATIONS -
000300 SMITH OPERATIONS -
000310 SETRIGHT OPERATIONS -
�� ��� ��� SQL ���� �����.
� �� ��
� ��� �� �� � �� ��� ���. � ���� ��� ��
� ��� ��� � ��� �� �� �� �� �� ��� ���. � �
��� ��� � ���(��� ��� �)� �� � ����� ����.
��� � ���� FROM � ��� � ����. �� ��, ��� ��, �
� �� � � �� �� �� ��� ��� � �� ���� ���. �
�� ��� DEPARTMENT �, �� ��� DEPARTMENT � EMPLOYEE �
� ���, ��� EMPLOYEE � ���. FROM�� � ��� ��
� �� �� �� ��� ��� ���. �� ��� � �� �
� �� ��� � ��� �� ��� T2� ��� ���. ���, �� �
�� T2� �� ��� �� ��� �(� ��, MAXSAL � WORKDEPT)
94 iSeries� DB2 UDB SQL ����� �� V5R2
|
���. �� ��� ��� �� ��� � ���� ���
MAX(SALARY) � ��� ���� �. AS� �� � �� �
�.
SELECT MGRNO, T1.DEPTNO, MAXSALFROM CORPDATA.DEPARTMENT T1,
(SELECT MAX(SALARY) AS MAXSAL, WORKDEPTFROM CORPDATA.EMPLOYEE E1GROUP BY WORKDEPT) T2
WHERE T1.DEPTNO = T2.WORKDEPTORDER BY DEPTNO
�� �� ��� ���.
MGRNO DEPTNO MAXSAL
000010 A00 52750.00
000020 B01 41250.00
000030 C01 38250.00
000060 D11 32250.00
000070 D21 36170.00
000050 E01 40175.00
000090 E11 29750.00
000100 E21 26150.00
�� � ���� SELECT�, INSERT� �� CREATE VIEW�� �� �� �
� ��� ���. � ����� �� � �� �� ��� ����� �
� ��� ���. �� � ��� �� ��� WITH� ���.
�� ��, �� �� �� �� � �� � ��� ��� �� ���� ��
� ����. �� ��� � �� ��� �� ��� ��� ���� ‘D’ ���
�� ���� ‘E’ ��� �� ��� �� �� � �� � ��� �
�� ��, �� � ��� �� � �� �� � ��� ��� ��
�. � ��, ��� � �� ��� �. � ��, ��� DT��. �
� �, WHERE� ��� SELECT� �� �� �� ��� �� �
��� ��� ���. ��� � DT� AVGSAL �� �� � �� �
����. �� ‘E’ �� �� �� ‘D’ �� �� ���� UNION �
����.
WITH DT AS (SELECT E.WORKDEPT AS DEPTNO, AVG(SALARY) AS AVGSALFROM CORPDATA.DEPARTMENT D , CORPDATA.EMPLOYEE EWHERE D.DEPTNO = E.WORKDEPTGROUP BY E.WORKDEPT)
SELECT ’E’, MAX(AVGSAL), MIN(AVGSAL) FROM DTWHERE DEPTNO LIKE ’E%’UNIONSELECT ’D’, MAX(AVGSAL), MIN(AVGSAL) FROM DTWHERE DEPTNO LIKE ’D%’
� 5 � SELECT� �� �� � 95
�� �� ��� ���.
MAX(AVGSAL) MIN(AVGSAL)
E 40175.00 21020.00
D 25668.57 25147.27
�� ������ � �� 1000�� � ��� �� 5 ��(��� ��
���) � � ��� ��� �, � � ‘XXX’ �� ���
��� ���.
WITH X AS (SELECT ORDER_ID, CUST_IDFROM ORDERSORDER BY ORD_DATE DESCFETCH FIRST 1000 ROWS ONLY),
Y AS (SELECT CUST_ID, LINE_ID, ORDER_QTYFROM X, ORDERLINEWHERE X.ORDER_ID = ORDERLINE.ORDER_ID)
SELECT LINE_IDFROM (SELECT LINE_ID
FROM YWHERE Y.CUST_ID IN (SELECT DISTINCT CUST_ID
FROM YWHERE LINE.ID = ’XXX’ )
GROUP BY LINE_IDORDER BY SUM(ORDER_QTY) DESC)
FETCH FIRST 5 ROWS ONLY
� �� �� � ���(X)� �� ��� 1000�� �� ��� ��. ��
��� ������ ���� ��� ��� � 1000 �� � �� ���.
� �� �� � ���(Y)� �� 1000�� �� �� �� �� (1000
�� �� �� �)� , �� �� � �� ���� �� �� � �
�.
� �� ��� �� �� XXX �� ��� �� 1000�� �� �� �� �
� �� �� ��. XXX� ��� �� � �� �� �� ����
����� � ��� �� �� �� ��� ����.
����� �� ��� ��� �� �� �� � � � 5 �� ���.
96 iSeries� DB2 UDB SQL ����� �� V5R2
UNION ���� ���� �� ��
UNION ���� ���, � � ��� � �� �� �� ���
���. SQL� UNION ���� ��� ��, �� � �� ��� ��
��� � �� ��� �� � � ��� � �� � � � ��
��� �� �� �� ���. UNION ���� �� � � ��� �
��� � ���� �. SELECT� �� �� � ��� � � ��
��� ���.
UNION ��� � �� �� �� ��� � ���� � ��
���. �� �� ��� ��� ��� �� ��� ���� �� ��
�.
v �� D11� ��
v ���� MA2112, MA2113 � AD3111 "� �� ��
���� � �� �� ��� ��� ���� ���. �� ��� �
�� �� �����.
SELECT EMPNOFROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’UNIONSELECT EMPNO
FROM CORPDATA.EMPPROJACTWHERE PROJNO = ’MA2112’ OR
PROJNO = ’MA2113’ ORPROJNO = ’AD3111’
ORDER BY EMPNO
�� �� � ���, ��� � ��� �� ��� �� � UNION ���
���. ����� 64 ��� �UNION �� �� �� ����
�.
�� SQL�� �� �� �� ��� �� SQL� ��� �� ����� ��
��� ���.
�� 1. SQL� � �� SELECT� ���.
SELECT EMPNOFROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’
���� � �� ��.
CORPDATA.EMPLOYEE���� EMPNO
000060
000150
� 5 � SELECT� �� �� � 97
CORPDATA.EMPLOYEE���� EMPNO
000160
000170
000180
000190
000200
000210
000220
200170
200220
�� 2. SQL� � �� SELECT� ���.
SELECT EMPNOFROM CORPDATA.EMPPROJACT
WHERE PROJNO=’MA2112’ ORPROJNO= ’MA2113’ ORPROJNO= ’AD3111’
� � ���� � �� ��.
CORPDATA.EMPPROJACT���� EMPNO
000230
000230
000240
000230
000230
000240
000230
000150
000170
000190
000170
000190
000150
000160
000180
000170
000210
000210
�� 3. SQL� �� � � � ���� �� � �� ���� ��� �
�.
SELECT EMPNOFROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’
98 iSeries� DB2 UDB SQL ����� �� V5R2
UNIONSELECT EMPNO
FROM CORPDATA.EMPPROJACTWHERE PROJNO=’MA2112’ OR
PROJNO= ’MA2113’ ORPROJNO= ’AD3111’
ORDER BY EMPNO
� ������ � � � �� ��.
EMPNO
000060
000150
000160
000170
000180
000190
000200
000210
000220
000230
000240
200170
200220
UNION ��� ���
v �� ORDER BY�� UNION ���� �� � � �� � �����
�. � �� �� � �� ��� � EMPNO �� �����.
ORDER BY�� � � �� �� ��� � ���. ORDER BY
� ��� ���� ���.
v � �� ���� ORDER BY� ��� ����. � ��� ��� �
�� �� �� �� �� �� � �� ����. AS�� �� ���
�� � �� ���� ��� ���.
SELECT A + B AS X ...UNION SELECT X ... ORDER BY X
� �� ���� ��� �� ������. ��� � �� ���� �
�� ��� � �� ���� ��� �.
SELECT A + B ...UNION SELECT X ... ORDER BY 1
� 5 � SELECT� �� �� � 99
|
|
|
|
� �� �� � �� ���� UNION ���� � � ��� SELECT
��� � �� ���� ���. SQL� �� ��� � � �� �
�� ��� � �� �� �� ����. �� ��, �� ��� ��
�.
SELECT A, B, ’A1’ ...UNIONSELECT X, Y, ’B2’...
�� ���, �� � � ��� �� ��� �� (A1 �� B2)� ���
�. UNION ���� � ��� ��� ��� SQL� �� ���� � �
� � �� � ��� ��� � �� ��� ���� SQL DESCRIBE� �
�� ��� SQLDA� ��� � �� ��� ���.
UNION� �� � � �� ��� ��� �� ��� SQL ���� � �
� ��� �� ��� �����.
�: �� ��� � UNION � �� ��� ��� ��� ����. ��
��� UNION ��� ����� ��� ��� �� ����. �� �
� �� ��� ��� 129 ��� � 8 � �SQL �� ���� ����
�.
UNION ALL ��
UNION �� ��� ���� UNION �� UNION ALL �����.
UNION� �� �� � �� ���.
�� 3. SQL� � �� ���� � �� ��.
SELECT EMPNOFROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’UNION ALLSELECT EMPNO
FROM CORPDATA.EMPPROJACTWHERE PROJNO=’MA2112’ OR
PROJNO= ’MA2113’ ORPROJNO= ’AD3111’
ORDER BY EMPNO
���� �� ��� ��� ���.
EMPNO
000060
000150
000150
000150
000160
000160
100 iSeries� DB2 UDB SQL ����� �� V5R2
EMPNO
000170
000170
000170
000170
000180
000180
000190
000190
000190
000200
000210
000210
000210
000220
000230
000230
000230
000230
000230
000240
000240
200170
200220
UNION ALL �� ���. �� �� �� ����.
(SELECT PROJNO FROM CORPDATA.PROJECTUNION ALLSELECT PROJNO FROM CORPDATA.PROJECT)UNION ALLSELECT PROJNO FROM CORPDATA.EMPPROJACT
�� � ��� ��� �� � � ���.
SELECT PROJNO FROM CORPDATA.PROJECTUNION ALL(SELECT PROJNO FROM CORPDATA.PROJECTUNION ALLSELECT PROJNO FROM CORPDATA.EMPPROJACT)
��� UNION ����� �� SQL� UNION ALL ����� � �
� � �� �� ����. ��� ��� �� �� ���� ��
�. ��� ������ �� �� � ��� �� ��� ��� ��� �
� � �� ���� ���.
� 5 � SELECT� �� �� � 101
�� �� �
SQL� ��� �� �� ��� ��� �� � � �� ��.
v ��� � ���� ��� ���.
v SQLCA� SQLWARN0� SQLWARN1 'W'� ���.
v ����� �� ��� ��, �� ��� � �� ���.
SQL� ��� ���� �� �� � ��� ��� �� � �� ��
�.
v SELECT ��� �� ��� ��� �� ��� ��� ��� ����� �
� ���� �� �� ��� ���.
– SQL� ����� � �� ��� �� ��� ��� -2� ���
�.
– SQL� �� � �� ��� �� ��� ����.
– SQL� � SQLCODE� ����.
v ����� �� ���� ���, SQL� SQLCA� �� �� SQLCODE�
����.
�� � ��� ��� ���.
v +138 - ����� �� �� ��� ���.
v +180 - ��, �� �� ����� ��� �� �� ��� ��� ���.
v +181 - ��, �� �� ����� ��� ��� ��� � ���.
v +183 - ��/�� ���� �� ��� ���. � ��� ����� �
�� �� �� ���.
v +191 - MIXED ��� ��� ���� ���.
v +304 - �� �� ��(�� ��, �, �� �� 0�� ��)��.
v +331 - ��� ��� ���.
v +420 - CAST �� ��� ��� ���.
v +802 - �� �� �� �� � ����.
�� � ��� ��, SQLCA� ����� �� ��� ���. ��� �
� � � � ��� ����� �� -2� ����.
�� SELECT SELECT ��� �� DISTINCT� �� �� SELECT ��� �
� � ��� �� �� ��� �� ��� ��� ��� ��� ��, ���
�(null)� � � �� ����. � ��� ���� ��� �� � � �
� ���� ���.
�� � ��� ORDER BY� ��� ��� �� �� ���.
102 iSeries� DB2 UDB SQL ����� �� V5R2
v SELECT INTO �� FETCH�� ��� � ��� ���� �� ��
� ��� ��� ORDER BY� �� ���� ��� ��, � ����
���� ��� ��� ����. ��� �(� �� �� ���)� �
�� ���� ���. �� ��� � �� �� �� � ���
� ���� ����.
v �� ���� ���� ��� �� �� � ��� ��� ORDER BY�
� �� ���� ��� ��, � �� �� ��� � (� �� ��
���)� ��� ����� ���. ORDER BY�� �� �� ��
�, � �� ��� � � ��� ���. ��� �� �� ORDER BY
�� � �� �� ��� � �� �� �� ���� �� �
�� ��� ����.
– ���� *MDY, *DMY, *YMD �� *JUL �� ��� �� ��� ���
��� �� � �� �� �� �� �� ��� ��� ��
– ���� �� ��� ��� ��� �� ��
– ���� 10� ��� ��� �� ��� �� ��
� 5 � SELECT� �� �� � 103
� 6 � SQL ��, � � ��
� ��� ��� ��, �� � ��� �� �� ��� ��� �� SQL
�� � ���. ��� SQL�� UPDATE, DELETE � INSERT��. �
�� SQL� ��� �� SQL ������ ��� � � �� �� ��
��. SQL� �� ��� ��� ��� ��� SQL ��� �� ���.
�:
1. �� ���� SQL�� SQL �, ��, ������ �� � � ��
���� ���. �, �� � �� ��� �� ����� � � �
���.
2. SQL� ��� �� ���(WHERE �� VALUES� ��� �� ��)�
����� � ��. �, ���� ���� ����� � ���� ����
����� �.
WHERE ADMRDEPT=’a00’ (�� ��� � )
WHERE ADMRDEPT=’A00’ (��� �� �� ��)
��� � ���� �� ��� ���� �� �� ��� �� ��� ��
�� ��, �� ��� ����� � � ���. �� �� �� ��
� ��� 129 ��� � 8 � �SQL �� ���� �����.
� � ��� �� ��� ���.
v �INSERT �� �� � ���
v 110 ��� �UPDATE �� �� �� �� ���
v 115 ��� �DELETE �� �� �� � ���
INSERT ��� ���� � ��
���� INSERT� �� �� � �� ���� �� �� ��� �
��� ���.
v ��� � �� � �� INSERT�� ��.
v � �� �� ��� � �� �� ��� ������ SQL ��� ��
INSERT� SELECT� ��. 108 ��� �SELECT� �� � � �
��� INSERT� �� SELECT� �� � � ��� ��� �
��� ���.
© Copyright IBM Corp. 1998, 2002 105
v � �� ��� �� ��� INSERT ��. 109 ��� � INSERT
���� � � � ����� � � � ��� �� ���
INSERT� ��� �� �� ���.
�: ��� � � ��� ��� ��� ��� ���� �� �� �� �
��� ���. ��� ��� �� �� �� ��� �� � ����
� 63 ��� ��� � � ��� �����.
INSERT� ��� ��� SQL ���� INSERT� �����.
��� �� �� ���� NOT NULL ��� ��� �� ��� ��
�� � �� � ��� � ���� �. �� �� � ���
�� INSERT�� ��� � ���.
INSERT INTO table-name(column1, column2, ...)
VALUES (value-for-column1, value-for-column2, ...)
INTO�� ���� ��� � ���. VALUES�� INTO�� �
�� � � ���. ���� ��� � �� �� ���.
�. VALUES � ��� ���.
� �. ��� NULL �� � ���. �� � �� �� ��
��� ��� ���� �.
��� �. ��� �� �� ���.
�� ���. �� ��, USER� �� � ���� ���.
� �. ���� �� ���.
�� ��� select� �� � ���.
DEFAULT ���. �� ��� ���. � �� � �� ��� �
�� ���� � ���� � ��� ��� ��� ���.
INSERT ��� � ��� ��� � �� VALUES�� ��� ���
� �. � �� ���� � �� �� � VALUES�� ��� � ���
��� ���. �� ��� ��� ��, ��� DEFAULT� VALUES
�� �� ��� ���. �� �� �� �� � � ��� ��.
���� �� � ��� �� �� ��� ��� ���.
v INSERT�� �� ���� �� �� ��.
v � �� ��� �� ��� ��� ��� ���.
v �� ���� ����. �� � ��� ��� INSERT� �� �� �
��.
106 iSeries� DB2 UDB SQL ����� �� V5R2
�� � ���� ���� � ����, � � � �� ��� ��
�� � ��� ��� ���. ��� � ����. �� ��� �
���� � ��� � ���. ���� ��� �� � �� ��
DEFAULT� ������ SQL� �� �� �� �� ��� ���. �
��� ��� ���(� �� NOT NULL� ���� ��) ��, SQL�
� � ��.
v �� �� ��, ��� � 0��.
v �� �� �� �� ��� �� ��, ���� ����.
v �� �� ��� ��� � �� LOB �� ��, ���� �� 0� ���
��.
v ��, ��, ���� �� ��, ��� � �� ��, ��, ������. �
�� ���, ��� ��/�� � ��� ���� ����. �
�� � �� � � � �� �� ��� ��� �� ���.
v �� �� �� ��, ��� � DLVALUE(’’,’URL’,’’) ����.
v �� �� �� ��, ��� � ���� �� ��� ��� ��.
v ROWID � �� AS IDENTITY� ��� �� �� ������ ���� ��
���. 109 ��� ��� � ��� �����.
����� �� � �� � �� ���� � ���� � �� ��� �
��. �� �� ��� �� �� �� � � �� ��� ��
� � ���.
v �� 1� �, �� � �� �� �� �� �� �� ���� ���. ��,
SQL� -803� SQLCODE� ��.
v �� 1� �, �� � �� �� �� �� � �� �� �� �� ���
���.
INSERT� �� SQL� ��� ��� �� ��� ����. COMMIT(*ALL),
COMMIT(*CS), COMMIT(*CHG), COMMIT(*RR) ��� ��� �� �
���� ���. SELECT�� �� INSERT �� ��� ��, � �
� �� �� ��� �� ����. COMMIT(*NONE) ��� ��, ��
��� �� ���� ���.
SQL� �� �� ��� �� ��� *YES� ���. ������ ���
� �� �� ��� ��� ��� � �� � �� ��� ���.
CHGPF � �� *NO� � ��� ��� ��� INSERT� �� �
� � � �� ���.
�� ��� ��� �� ��� ���� ���.
�� �� �� ���� SQLCA� SQLERRD(3) ��� 1� ���.
� 6 � SQL ��, �� � �� 107
|
|
�: INSERT �� SELECT�� �� INSERT� � � ��� �� ���
���. ��� �� � SQLERRD(3) ����.
SELECT�� ��� �� � ��
INSERT� �� SELECT� �� ��� �� ��� ��� 0, 1 �� �
��� � � � ��� ���. � ����� �� ���� �� �
� � ���. �� �� �� SQL� ��� �� �� �� �� �
�� �� � ���� �� �� ��� ��.
��� �� INSERT� ��� ��� ��� �� �� �� �� � �
�� ��� ���. �� ��, ���� �� � �� �� �� ���
�� ���� ���. EMPNUMBER, PROJNUMBER, STARTDATE �
ENDDATE �� �� EMPTIME �� �� ��, ��� INSERT� ��
�� �� ���.
INSERT INTO CORPDATA.EMPTIME(EMPNUMBER, PROJNUMBER, STARTDATE, ENDDATE)
SELECT EMPNO, PROJNO, EMSTDATE, EMENDATEFROM CORPDATA.EMPPROJACT
INSERT� ��� SELECT�� �� � ��� SELECT�� ��� ��
�. FOR READ ONLY, FOR UPDATE �� OPTIMIZE� ���� ��
� ��� �� ���, � � � �� ��� ���. SQL� �� ��
����� �� � ���� ��� � ���. �� �� � ��
� ��� �� �� �� �� � �� � � �� ��� ���.
�� � ��� �� ����
� � � ��� ��� �� �����.
v INSERT�� ����� �� ����� ���� � � SELECT� ��
� � � ��� �.
v ���� �� ��� SELECT� INSERT� ��� � ���� �� ����
���� �.
v INSERT� ��� SELECT�� � ���� ��� �� ���� ���
��� �� SQLCODE 100� ���. ����� �� ����
SQLCA� SQLERRD(3) �� ��� SQL� ��� �� � ���� �
� ����.
v INSERT� �� SQL� ��� ��� SQL� � ���. �
COMMIT (*CHG), COMMIT(*CS), COMMIT (*ALL) �� COMMIT(*RR)
����� �� � � ���� �� �� SQLCODE� ���.
COMMIT(*NONE)� ��� �� �� ��� �� � ��� �� ��
�.
108 iSeries� DB2 UDB SQL ����� �� V5R2
v � � ��� �� INSERT�� SELECT�� � ���. �� �� �
��� ���� ��� � ��� ��� ��� �� �� �� UPDATE,
DELETE, INSERT��� �� ���.
INSERT ���� �� �� � ��
INSERT� ��� � � � ���� � � ��� ���.
INSERT�� REXX� ��� �� �� ����. � ��� ��� ��
� �� � ��� �. ����� � INSERT� ���� ��
�� ��� �� � ��� �. �� �� �� ��� �� � ���
��� ��� ��� SQL ������ �� �� �� � �����.
�� �� CORPDATA.EMPLOYEE � 10�� �� ���� ��� ��
���.
INSERT INTO CORPDATA.EMPLOYEE(EMPNO,FIRSTNME,MIDINIT,LASTNAME,WORKDEPT)
10 ROWS VALUES(:DSTRUCT:ISTRUCT)
DSTRUCT� ����� ��� �� �� ��� � ��� �� ���. �
� �� ��� EMPNO, FIRSTNME, MIDINIT, LASTNAME � WORKDEPT
��. DSTRUCT� 10� � ��� �� ��� 10��� ���.
ISTRUCT� ����� ��� ��� �� ���. ISTRUCT� �����
�� ��� 10��� � � ��� ���.
�� INSERT�� ������ ��� ������ ����� �� iSeries �
��� � � SQL ������ � � ������ �� ����.
�� �� ��
�� � ���� ���� �� ��� ���. �� ��,
�� ORDERNO(�� �), SHIPPED_TO (varchar(36)) � ORDER_DATE(��) �
� �� 56 ��� ��� � � � ��� ���. �� �� ��
� �� � ��� ���.
INSERT INTO ORDERS (SHIPPED_TO, ORDER_DATE)VALUES (’BME TOOL’, 2002-02-04)
� ��, � �� � �� ��� �� ���� ����. �� DEFAULT
���� �� � �� � � ���.
INSERT INTO ORDERS (SHIPPED_TO, ORDER_DATE, ORDERNO)VALUES (’BME TOOL’, 2002-02-04, DEFAULT)
�� �, IDENTITY_VAL_LOCAL �� �� ���� � ��� �
�� ���. ��� �� � �� SQL ���� IDENTITY_VAL_LOCAL �
� �����.
� 6 � SQL ��, �� � �� 109
|
|
|
|
|
||
|
|
||
|
|
|
�� �� �� SELECT� ��� ��� �� INSERT��� �� ��
�� ��� ��:
INSERT INTO ORDERS OVERRIDING USER VALUE(SELECT * FROM TODAYS_ORDER)
� ��, OVERRIDING USER VALUE� ���� SELECT���� �� �
���� �� �� � ��� �� ���. GENERATED
ALWAYS� �� �� � �� �� OVERRIDING USER VALUE� �
��� �. GENERATED BY DEFAULT ���� �����.
OVERRIDING USER VALUE� GENERATED BY DEFAULT �� � ��
���� �� ��, � SELECT ��� � �� ����.
OVERRIDING SYSTEM VALUE� �� ���� GENERATED ALWAYS
�� � select���� �� ��� ���. �� ��, �� �
� ���.
INSERT INTO ORDERS OVERRIDING SYSTEM VALUE(SELECT * FROM TODAYS_ORDER)
� INSERT�� SELECT���� ���. �� � �� � ��
� ���. OVERRIDING SYSTEM VALUE� ��� �� GENERATED
ALWAYS� �� �� �� � �� ��� ���.
UPDATE ��� ���� �� �� ��
�� ��� ���� UPDATE� �����. UPDATE� ���
WHERE�� �� �� ����� � �� � ��� � ��� ��
�. UPDATE��(WHERE�� ��� �� �� ����� � ��) �
� 0� ��� �� � ��� � ���. UPDATE�� ��� ��
�.
UPDATE table-nameSET column-1 = value-1,
column-2 = value-2, ...WHERE search-condition ...
�� �� � ��� ��� ����� ���. �� ��� ��
CORPDATA.EMPLOYEE �� � �� �� �� ���� �� ��� �
� ��� ���.
UPDATE CORPDATA.EMPLOYEESET JOB = :PGM-CODE,
PHONENO = :PGM-PHONEWHERE EMPNO = :PGM-SERIAL
110 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
���� � � ��� ���� SET� �����. SET�� ��
�� � ��� ���� ���. ���� ��� � �� �
� ���.
� ��. �� �� �� �� � � �� ���� ���.
�. �� �� SET� ��� �� ���.
� �. �� �� ��� NULL �� � �� ���. � �
� �� � ��� ��� ���� �. ��� ��� ��� ��
�.
��� �. �� �� ��� �� ���� ���.
�� ���. �� �� � ���� (�: USER)�� ���.
� �. �� �� ���� �� �� ���.
A ��� �� . �� �� � ��� �� �� ���.
DEFAULT ���. �� �� �� ��� �� ���. � �� �
�� ��� ��� ���� � ���� � ��� ��� ��
� ���.
��� �� � ��� ��� ���.
UPDATE WORKTABLESET COL1 = ’ASC’,
COL2 = NULL,COL3 = :FIELD3,COL4 = CURRENT TIME,COL5 = AMT - 6.00,COL6 = COL7
WHERE EMPNO = :PGM-SERIAL
�� ��� ���� WHERE� �����.
v � � ���� �� �� �� ��� WHERE� �����.
v � � ���� ���� �� ��� WHERE� �����.
WHERE�� ��� ���. ��� ��, SQL� �� �� �� � �
���� ��� �� ���.
UPDATE� �� ������ ���� ��� ��� �� ��� ��
SQLCODE� ����. COMMIT(*ALL), COMMIT(*CS), COMMIT(*CHG)
�� COMMIT(*RR)� ��� � �� �� ���� ���(� �� ��
�� ��� �� � ��, �� �� ����). COMMIT(*NONE)� ���
� ��, �� ��� �� �� �� ���� ���.
������ ���� �� �� ����� � � !� +100� SQLCODE
� ���.
� 6 � SQL ��, �� � �� 111
�: UPDATE�� � � ��� ��� �� � ���. ��� � �
SQLCA� SQLERRD(3) ����.
UPDATE�� SET�� ���� � � ���� �� �� �� � �
���� ��� ���. �� �� � �� ��� � �� ����.
UPDATE EMPLOYEESET WORKDEPT = ’D11’,
PHONENO = ’7213’,JOB = ’DESIGNER’
WHERE EMPNO = ’000270’
�� �� � ��� ��� �� � � ���.
UPDATE EMPLOYEESET (WORKDEPT, PHONENO, JOB)
= (’D11’, ’7213’, ’DESIGNER’)WHERE EMPNO = ’000270’
�� ���� ��� ��� ��� �� � �����.
v ���� � �� �� � ���
v ��� �� � �� � ���
v 113 ��� �� � � �� ���
UPDATE� �� ��� ��� SQL ���� UPDATE� �����.
��� �� ��� ��� � ��
�� ��� �� ����� ��� � �� ��� ���. ���
� �� ��� � ��� �� � �� ��� � ��� ���
� ��� ���. �� �� ���� � ��� ����, � �� �
���� ��. ��� �� ��� �� �� �� �� �� �����
�. �� ���� �� � ��� ��� �� ��(�� ��� ‘000030’�)� ��
� �� ����� �.
UPDATE PROJECTSET DEPTNO =
(SELECT WORKDEPT FROM EMPLOYEEWHERE PROJECT.RESPEMP = EMPLOYEE.EMPNO)
WHERE RESPEMP=’000030’
��� ��� � ��� �� � �� � ���� ���� ���
���.
��� ��� �� ��� � ��
�� �� � �� �� � � � �� � �� ��� ���.
�� �� ��� �� ����� � ��� ��� ��� �� ��� ��
112 iSeries� DB2 UDB SQL ����� �� V5R2
�. � ��� ���� � � ����� ��. � �� ��� ��
��� �� �, CLASS_CODE� �� � ���.
UPDATE CL_SCHEDSET ROW =
(SELECT * FROM MYCOPYWHERE CL_SCHED.CLASS_CODE = MYCOPY.CLASS_CODE)
��� CL_SCHED �� �� � MYCOPY� �� ��� ���.
�� � ��
�� �� ��� �� ���� ���� � �� � ��
�. �� ��, �� ��� ORDERNO(�� �), SHIPPED_TO (varchar(36)) �
ORDER_DATE(��) �� �� 56 ��� ��� � � � ��� ���, �
� �� �� �� �� ��� ���.
UPDATE ORDERSSET (ORDERNO, ORDER_DATE)=
(DEFAULT, 2002-02-05)WHERE SHIPPED_TO = ’BME TOOL’
� �� � �� ��� �� ���� ����. OVERRIDING SYSTEM
VALUE � �� ���� �� � � ��� ���.
UPDATE ORDERS OVERRIDING SYSTEM VALUESET (ORDERNO, ORDER_DATE)=
(553, ’2002-02-05’)WHERE SHIPPED_TO = ’BME TOOL’
� �� � �� ��
��� �� �� � ��� �� ��� ���. �� �� ���
��� 135 ��� � 9 � ��� ��� �����. SELECT� FOR
UPDATE OF� � � ��� �� ���� �����. �� � �� ��
UPDATE� �����. WHERE CURRENT OF�� ���� � ���
� ��� ���. DYNAMIC� �� FOR UPDATE OF�, ORDER BY�, FOR
READ ONLY� �� SCROLL�� ���� ��� �� �� ����.
� � FETCH�� ���� �����, ��� � ��� � �� ��.
���� UPDATE� WHERE CURRENT OF� ��� � ��� ��
����. �� �� ����� � �� ����� � �� � ��� ��
� ����� �. �� � UPDATE WHERE CURRENT OF� ��� �
��. �� �� ���.
� 6 � SQL ��, �� � �� 113
|
|
|
|
|
||||
|
|
||||
|
� 8. � ��
���� �� SQL� ��
EXEC SQL
DECLARE THISEMP DYNAMIC SCROLL CURSOR FOR
SELECT EMPNO, WORKDEPT, BONUS
FROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’
FOR UPDATE OF BONUS
END-EXEC.
EXEC SQL
OPEN THISEMP
END-EXEC.
EXEC SQL
WHENEVER NOT FOUND
GO TO CLOSE-THISEMP
END-EXEC.
EXEC SQL
FETCH NEXT FROM THISEMP
FOR 5 ROWS
INTO :DEPTINFO :IND-ARRAY
END-EXEC.
DEPTINFO� IND-ARRAY
� ���� � ��� ��
�� ����� �� ��
��.
... �� D11� �� � $500.00 ��� ���� �� ��� ���
���. �� ���, �� ���� $500.00�� ���.
EXEC SQL
FETCH RELATIVE :NUMBACK FROM THISEMP
END-EXEC.
... ����, � ��
�� � ��� ��
�.
EXEC SQL
UPDATE CORPDATA.EMPLOYEE
SET BONUS = 500
WHERE CURRENT OF THISEMP
END-EXEC.
... �� D11� ����
$500.00 ��� ��� ���
� ���.
EXEC SQL
FETCH RELATIVE :NUMBACK FROM THISEMP
FOR 5 ROWS
INTO :DEPTINFO :IND-ARRAY
END-EXEC.
... �� �� � ���
� �! �� � �
�. (NUMBACK -(5 -
NUMBACK - 1))
... �� $500.00 ��� ���� �� ��� ��� ��
�� �� ��.
... �� �� � ��� �� ��.
CLOSE-THISEMP.
EXEC SQL
CLOSE THISEMP
END-EXEC.
����
FOR UPDATE OF� �� �� � �� ��� SELECT�� �� ���
���.
114 iSeries� DB2 UDB SQL ����� �� V5R2
v � �� FROM�� ��� �� ��� ���.
v � �� FROM�� �� �� ��� ���.
v � �� SELECT�� ��� DISTINCT� ���.
v � �� FROM�� ��� �� � �� ���.
v �� � �� GROUP BY�� ����.
v �� � �� HAVING�� ����.
v � �� SELECT� � �� ����.
v SELECT� UNION �� UNION ALL ���� ����.
v ���� ORDER BY� ��� FOR UPDATE OF�� DYNAMIC SCROLL
� ���� ���.
v SELECT� FOR FETCH ONLY�� ����.
v SCROLL ���� DYNAMIC �� ����.
v �� ��� DATALINK �� ���� FOR UPDATE OF�� ���� ��
�.
v � �� � ��� �� � �� ���.
v SELECT� FETCH FIRST n ROWS ONLY� ����.
FOR UPDATE OF�� ���� FOR UPDATE OF� ���� �� � ��
� ���. ��� �� ��� �� SELECT ���� �� � FOR
UPDATE OF� ��� ���.
SELECT A, B, C FROM TABLEFOR UPDATE OF A,E
FOR UPDATE OF�� �� ��� � �� ��� ����. ��� �� �
�� �� ��� � ���� ���.
DELETE ��� ���� ��� � ��
�� � ���� DELETE� �����. DELETE��� � ���
�� �� ����. DELETE�� �� �� � ��� ���. DELETE
��(WHERE� ��� �� �� ����� �� ��) 0 ��� � �
���. DELETE�� WHERE� ��� SQL� �� �� � ��
�. DELETE�� ��� ���.
DELETE FROM table-nameWHERE search-condition ...
�� �� �� D11� � ��� �� �� ���. ��� �� D11�
WORKDEPT �� CORPDATA.EMPLOYEE � �� � � ��� ��
�.
� 6 � SQL ��, �� � �� 115
|
DELETE FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = ’D11’
WHERE�� �� ���� � SQL� ����. SQL� �� �� �
� �� ����� �� � ���. ��� � ��� �� �� ��
����. WHERE�� ��� ��� WHERE� �� DELETE�� �� �
�� �� � ��� �� �� WHERE� ����� �� ���. �
��� �� � ��� ����, DROP� �����. DROP� �� ��
� ��� SQL ���� DROP� ��� �����.
DELETE� �� SQL� ��� ��� �� ��� ��� �� SQLCODE
� ����. COMMIT(*ALL), COMMIT(*CS), COMMIT(*CHG) ��
COMMIT(*RR)� ��� � �� �� ���� ���(� �� �� ��
��� �� �� ��, �� �� ����). COMMIT(*NONE)� ���� �
�, �� ��� �� �� �� ���� ���.
SQL� �� �� ����� � � !� +100� SQLCODE� ���.
�: DELETE�� � � ��� ��� �� � ���. ��� �� �
SQLERRD(3) ����.
DELETE� �� ��� ��� SQL ���� DELETE� ��� �����.
116 iSeries� DB2 UDB SQL ����� �� V5R2
� 7 � �� �� ��
���� ��� � � ���� �� ��� � ��� ��� ���.
� ��� ���, �� � , ORDER BY � GROUP BY �� ��� ��
�. ��� ��� ��� � �����.
v �SELECT ��� � ���
v 121 ��� �� �� �� �� �����
v 122 ��� ��� � ���
v 126 ��� �UPDATE�� �� � �� ���
v 127 ��� �DELETE�� �� � �� ���
SELECT ���� �� ��
�� WHERE � HAVING��, ��� , � ��, ��� �� ����� ��
�� �� ��� ���. �� �� ���, �� �� �� ��
�� � � ���. ���, ��� �� � ��� �� � � ��
��� � �� ���. �� �� �� ����� ��� �� ���
�� ��, �� � � ��� ���� ���� ��� ���� ��� MA2100
��� �����. ��� � �� � �� �� ���.
SELECT EMPNO, LASTNAME, JOBFROM CORPDATA.EMPLOYEE
WHERE EMPNO ...
��� CORPDATA.EMPLOYEE �� ���� �� ��� �� �� ����
�� � ��� ���. CORPDATA.EMP_ACT � �� � SELECT
� ��� ��� ���� MA2100 �� �� ��� ��� � �
��.
SQL� ��, ��� ��� � �� �� SELECT� � SELECT� �
���� ���. �� SELECT�� �� ���� �. � �� ���
SELECT�� �� SELECT�� �. � ��� ���, �� SQL�
� �� ���� MA2100 �� �� ��� �� ��, �� � �
��� �� ���.
SELECT EMPNO, LASTNAME, JOBFROM CORPDATA.EMPLOYEE
WHERE EMPNO IN(SELECT EMPNO
FROM CORPDATA.EMPPROJACTWHERE PROJNO = ’MA2100’)
© Copyright IBM Corp. 1998, 2002 117
� SQL�� �� �� �� ��� �� SQL� �� ����� ����� �
��.
�� 1: SQL� � ��� � EMPNO ���� ���.
(SELECT EMPNOFROM CORPDATA.EMPPROJACT
WHERE PROJNO= ’MA2100’)
���� � �� ��.
CORPDATA.EMPPROJACT���� EMPNO
000010
000110
�� 2: ���� � �� �� �� SELECT� �� ��� ���� ��
���. ��, ��� ��� ����.
SELECT EMPNO, LASTNAME, JOBFROM CORPDATA.EMPLOYEE
WHERE EMPNO IN(’000010’, ’000110’)
� � �� ��� ���.
EMPNO LASTNAME JOB
000010 HAAS PRES
000110 LUCCHESSI SALESREP
��� ��� ��� � �����.
v ���(Correlation)�
v 119 ��� �� �� � �� ���
v 119 ��� �� �� �� ���
v 121 ��� �� �� �� �� �����
v 122 ��� ��� � ���
v 126 ��� �UPDATE�� �� � �� ���
v 127 ��� �DELETE�� �� � �� ���
��(Correlation)
� ��� ��� �(WHERE�) �� � ��(HAVING�) �� ��� �
� � ��� ��� ��� ���. �� � ��� ��� � �� ��
���. �����, ��� � �� � ��� ��� ��� � ��� ��
�. �� � ��� �� ��� �� �� �� ��� ���. �� �
� � ��� ����� �.
118 iSeries� DB2 UDB SQL ����� �� V5R2
� � ��� �� ��� �� ��� ���� � ��. ��
��� ��� ���� � � ��� ����� �. �� � �
� �� ��� ��� 122 ��� ��� � ���� ���.
�� �� � �� ��
� ��� �� ��� �� � ���. �� ��� ���� ��� ���
� ���. ���� � �� � ��� � ���. �� ��, � �
� ����� EMPNO�� ����� IN��. �� ��� WHERE ��
HAVING�� �� � ���. �� � ��� �� �� � � ��� �
� ��� ��� ���. � �� ��� �� � ��� �� �� �� �
�� ��� �� ��� NOT� � � ��� ��� AND� OR ��
� �� �� �� ���. �� ��, ��� WHERE�� ��� �
���.
WHERE (subquery1) = X AND (Y > SOME (subquery2) OR Z = 100)
� ��� � � ��� �� �� ��� ���. ��� � ���
�� �� �� ����. �� �� �� �� SELECT �� � �� �� �
��� �� �� 2 ����. SQL� � �� 32� � �.
�� �� �� ��
WHERE �� HAVING� � � � ��� ����� � �� ��� ��
�.
v ��� ���
v 120 ��� �� ��(ALL, ANY � SOME)�
v 120 ��� �IN ����
v 121 ��� �EXISTS ����
� ��
�� ��� � � ��� �� � ��� ��� ���. � ��� ��
�� ��� ���. � � � � �� ���� � ��
�. �� ��, SQL� � ��� ���� �� ���� ��� � �
��. �� �� �� ��� �� �� ��� �� ��� ��, �� �
�� �� ��� ���.
SELECT EMPNO, LASTNAME, SALARYFROM CORPDATA.EMPLOYEE
WHERE EDLEVEL >(SELECT AVG(EDLEVEL)
FROM CORPDATA.EMPLOYEE)
� 7 � � �� �� 119
SQL� �� � ��� �� � SELECT� WHERE� �� �� ���.
� ��, �� �� ��� � �� ���. � ��� � ��
� �� �� �� ��� ���. � �� �� �� � � ��
�.
�� ��(ALL, ANY � SOME)�� ��� ��� ��� ALL, ANY �� SOME� �� � ��� ���
���. ��� ���� ��� � � ��� �(null) ��� 0, 1 �� �
��� ���. ��� �� ���� ALL, ANY � SOME ���
���.
v ��� � � ��� �� � ��� ���� ��� ��
ALL �����. �� �� ALL� �� �� �(>) �� ���� ����
� ���.
... WHERE expression > ALL (subquery)
� WHERE� ������ ���� � � �� �� �� �� (�,
���� �)�� �� �. � ��� � ��� ��(�, � ��
�� ���) ��� ����.
v ���� ��� � �� �� � ��� ���� � ��� �
����� � ���� ANY �� SOME �����. �� ��, ANY
� �� �� �(>) �� ���� ����� ��� ����.
... WHERE expression > ANY (subquery)
� WHERE� ������ ���� � � �� �� �� (�, ��
�� �) � ��� ��� �� �. � ��� ���� � � �
��� ��� ���� ���.
�: � ��� � ��� � ��� � ���� �� � ��� ��
� ��� !� �� ��� ���. ��� ��� SQL ���� ��
�� �� �� �����.
IN ��
IN ��� ���� � � �� �� �� �� ��� � ���
���. IN ��� =ANY �� =SOME� ��� � �. ANY� SOME
�� ���� � ���� ���. � � �� �� �� �� �
� � ���� NOT ���� �� IN ��� ��� ���. �� �
�, �� ��� ���.
... WHERE WORKDEPT NOT IN (SELECT ...)
120 iSeries� DB2 UDB SQL ����� �� V5R2
EXISTS ��
�� � ��� � ��� SQL� � ��� �� �� �� ��
SELECT� WHERE�� �� ���. ��� ��� EXISTS ��� SQL�
�� � ��� � ��� � ����� �� ��. � ���
� ��� ����. � ���� �� ��, ��� ���� ���. �� �
� ��� ���.
SELECT EMPNO,LASTNAMEFROM CORPDATA.EMPLOYEE
WHERE EXISTS(SELECT *
FROM CORPDATA.PROJECTWHERE PRSTDATE > ’1982-01-01’);
� ��, CORPDATA.PROJECT � ��� ���� 1982� 1� 1 ���
��� �� ��� �� ��� ���. �� �� �� SELECT ��
�� �� � �� �� �� �� � ��� EXISTS� �� �� ��
� ���. � � �� �� � ����� �� ���� ���. ��
��� ���� � �� ��� ���� ��� �� ��� ����. ��
� �� �� ��� ��� 122 ��� ��� � ���� �����.
� ��� �� EXISTS�� � ��� �� ��� � �� ��� ���
���. ��, SELECT *� ���� �.
�� NOT ���� �� EXISTS ���� �� ���� ��� ��� ���
�� �� �� � ��� ���. �� ��� ���.
... WHERE NOT EXISTS (SELECT ...)
�� �� ��� �� ����
1. SELECT� ��� � �� � �� �� ���� ���� �� ��� �
���(1-31 � ��) ����� �� ��� �� � ��� ��
�.
2. �� ��� SELECT�(�� �� ��)� ��:
v � ��� �� ��� �� �� �� �� � �� ��� ��� �
���.
v �� �� SELECT� DECLARE CURSOR, CREATE TABLE, CREATE
VIEW �� INSERT�� � �� �� �� SELECT�� WHERE
�� � ��� ��� ���.
v SELECT�� HAVING�� � ��� ��� ���. � �� SQL
� � ��� � � �� ���� ���.
� 7 � � �� �� 121
|
|
|
|
|
|
|
|
|
|
|
3. ��� UPDATE� DELETE�� ��, UPDATE �� DELETE�� WHERE
�� � ��� ��� ���. �� UPDATE�� SET�� � �
�� ��� ���.
4. � ��� UPDATE�� SET� ���� ��, � ��� � �� �
��� �� �� ���� �� �� ��� �. �� � ��, ��� �
��� � �� � ��� EXISTS ���� �� ���� ��� ��
�� � �� ����� �. ��� ALL ��� ��� ��, ANY,
SOME �� EXISTS, � � 0� �� � ��� �� � �����
���. �� �� � ��� ��, � � 0 �� 1��� �.
5. � ��� ORDER BY, UNION, UNION ALL, FOR READ ONLY, FETCH
FIRST n ROWS, UPDATE �� OPTIMIZE�� ����.
�� �� ��
�� ��� � ��� SQL� � ��� � � �� �� ��� �
�� �� ��� �� ��� �� �� �� SELECT� ��. ��
�� �� SELECT �� ��� � �(WHERE�) �� �� �(HAVING�) �
� SQL� ���� � � ��� �� ���. �� � �� ��
�� �.
���� �� ��
�� ��� � �� �� �� �� ����. ��� ��� �� X.C��.
�� X� ����� C� X� ���� � �� � ����.
FROM� ���� � �� ��� ��� ���. ���� ��� �
�� ��� �� ���. �� � ��� �� � �� � �� �� �
� ��� ���. � � �� � �� � ��� ��� ���
��� �� ��� ��� ���.
���� ��� FROM� ����. � ��� �� �� SELECT� ��� �
� ��� ��� � �� � �� � ���. �� �� �� � ��
A, B � C� ���� A� B� B� C� ����� ��� ����. ��� C
���� ���� B, A �� �� �� SELECT ��� ���. ��� �
��� � �� �� ��� ����� ��. � ��� ��� �� � �
��� �� �� � � � � ��� �� ��� �� �� ����
�. �� FROM�� � TABLEA � TABLEB �� ��� TA � TB� ��
� � TABLEC ���� ��� ��� ���.
FROM TABLEA TA, TABLEC, TABLEB TB
122 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
�� � �� ��� � �� ��� ���. �� ��, �� �� �
� ���� �� �� SELECT ��� �� �� � ���� ��� �
�� ��� ���.
� ��� ��� � ��� �� � �� �� ��� ����.
�: WHERE � �� �� ��
�� �� � �� �� ��� �� �� ��� ���� ���� ���.
� ��� ���� SQL� CORPDATA.EMPLOYEE �� ���� �. �
�� � ��� ��, SQL� �� ��� � �� �� � ��� �� �
���� �. � ��� SQL� �� �� �� �� �� � �� �
�� ���. �� �� ��� ���.
SELECT EMPNO, LASTNAME, WORKDEPT, EDLEVELFROM CORPDATA.EMPLOYEE X
WHERE EDLEVEL >(SELECT AVG(EDLEVEL)
FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = X.WORKDEPT)
�� � ��� � ��� �� ��� ���� ��� ���� �� �
���� ����. ��, � �� ��� � ��� FROM� ���
X.WORKDEPT� ������. �� ��� X� �� SELECT�� FROM�
����. � �� X� � CORPDATA.EMPLOYEE� ����� ���
�.
�� CORPDATA.EMPLOYEE� ��� � �� � ��� ��� � ���
� �� �� ��� ���. � ��� ���� � X.WORKDEPT ����
� � � �� WORKDEPT� �� ����. �� �� � �� CHRISTINE
I HAAS �� ���� ���. ��� � ��� A00�� �� � � �
� WORKDEPT� ��. � � �� ���� � ��� ��� ���.
(SELECT AVG(EDLEVEL)FROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’A00’)
��� ��� � �� � ��� Christine� � ��� � �� � ��
�. �� ��, ��� �� ��� Christine ��� �� �� ����.
WORKDEPT� � �� � �� ��, � � A00 �� �� � ��
����. �� �� MICHAEL L THOMPSON �� �� ��, � � B01
� �� �� � �� � ��� �� B01 �� � �� � ����.
� 7 � � �� �� 123
�� �� ���� � �� � ��� ���.
� 9. �� �� �� � ��
EMPNO LASTNAME WORKDEPT EDLEVEL
000010 HAAS A00 18
000030 KWAN C01 20
000070 PULASKI D21 16
000090 HENDERSON E11 16
000110 LUCCHESSI A00 19
000160 PIANKA D11 17
000180 SCOUTTEN D11 17
000210 JONES D11 17
000220 LUTZ D11 18
000240 MARINO D21 17
000260 JOHNSON D21 16
000280 SCHNEIDER E11 17
000320 MEHTA E21 16
000340 GOUNOT E21 16
200010 HEMMINGER A00 18
200220 JOHN D11 18
200240 MONTEVERDE D21 17
200280 SCHWARTZ E11 17
200340 ALONZO E21 16
�: HAVING � �� �� ��
� �� �� ��(WORKDEPT� �� �� � �� ��� ���
�� ��)� � ��� �� �� ��� ���� ���� ���. � ��
� ���� SQL� CORPDATA.EMPLOYEE �� ���� �. � �� �
��� ��, SQL� ��� � �� � �� � �� ���. � �
�� SQL� �� �� ��� �� �� � �� ���. �� �� �
�� ���.
SELECT WORKDEPT, DECIMAL(AVG(SALARY),8,2)FROM CORPDATA.EMPLOYEE XGROUP BY WORKDEPT HAVING AVG(SALARY) >(SELECT AVG(SALARY)FROM CORPDATA.EMPLOYEE
WHERE SUBSTR(X.WORKDEPT,1,1) = SUBSTR(WORKDEPT,1,1))
CORPDATA.EMPLOYEE� ��� �� �� � �� ��� ��� �
�� ���. � ��� ���� � X.WORKDEPT� ����� � �� �
� WORKDEPT �� �� ����. �� �� ��� � �� ���
WORKDEPT � A00��� ���. � �� �� ���� � ��� �
�� ���.
124 iSeries� DB2 UDB SQL ����� �� V5R2
(SELECT AVG(SALARY)FROM CORPDATA.EMPLOYEE
WHERE SUBSTR(’A00’,1,1) = SUBSTR(WORKDEPT,1,1))
��� ��� �� �� � ��� � ��� � �� ���. �� �
� , � � �� ��� � � 'A00 ' � � � �� � �� � .
WORKDEPT� ‘B01’� �� � ��� ��, � ��� �� B01� � �
� �� � �� ���.
�� �� ���� � �� � ��� ���.
WORKDEPT AVG SALARY
D21 25668.57
E01 40175.00
E21 24086.66
�: �� ���� �� �� ��
�� ��(���, �� � ���� �� ��)� ���� ���� ���. ��
� � ��� CORPDATA.DEPARTMENT � ���. ��� DEPARTMENT
� ��� ����� ��� ��� ���. � ��� ��� �� ���
DEPARTMENT �� ��� ��� �� EMPLOYEE �� �� ��� �
�� �� �� ��� �. �� ���� ��� ��� ����
�.�� �����.
SELECT DEPTNO, DEPTNAME,(SELECT FIRSTNME CONCAT ’ ’ CONCAT
MIDINIT CONCAT ’ ’ CONCAT LASTNAMEFROM EMPLOYEE XWHERE X.EMPNO = Y.MGRNO) AS MANAGER_NAME
FROM DEPARTMENT YWHERE MGRNO IS NOT NULL
DEPTNO � DEPTNAME � �� � �� �� ���� EMPNO =
MGRNO� � � ��� �� ��.�� �� ���� � ��
� ��� ���.
� 10.
DEPTNO DEPTNAME MANAGER_NAME
A00 SPIFFY COMPUTER SERVICE
DIV.
CHRISTINE I HAAS
B01 PLANNING MICHAEL L THOMPSON
C01 INFORMATION CENTER SALLY A KWAN
D11 MANUFACTURING SYSTEMS IRVING F STERN
D21 ADMINISTRATION SYSTEMS EVA D PULASKI
E01 SUPPORT SERVICES JOHN B GEYER
E11 OPERATIONS EILEEN W HENDERSON
� 7 � � �� �� 125
|
|
|
|
|
|
|
|||||||
|
|
|
||
|||
||||
|||
|||
|||
|||
|||
|||
� 10. (�)
DEPTNO DEPTNAME MANAGER_NAME
E21 SOFTWARE SUPPORT THEODORE Q SPENSER
UPDATE�� �� �� �� ��
UPDATE�� �� � �� ��� ���� ���� � ���. ��
�� ����� �� ��� 1983� 9� �� ����� � ��, ��� � �
���� ���� ����� � ���. CORPDATA.PROJECT � �� �
���� ��� ��� SQL� ��� �� � �� �� ���� ��
PRIORITY�(� �� �� CORPDATA.PROJECT ��� �) 1(�����
��� �� ���) �� ���.
UPDATE CORPDATA.PROJECT XSET PRIORITY = 1WHERE ’1983-09-01’ >
(SELECT MAX(EMENDATE)FROM CORPDATA.EMPPROJACTWHERE PROJNO = X.PROJNO)
SQL� CORPDATA.EMPPROJACT �� � � �� �, ����� �� �
� �� �� �� � ��(EMENDATE)� ��(CORPDATA.PROJECT
��). ���� ��� � ��� �� 1983� 9� �� ��, �
CORPDATA.PROJECT �� �� �� ���� ����.
�� �� ��� �� ��� ��� �� �� �����. �� �� �
� ���� �� ���(� ) ��� �� �� ��� ����.
UPDATE MASTER_ORDERS XSET QTY=(SELECT COALESCE (Y.QTY, X.QTY)
FROM ORDERS YWHERE X.ORDER_NUM = Y.ORDER_NUM)
WHERE X.ORDER_NUM IN (SELECT ORDER_NUMFROM ORDERS)
� �� ORDERS � ��� �� ��� MASTER_ORDERS �� � �
� �. ORDERS � �� �� ��� COALESCE �� �� QTY
� �� ��. ORDERS �� QTY �� �� � �� �� ��
� � MASTER_ORDERS �� QTY � ��� � ����. ORDERS �
� QTY � NULL� �� MASTER_ORDERS QTY �� ��� ��
����.
126 iSeries� DB2 UDB SQL ����� �� V5R2
|
|||
|||
|
|
||||||
|
|
|
|
|
|
DELETE��� �� �� �� ��
DELETE�� �� � �� ��� ���� ��� � ���. SQL� �
�� �� �� �� DELETE�� ��� � �� � � �� �� �
��� �� ��.
CORPDATA.PROJECT � �� �� ������ ���. CORPDATA.
EMPPROJACT �� ��� ���� ��� � ���� �. �� �
� �� �� ��� ���.
DELETE FROM CORPDATA.EMPPROJACT XWHERE NOT EXISTS
(SELECT *FROM CORPDATA.PROJECTWHERE PROJNO = X.PROJNO)
SQL� CORPDATA.EMP_ACT � �� � � �� �� ���� ��� �
�� CORPDATA.PROJECT � ���� �� ��. ��� ���,
CORPDATA.EMP_ACT �� ����.
� 7 � � �� �� 127
� 8 � SQL � �
�� ��� �� �� � ��� �� �� ���� � �� ���� �� ��
�. �� �� �� ��� ��� SQL ���� �� �� � �����.
�� ��� SQL�� ��� �� ��� UCS-2 ��� �� ����. 1�
�� � 2��� �� ��� �� ���� ���. ��� 1��� �� ���
� ��� 2��� �� ���� ��� � � �� ���. � ��� ��� ��
�� ��� �� �����. ����� CREATE INDEX ��� ��
� ��� ��� ��� �� ��(�� �� ��� ���)� ���.
��� ��� ��� ��� �����.
v �ORDER BY � � �� ��� �� ���
v 130 ��� ��� �� � ORDER BY�
v 131 ��� �� ���
v 132 ��� ��� �� � ���
v 133 ��� ��� ��� CREATE INDEX��
v 133 ��� ��� �� � �����
ORDER BY � � �� ���� � �
�� �� ��� ����, �� �� STAFF � �� � �� �� ��
���. JOB �� � ����� ���� �� �����. � �� 'Mgr',
'MGR' � 'mgr'� � ���.
� 11. STAFF �
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50 0
20 Pernal 20 Sales 8 18171.25 612.45
30 Merenghi 38 MGR 5 17506.75 0
40 OBrien 38 Sales 6 18006.00 846.55
50 Hanes 15 Mgr 10 20659.80 0
60 Quigley 38 SALES 0 16808.30 650.25
70 Rothman 15 Sales 7 16502.83 1152.00
80 James 20 Clerk 0 13504.60 128.20
90 Koonitz 42 sales 6 18001.75 1386.70
100 Plotz 42 mgr 6 18352.80 0
��� �� ��� � ��� �� ����.
© Copyright IBM Corp. 1998, 2002 129
v *HEX �� ��
v �� ��� ENU� ��� �� ��� �� ��
v �� ��� ENU� ��� �� ��� �� ��
�: ENU� SRTSEQ(*LANGIDUNQ) �� SRTSEQ(*LANGIDSHR)�
LANGID(ENU)� CRTSQLxxx, STRSQL �� RUNSQLSTM � ��
�� SET OPTION� ������ �� ID�� ����.
�� �� � ORDER BY
�� SQL�� JOB �� �� � �� ��� �.
SELECT * FROM STAFF ORDER BY JOB
� 12�� *HEX �� ��� ��� � �� ���. ��� �� JOB �
�� EBCDIC ��� �. � �� �� �� ���� ��� � ��
��.
� 12. *HEX �� ��� ��� ″SELECT * FROM STAFF ORDER BY JOB″
ID NAME DEPT JOB YEARS SALARY COMM
100 Plotz 42 mgr 6 18352.80 0
90 Koonitz 42 sales 6 18001.75 1386.70
80 James 20 Clerk 0 13504.60 128.20
10 Sanders 20 Mgr 7 18357.50 0
50 Hanes 15 Mgr 10 20659.80 0
30 Merenghi 38 MGR 5 17506.75 0
20 Pernal 20 Sales 8 18171.25 612.45
40 OBrien 38 Sales 6 18006.00 846.55
70 Rothman 15 Sales 7 16502.83 1152.00
60 Quigley 38 SALES 0 16808.30 650.25
� 13�� �� ��� �� ��� ���� �� ���. �� ��� JOB
� �� ��� � �� ����. �� � �� ���� �� ��� �
���, 'mgr', 'Mgr' � 'MGR'� �� �� ��� �����.
� 13. ENU �� ��� �� �� ��� �� ��� ��� ″SELECT * FROM STAFFORDER BY JOB″
ID NAME DEPT JOB YEARS SALARY COMM
80 James 20 Clerk 0 13504.60 128.20
100 Plotz 42 mgr 6 18352.80 0
10 Sanders 20 Mgr 7 18357.50 0
50 Hanes 15 Mgr 10 20659.80 0
30 Merenghi 38 MGR 5 17506.75 0
90 Koonitz 42 sales 6 18001.75 1386.70
130 iSeries� DB2 UDB SQL ����� �� V5R2
� 13. ENU �� ��� �� �� ��� �� ��� ��� ″SELECT * FROM STAFFORDER BY JOB″ (�)
ID NAME DEPT JOB YEARS SALARY COMM
20 Pernal 20 Sales 8 18171.25 612.45
40 OBrien 38 Sales 6 18006.00 846.55
70 Rothman 15 Sales 7 16502.83 1152.00
60 Quigley 38 SALES 0 16808.30 650.25
� 14�� �� ��� �� ��� ���� �� ���. �� ��� JOB
� �� ��� � �� ����. �� ��� ��, � �� ���� ��
���� �� ����. � 14� �� 'MGR', 'mgr' � 'Mgr'� �� � �
� �����.
� 14. ENU �� ID �� �� ��� �� ��� ��� ″SELECT * FROM STAFF ORDERBY JOB″
ID NAME DEPT JOB YEARS SALARY COMM
80 James 20 Clerk 0 13504.60 128.20
10 Sanders 20 Mgr 7 18357.50 0
30 Merenghi 38 MGR 5 17506.75 0
50 Hanes 15 Mgr 10 20659.80 0
100 Plotz 42 mgr 6 18352.80 0
20 Pernal 20 Sales 8 18171.25 612.45
40 OBrien 38 Sales 6 18006.00 846.55
60 Quigley 38 SALES 0 16808.30 650.25
70 Rothman 15 Sales 7 16502.83 1152.00
90 Koonitz 42 sales 6 18001.75 1386.70
� ��
�� SQL�� JOB �� 'MGR'� �� � ���.
SELECT * FROM STAFF WHERE JOB=’MGR’
� 15�� *HEX �� ��� � ��� ��� �� ���. � 15� 'JOB'
� �� � �� �� �� �� SELECT�� ��� ��� ����.
��� 'MGR'� ����.
� 15. *HEX �� ��� ��� ″SELECT * FROM STAFF/WHERE JOB=‘MGR’″
ID NAME DEPT JOB YEARS SALARY COMM
30 Merenghi 38 MGR 5 17506.75 0
132 ��� � 16�� �� ��� �� ��� � ��� ��� �� �
��. 132 ��� � 16� ��� � ��� ���� �� ����. ��
� 'mgf'� ��� 'MGR'� �� ���� ���. ���� ��� 'mgr'� �
� 8 � SQL �� �� 131
��� ���.
� 16. ENU �� ID �� �� ��� �� ��� ��� ″SELECT * FROM STAFF WHEREJOB = ‘MGR’″
ID NAME DEPT JOB YEARS SALARY COMM
30 Merenghi 38 MGR 5 17506.75 0
� 17�� �� ��� �� ��� � ��� ��� �� ���. � 17
� � 'JOB' �� � �� �� ��� �� ��� ���� ��� ����
�� ���� ����. � 17�� �� 'mgr', 'Mgr' � 'MGR'� ��� �
����.
� 17. ENU �� ID �� �� ��� �� ��� ��� ″SELECT * FROM STAFF WHEREJOB = ‘MGR’″
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50 0
30 Merenghi 38 MGR 5 17506.75 0
50 Hanes 15 Mgr 10 20659.80 0
100 Plotz 42 mgr 6 18352.80 0
� � � ��
��� CREATE VIEW� �� ���� �� ��� ���. FROM�� �
�� ��� � �� ��� CREATE VIEW� � ��� �� ��� �� �
���. � � �� � �� �� � ������ ���. �� �� �
�� �� ��� �� ��� �� ��� UCS-2 ��� ��(�� �� UCS-2
������ ��� �� ��) ����.
�� SQL� � ��� �� � �� �� �� ���. �� �� ���
�� V1� SRTSEQ(*LANGIDSHR) � LANGID(ENU)� �� ��� �� ��
� �����. CREATE VIEW�� ��� ���.
CREATE VIEW V1 AS SELECT * FROM STAFFWHERE JOB = ’MGR’ AND ID < 100
� 18�� ��� �� � �� ���.
� 18. ″SELECT * FROM V1″
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50 0
30 Merenghi 38 MGR 5 17506.75 0
50 Hanes 15 Mgr 10 20659.80 0
132 iSeries� DB2 UDB SQL ����� �� V5R2
�� V1 �� ��� 132 ��� � 18� � � ����. �� ���
��� SRTSEQ(*LANGIDUNQ) � LANGID(ENU)� �� ��� ���.
� 19. �� ID ENU �� �� ��� �� ��� ��� ″SELECT * FROM V1 WHERE JOB= ‘MGR’″
ID NAME DEPT JOB YEARS SALARY COMM
30 Merenghi 38 MGR 5 17506.75 0
� �� CREATE INDEX�
��� �� ��� ��� CREATE INDEX� �� ����� ���. ��
��� �� ��� ��� ��� � ��� ����. �� ��� �� �
� UCS-2 ��� � � �� ���� ����. ���� ��� �� �� �
� � �� ���� ��.
�� ��� �� �� �� ��� ����� ��� �� �� UCS-2 �
�� �� �� �� ���� ��� ���. ��� ��� ��� ����.
���� �� � �� �� � �� ��� ��� ������ �� � �� �
��� � � ��� ��� �� �� �� �����.
� � � ����
�� ����� ��� �� ���. �� ����� ���� �� �� ���
��� ��, ��� �� �� �� ��� ���.
�� ���� ��� ��, �� �� � �� �� ��� ���
�. �� ��� ���� �� ��� ��� iSeries Information Center� ��
���� ����� �� �� ������ �� �� �� ��� �����.
�� ����� ��� � ���� �� ��� ���� INSERT �� UPDATE
� ����� ��� � ��� �� �� �� ����.
� 8 � SQL �� �� 133
� 9 � �� ��
SQL� SELECT� �� � �� � �� ���. ��� � ��
�� �� ���. �� SQL ���� �� � �� ��� ����
� ����. SQL� ��� �� � � �� � ��� ��� ����
� ��� � �. ��� ����� �� ��� ��� �� � �
� ��� �� ���.
��� ��� �� ��� ��� ��� ����.
v ��� ��� ��� �� ��� ���� �� �� ���
DECLARE CURSOR�
v ���� �� ��� ��� �� �� �� OPEN � CLOSE�. �� �
�� � ��� ��� �.
v ��� � ���� � ��� � � ��� ����� �� FETCH�
v ��� �� � ��� �� UPDATE ... WHERE CURRENT OF�
v ��� �� � ��� �� DELETE ... WHERE CURRENT OF�
��� �� �� ��� ��� SQL ���� �����.
�� �� ��� ��� ��� ��� �����.
v ���� ���
v 137 ��� ��� �� ��
v 143 ��� �� � FETCH� ���
v 149 ��� �� �� � � ���
�: �� � �� ��� x ��� ��� ���� ���� �����.
��� ��
SQL� � � ���� ��� ���. ��� ��� �� ��� �� �
��� �� ��. ��� ��� �� �����.
v �� ���
v 136 ��� ����� ���
� ��
� ��� SCROLL ��� �� ���� ����.
© Copyright IBM Corp. 1998, 2002 135
� ��� ��, � �� � �� ��� OPEN� � �� �� ���.
��� �� � ��� � �� � �� � � ����. FETCH� ���� �
�� � � �� �� ��� ����. ��� � �� �� �� ��. ���
�� ����(FETCH� INTO��) SQL� �� �� �� ��� �����
��� �� �����.
� ��� ��� �(SQLCODE = 100) �� � � FETCH�� ��� ��
� ����. ��� � �� ��� �����. ��� � �� ��
�� � �� �� � ��� ���. �� ��� �� ���� ��
� ��� �� �� �� OPEN� �� ���� �. �� ��� �� �
�� ���.
���� ��
���� ��� ��, � �� �� � � �� ���. ��� FETCH�
� ��� �� �� �� � �� �� ����. ��� �� � ���
� �� � �� � � ������. FETCH� ��� � ��� � �� �
� �� �� ��� ��� ������. ��� � �� �� �� ��. ��
� �� ����(FETCH� INTO��) SQL� �� �� �� ��� ���
�� ��� �� �����. ��� �� BEFORE � AFTER �� ��
���� ��� ���.
� ��� FETCH�� ��� ��� ����. �� ��� �� � ���
�� �� ��� � ��� ���. �� �� �� ����� ���� �
�� ���.
��� ���� ��� FETCH� ��� ��� ������ ����. ��
� ��� � � �� �� �� �� �����.
NEXT ��� �� � ����. �� ��� ���� � ��� ��
���.
PRIOR ��� �� � ����
FIRST ��� � �� � ����
LAST ��� � � ����
BEFORE ��� � �� � � ����
AFTER ��� � � � ����
CURRENT �� ��� ����� ��
RELATIVE n ��� �� ���� ��� ��� � �� � n �
�. �� �� n� -1� ��, ��� � �� �� � ��
�. n� +3� ��, ��� �� �� 3� �� ���.
����� ��� �� ��, �� �� �� �� ��� ���.
FETCH AFTER FROM C1
136 iSeries� DB2 UDB SQL ����� �� V5R2
��� �� � �� ����� PRIOR�� RELATIVE ���� �� ��
�� �� �� ��� ��� �� �� ���.
�� ��
����� �� D11 ��� �� ��� ����� ���. �� ���
� � ��� ���� ��� �� � �� �� ���� ������ SQL
� ���. ��� ��� CORPDATA.EMPLOYEE �� �� �� �
�� ��� ���.
� �� ��� ����� �� D11 � �� ���� �� ��� �
��� ��� ��� � ���� �� �� � ���.
� 20. � ��� �
�� �� SQL� ���
EXEC SQL
DECLARE THISEMP CURSOR FOR SELECT EMPNO, LASTNAME,
WORKDEPT, JOB
FROM CORPDATA.EMPLOYEE
FOR UPDATE OF JOB
END-EXEC.
139 ��� ��� 1: �� ���.
EXEC SQL
OPEN THISEMP
END-EXEC.
140 ��� ��� 2: �� ���.
EXEC SQL
WHENEVER NOT FOUND
GO TO CLOSE-THISEMP
END-EXEC.
141 ��� ��� 3: ��� � � �
�� � ���.
EXEC SQL
FETCH THISEMP
INTO :EMP-NUM, :NAME2,
:DEPT, :JOB-CODE
END-EXEC.
141 ��� ��� 4: ��� ��� � ��.
... for all employees
in department D11, update
the JOB value:
EXEC SQL
UPDATE CORPDATA.EMPLOYEE SET JOB = :NEW-CODE
WHERE CURRENT OF THISEMP
END-EXEC.
... then print the row.
142 ��� ��� 5a: �� � ���.
� 9 � �� �� 137
� 20. � ��� � (�)
�� �� SQL� ���
... for other employees,
delete the row:
EXEC SQL
DELETE FROM CORPDATA.EMPLOYEE
WHERE CURRENT OF THISEMP
END-EXEC.
142 ��� ��� 5b: �� � ���.
�� � �� ��� �� �� �
CLOSE-THISEMP.
EXEC SQL
CLOSE THISEMP
END-EXEC.
143 ��� ��� 6: �� ���.
���� �� ��� ����� �� D11� �� � ��� �� RELATIVE
�� �� ��� ���.
� 21. ���� �� ��
���� �� SQL� ���
EXEC SQL
DECLARE THISEMP DYNAMIC SCROLL CURSOR FOR
SELECT EMPNO, LASTNAME,
SALARY
FROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = ’D11’
END-EXEC.
139 ��� ��� 1: �� ���.
EXEC SQL
OPEN THISEMP
END-EXEC.
140 ��� ��� 2: �� ���.
EXEC SQL
WHENEVER NOT FOUND
GO TO CLOSE-THISEMP
END-EXEC.
141 ��� ��� 3: ��� � � �
�� � ���.
...initialize program summation
salary variable
EXEC SQL
FETCH RELATIVE 3 FROM THISEMP
INTO :EMP-NUM, :NAME2,
:JOB-CODE
END-EXEC.
...add the current salary to
program summation salary
...branch back to fetch and
process the next row.
141 ��� ��� 4: ��� ��� � ��.
...calculate the average
salary
138 iSeries� DB2 UDB SQL ����� �� V5R2
� 21. ���� �� �� (�)
���� �� SQL� ���
CLOSE-THISEMP.
EXEC SQL
CLOSE THISEMP
END-EXEC.
143 ��� ��� 6: �� ���.
�� 1: �� ��
� �� ��� ��� ��� ���� DECLARE CURSOR� ��
���.
DECLARE CURSOR�� ��� ��� SELECT� ���. SELECT��
� �� ����� ��� �� � ���. � ��� ��, ���
��� ���(FOR UPDATE OF�� �����).
EXEC SQLDECLARE cursor-name CURSOR FORSELECT column-1, column-2 ,...FROM table-name , ...FOR UPDATE OF column-2 ,...
END-EXEC.
��� �� ��� ��, ��� ��� ���(WHERE�� �����).
EXEC SQLDECLARE cursor-name DYNAMIC SCROLL CURSOR FORSELECT column-1, column-2 ,...FROM table-name ,...WHERE column-1 = expression ...
END-EXEC.
�� ��� SELECT�� ��� ���. ��� � ��� ���� ��
�� DECALRE CURSOR� �� SELECT� � �� � ��� � ��
���.
��� �(FROM�� ��� �)� � � �� �� �� � ���� FOR
UPDATE OF� �������. �� ���� � � ���. �� ��
� � �� ��� �� ORDER BY� �� FOR READ ONLY� ���
��� � � �� SQLCODE� ���. ���� FOR UPDATE OF�, FOR
READ ONLY� �� ORDER BY� ��� �� � �� �� ��� ��
��, ��� �� �� � ��� ���.
� �� �� �� ��� �� � ��� ���. � �� SELECT
�� � ��� ��� ���. ���� ���� � ��� �� �
��� �(FETCH� ��)� � ���� UPDATE ... WHERE CURRENT
OF� �� � � ��� ���.
� 9 � �� �� 139
�� �� � �� � � EMPNO, LASTNAME � WORKDEPT �
(CORPDATA.EMPLOYEE �)� ����� ���. JOB �
(CORPDATA.EMPLOYEE �� � � �� �� � �) ���� ��,
JOB� SELECT�� ������ DECLARE CURSOR�� FOR UPDATE OF
JOB ... ���� �.
� �� ��� �� � �� ���� �� �� ����.
v � �� FROM�� ��� �� ��� ���.
v � �� FROM�� �� �� ��� ���.
v � �� FROM�� ��� �� � �� ���.
v � �� SELECT�� ��� DISTINCT� ���.
v �� � �� GROUP BY�� ����.
v �� � �� HAVING�� ����.
v � �� SELECT� � �� ����.
v SELECT� � ��� ����� �� � ��� � ��� �� ���
�� �� �� ��.
v SELECT� UNION �� UNION ALL ���� ����.
v ���� ORDER BY� ��� FOR UPDATE OF�� DYNAMIC SCROLL
� ���� ���.
v SELECT� FOR READ ONLY�� ����.
v SCROLL ���� DYNAMIC �� ����.
v �� ���� DataLink �� ���� FOR UPDATE OF�� ���� ��
�.
v � �� � ��� �� � �� ���.
v SELECT� FETCH FIRST n ROWS ONLY� ����.
�� 2: �� ��
� �� � ��� ��� OPEN� �����. ����� OPEN� �
�� SQL� SELECT� ��� ��� �� �� �� � ���
� �� � ��� �� DECLARE CURSOR� �� SELECT� ��
�. � �� �� �� ����� � �� 0, 1 �� � �� �� �
�� ���. OPEN�� ��� ���.
EXEC SQLOPEN cursor-nameEND-EXEC.
140 iSeries� DB2 UDB SQL ����� �� V5R2
|
�� 3: ��� �� ��� � �� � ��
� � �� �� ��� 100� �� SQLCODE ��� ����
‘02000’� (�, ��� �) �� SQLSTATE ��� �����. FETCH�
� � � �� � � �� � � ��� ���� ����� � FETCH�
���. �� �� ��� ���.
...IF SQLCODE =100 GO TO DATA-NOT-FOUND.
��
IF SQLSTATE =’02000’ GO TO DATA-NOT-FOUND.
��� �� �� ��� �� ����� WHENEVER� ��� ���.
WHENEVER NOT FOUND� ��� CLOSE�� ���� ����� � �
�� ���. WHENEVER�� ��� ���.
EXEC SQLWHENEVER NOT FOUND GO TO symbolic-addressEND-EXEC.
��� ����� ��� � ��� ��� ��� ��� � �� ����
� ��� �� ��� ��� �� ��� �.
���� � ��� ����� ��� � �� ���� �� FETCH�� �
�� � �� ����. ��� �� ��� � ���� � ���. CLOSE
�� �� �� �� �� ���.
���� ��� �� ��� � � � � �� � ��� ���
���. �� ��� � ��� ��� � �� �� �� ���� �
��. ��� � �� ��� CLOSE �� ��� ��� ���.
�� 4: ��� ��� � ��
��� �� �� ����� ��� �� ���� FETCH� �����.
DECLARE CURSOR� �� SELECT�� ����� �� �� ��� �
���. ��� SQL� FETCH�� ��� � ������ ���� ��
��� ��.
����� FETCH� ��� � SQL� �� �� ��� � ���� ��
� � ��� � �����. �� �� � � ��� ���. INTO
�� ���� SQL� �� �� �� ����� ��� �� ���. � �
�� FETCH�� ��� ��� ����.
SQL� �� �� � �� FETCH�� ���� � �� �� ��(�, �� �
�� �� ���)� ����. DELETE�� ��� UPDATE�� � �
�� �� � ��� ��� ���.
� 9 � �� �� 141
� �� FETCH�� ��� ���.
EXEC SQLFETCH cursor-nameINTO :host variable-1[, :host variable-2] ...
END-EXEC.
���� �� FETCH�� ��� ���.
EXEC SQLFETCH RELATIVE integerFROM cursor-nameINTO :host variable-1[, :host variable-2] ...
END-EXEC.
�� 5a: �� � ��
����� ��� � ����� �� ���� WHERE CURRENT OF� �
� UPDATE� �� � �� ��� ��� ���. WHERE CURRENT
OF�� ���� � ��� ��� ���. UPDATE ... WHERE
CURRENT OF�� ��� ���.
EXEC SQLUPDATE table-nameSET column-1 = value [, column-2 = value] ...WHERE CURRENT OF cursor-name
END-EXEC.
��� �� ��� � UPDATE�� ��� ���.
v �� � �, ��� �� ���.
v ��� � ���� ��� ���.
v ORDER BY�, �� ���� ��, ���� �� �� DECLARE CURSOR
�� FOR UPDATE OF�� ��� � ���.
� ��� � � �� � �� FETCH� ��� � ��� ��� �� �
(�, ��� �� �� �� ��) ���.
�� 5b: �� � ��
����� �� � � �� DELETE� �� � � ��� ��
�. ��� �� ��� �� ��� �� DELETE� �����. WHERE
CURRENT OF�� ���� � ���� ��� ���. DELETE ...
WHERE CURRENT OF�� ��� ���.
EXEC SQLDELETE FROM table-nameWHERE CURRENT OF cursor-name
END-EXEC.
��� �� ��� �, DELETE�� ��� ���.
v �� � �, ��� �� ���.
142 iSeries� DB2 UDB SQL ����� �� V5R2
v WHERE CURRENT OF� ��� ��� � ���� ��� ��� �
��.
� ��� �� � �� FETCH� ��� � � � ��� �� �
� �� �� ��� ���.
115 ��� �DELETE �� �� �� � ����� �� �� ��
����� �� � ��� �� DELETE�� �� �� ���. �� �
� �� �� �� ��� � ���� � � FETCH � DELETE ...
WHERE CURRENT OF� ��� ���.
�� 6: �� ��
� �� �� � �� � ��� � ��� �� ����, ��� �� �
� � CLOSE� �� ��� �����.
EXEC SQLCLOSE cursor-nameEND-EXEC.
� �� � ��� � ��� �� ��� ���� ���� ��� � �
���. ��� �� ���� ���� ��� ���.
v HOLD� �� COMMIT� ���� ��� WITH HOLD� �� ��
� �� ��
v HOLD� �� ROLLBACK�� ���� ��
v �� �� ��
v �� ��� ��� ���� CLOSQLCSR(*ENDACTGRP)� ��� ��
v �� ��� � �� SQL ����� ��� ���� �����
CLOSQLCSR(*ENDJOB)�� CLOSQLCSR(*ENDACTGRP) � ���� �
��� �� ��
v DISCONNECT� �� ������ ���� �� �� ��
v ������ ���� �� ����� ���� COMMIT� ��� ��
v *RUW CONNECT� ��� ��
� ��� ��� �� �� �� � �� ��� ���� � ���
�� ��� �� �� �� � �� ��� ��� ��� �.
�� � FETCH� ��
� � FETCH�� � FETCH� �� � �� ��� � � ��� �
�� ���. ����� FETCH�� ��� � �� � �� ��
�. � � ��� ��� �� �� � � 32767��. ��� � �
�� ��� ��� ��� � ������.
� 9 � �� �� 143
�� �� � ���� ��� ��� ��� �� ��� ��� ���
� ��� � ����� � �� ��� ���. REXX� ��� �� � �
�� � �� �� �� SQL ����� �� ���� �� ��� ����
���. ����� �� �� ��� ��� ��� ��� ��� SQL ��
��� ��� �����. � � FETCH�� � �� �� �������
� ����� � ��� ���. ����� �� �(null) ��� � �
�� � �� �� ������ ����� �.
� � FETCH�� � ��� ���� �� ��� ��� ���. � �
FETCH �� �� ��, �� � �� ��� �� ��. FETCH��
��� �� � � �� ��� ���� ��� ���.
� � � FETCH � ��� SQLCA� �� ���� ���. SQLCODE
� SQLSTATE �� �� SQLERRD�� �� ��� ���.
v SQLERRD3� � � FETCH�� �� �� ��� ����.
SQLERRD3� ��� �� ���� ��� �� �� ��� � ��� ��
�.
v SQLERRD4� ��� � �� �� ����.
v SQLERRD5� �� ��� �� ���� ���� ��� ����. �
� �� ��� �� ���� �� �� ��, � �� � �� ��� �
���� ��� ���. �� �� �� ��� �� ��� ���
� �� �� �� SQLCODE +100� �� � � ���
�.
��� �� ��� ��� �� � FETCH
��� �� �� �� � � FETCH� ���� SQL� ��� �� ��
� �� �� ����� �. � ��� ��� �� � ��� ���
��� ����� ���. ��� �� �� � �� ���� �� � �
� � �� ��� ���(COBOL COPY ���� ��) �� ���
���.
��� �� �� ���� �� ����. � ��� � �� � � ���
�. �� � ��� � �� � ��� �� � �� ��� � �� �
���. SQL� ��� �� �� �� ��� ��� �� � � �� �
�� � ���. �� ����� ��� �� � ��� ���
�� ��� �� �� ��� �.
��� COBOL �� ��� ����.
EXEC SQL INCLUDE SQLCAEND-EXEC.
144 iSeries� DB2 UDB SQL ����� �� V5R2
...
01 TABLE-1.02 DEPT OCCURS 10 TIMES.
05 EMPNO PIC X(6).05 LASTNAME.
49 LASTNAME-LEN PIC S9(4) BINARY.49 LASTNAME-TEXT PIC X(15).
05 WORKDEPT PIC X(3).05 JOB PIC X(8).
01 TABLE-2.02 IND-ARRAY OCCURS 10 TIMES.
05 INDS PIC S9(4) BINARY OCCURS 4 TIMES.
...EXEC SQLDECLARE D11 CURSOR FORSELECT EMPNO, LASTNAME, WORKDEPT, JOB
FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = "D11"
END-EXEC.
...
EXEC SQLOPEN D11
END-EXEC.PERFORM FETCH-PARA UNTIL SQLCODE NOT EQUAL TO ZERO.
ALL-DONE.EXEC SQL CLOSE D11 END-EXEC.
...
FETCH-PARA.EXEC SQL WHENEVER NOT FOUND GO TO ALL-DONE END-EXEC.
EXEC SQL FETCH D11 FOR 10 ROWS INTO :DEPT :IND-ARRAYEND-EXEC.
...
� �� ��� CORPDATA.EMPLOYEE � �� WORKDEPT�� 'D11'
�� �� � �� ������. � �� 8� ��� ���.
DECLARE CURSOR � OPEN�� � � FETCH�� �� ��� � �� �
� ��� ��� ���. �� �� �� � � ��� � FETCH
�� ����� � �� �� ���. � � FETCH�� � � �
� �� � �� �� ����. FETCH� ��� �� �� ��� ��
� ��� � � ��� ����.
��� �� � DEPT� ��� ����� � IND-ARRAY� ������ �
��� ���. � �� �� 10����. ����� �� � � �� �
� �� ��� ���.
DEPT ��� �� � �� ��� ��� � �� �� �� ��.
� 9 � �� �� 145
� � FETCH�� ��� ���� � ��� ��� � 8� �� ��� �
���. ����� � IND_ARRAY� NULL � ��� ��� �� �
� �� �� � 0 ���.
�������� ��� SQLCA� �� ��� ���� ���.
v SQLCODE� 0 ���.
v SQLSTATE� ‘00000’ ���.
v SQLERRD3� 8(�� �� ) ���.
v SQLERRD4� 34(�� �)� ���.
v SQLERRD5� � �� � �� �� ���� +100 ���.
SQLCA� ��� SQL ���� � B� �����.
� ���� ��� ��� �� � FETCH
������� � ����� �� � � FETCH� ��� �� �� � �
������ � ���� � ��� �� �� ���� �. � ����� �
����� ����� ��� ��� ���. � ����� � � FETCH
� �� ����. � ����� � � FETCH� ��� �� � ��
� � ���� �� �� �� � ���.
��� ��� �� ��� � � � �� SQLTYPE � SQLLEN ���
SQLDA� � � FETCH� � ���� ��� ����. ���� ��� �
�� ������� � ���� � �� � ���. �� �����
��� �� �� �� �� �� �� ��� �.
SQLDA� ��� SQL ���� � C� �����.
��� PL/I �� ��� ����.
146 iSeries� DB2 UDB SQL ����� �� V5R2
*....+....1....+....2....+....3....+....4....+....5....+....6....+....7...*EXEC SQL INCLUDE SQLCA;EXEC SQL INCLUDE SQLDA;
...
DCL DEPTPTR PTR;DCL 1 DEPT(20) BASED(DEPTPTR),
3 EMPNO CHAR(6),3 LASTNAME CHAR(15) VARYING,3 WORKDEPT CHAR(3),3 JOB CHAR(8);
DCL I BIN(31) FIXED;DEC J BIN(31) FIXED;DCL ROWAREA CHAR(2000);
...
ALLOCATE SQLDA SET(SQLDAPTR);EXEC SQLDECLARE D11 CURSOR FORSELECT EMPNO, LASTNAME, WORKDEPT, JOB
FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = ’D11’;
�� 1. � ���� ��� � � FETCH� � (1/2)
� 9 � �� �� 147
� �� ��� CORPDATA.EMPLOYEE � �� WORKDEPT�� 'D11'
�� �� � �� ������. � A �iSeries� DB2 UDB � ��
...
EXEC SQLOPEN D11;
/* SET UP THE DESCRIPTOR FOR THE MULTIPLE-ROW FETCH *//* 4 COLUMNS ARE BEING FETCHED */SQLD = 4;SQLN = 4;SQLDABC = 366;SQLTYPE(1) = 452; /* FIXED LENGTH CHARACTER - */
/* NOT NULLABLE */SQLLEN(1) = 6;SQLTYPE(2) = 456; /*VARYING LENGTH CHARACTER */
/* NOT NULLABLE */SQLLEN(2) = 15;SQLTYPE(3) = 452; /* FIXED LENGTH CHARACTER - */SQLLEN(3) = 3;SQLTYPE(4) = 452; /* FIXED LENGTH CHARACTER - */
/* NOT NULLABLE */SQLLEN(4) = 8;/*ISSUE THE MULTIPLE-ROW FETCH STATEMENT TO RETRIEVE*//*THE DATA INTO THE DEPT ROW STORAGE AREA *//*USE A HOST VARIABLE TO CONTAIN THE COUNT OF *//*ROWS TO BE RETURNED ON THE MULTIPLE-ROW FETCH */
J = 20; /*REQUESTS 20 ROWS ON THE FETCH */...EXEC SQL
WHENEVER NOT FOUNDGOTO FINISHED;
EXEC SQLWHENEVER SQLERRORGOTO FINISHED;
EXEC SQLFETCH D11 FOR :J ROWS
USING DESCRIPTOR :SQLDA INTO :ROWAREA;/* ADDRESS THE ROWS RETURNED */DEPTPTR = ADDR(ROWAREA);/*PROCESS EACH ROW RETURNED IN THE ROW STORAGE *//*AREA BASED ON THE COUNT OF RECORDS RETURNED *//*IN SQLERRD3. */DO I = 1 TO SQLERRD(3);IF EMPNO(I) = ’000170’ THENDO;
:END;END;
IF SQLERRD(5) = 100 THENDO;/* PROCESS END OF FILE */
END;FINISHED:
�� 1. � ���� ��� � � FETCH� � (2/2)
148 iSeries� DB2 UDB SQL ����� �� V5R2
� � EMPLOYEE �� � � � �� ��� ����. DECLARE
CURSOR � OPEN�� � � FETCH�� �� ��� �� � �� �� �
��. �� �� �� � � ��� � FETCH�� ����� � �
� �� ���. � � FETCH�� � � �� �� � ��
�� ����. FETCH ��� �� ��� �� � � �� �� �
�.
� ��� ROWAREA� �� �� ����. � � �� ��� ��� �
���. �� ��� ��� �� ROWAREA� �� ����. �
� �� � ��� �� �� DEPT� �� ���� ����.
��� �� �� �(��� �)� �� �� ��. � ��, ����� �
�� ���� ���.
FETCH�� ��� ROWAREA� 'D11'(� �� 11�)� �� �� �� �
��. �������� ��� SQLCA� �� ��� �� ���.
v SQLCODE� 0 ���.
v SQLSTATE� ‘00000’ ���.
v SQLERRD3� 11(�� �� ) ���.
v SQLERRD4� 34(�� �� �)� ���.
v SQLERRD5� � �� � �� ���� ���� +100 ���.
� �� ������� �� � � � ���� ��� SQLERRD5 �
� �� �� ���. � � ������� � �� �� SQL �
� ��� ��� ���. �� �� �� ���� �� ��� ���� ��
� �� SQL ���� �. ��� �� �� ��� *RR� �� �� �� �
�� ���.
�� �� � �� ��
��� ����� � ��� ��� ���� �� ����� �� �� ��
��. COMMIT �� ROLLBACK�� HOLD� ��� �� � � �� �
�� SQL �� ���� � �. WITH HOLD� �� ��� ��� COMMIT
� ���� �� ���. �� ��� ROLLBACK� ���� � �
(DECLARE CURSOR�� ��� WITH HOLD�� ���).
COMMIT �� ROLLBAK� �� �� �� �� ��� ��� ���
COMMIT HOLD �� ROLLBAK HOLD� ���� �. HOLD� ���
� �� ��� ��� � �� �� ���� ��� ��� ���. ��
��� COMMIT�� ����. ROLLBACK�� �� ��� �� � ��
� �� ��� �� �� �� ����. �� ��� ��� � ����.
� 9 � �� �� 149
COMMIT �� ROLLBACK� HOLD �� ��� �� �� ��� ����
�� ��� ����. ��� �� � � ��� � �� � �� �� ��
� ���.
�: CRTSQLxxx �� ALWBLK(*ALLREAD) ���� �� �� �� �
� �� �� �� �� ��� ���. ALWBLK ���� ���
CRTSQLxxx �� �� ��� � �� �� �� ��� � 14 � ��
� SQL ������� �����.
�� �� � � �� �� ��� ��� �� �� ��� �����.
150 iSeries� DB2 UDB SQL ����� �� V5R2
� 10 � �� ��
�� �� ���� � �� �� � �� �� ��� ��
� ����. �� �� ��� � A � ���� ��� �� � B �
�� ���� ��� ��� ��� � � � A �� �� � ��� ��� �
B ����� �� ���.
� ��� ���� ���� �� �� ��� ��� � �� �� ��
���. �� �, �� ���� � ���� �� �� � ��� �
���. �� CREATE VIEW� WITH CHECK OPTION��� ��� �� �
�� ���� ��� �� ����. ��� ��� ��� ��� ����
�.
v ��� ���� �� � ���
v 152 ��� ��� ��
v 162 ��� ���� WITH CHECK OPTION�
v 165 ��� �iSeries� DB2 UDB ��� ���
�� � �� ���� ��� ������ ����� �����.
�� ���� �� � ��
���� ��� ��� � �� ���� �� ��� ��� ��� �
�� ���. SQL CREATE TABLE � ALTER TABLE� �� �
���� �����.
�� ��, �� ��� 3��, �� �� ���� � ��� COL2
�� � ����� �� �� ��.
CREATE TABLE T1 (COL1 INT, COL2 INT CHECK (COL2>0), COL3 INT)
� � �� �� �� ��� ��:
INSERT INTO T1 VALUES (-1, -1, -1)
COL2 ��� � �� ���� ����� �� �� � ��� ��
�. �, -1� 0�� �� ���.
�� ��� ����� �� ���.
INSERT INTO T1 VALUES (1, 1, 1)
� �� �� ���� �� ��� ���.
ALTER TABLE T1 ADD CONSTRAINT C1 CHECK (COL1=1 AND COL1<COL2)
© Copyright IBM Corp. 1998, 2002 151
� ALTER TABLE�� COL1 ���� ��� � �� �� �����
1�� � COL2� � �� ����� ���. � ����� ���� ��
� �� � ����� � �� � � � ��� �� �� ����(COL2�
‘1’� COL1� ‘1’�� � ��).
�� ��
�� �� � �� � ��� �� ��� ��� ������ � �� �
���.
��� �� �� ���(� � �� � A �iSeries� DB2 UDB � ��
��� ���).
v CORPDATA.EMPLOYEE� ��� ��� ���� ����.
v CORPDATA.DEPARTMENT� ��� �� �� ��� ��� ���� ���
�.
v CORPDATA.EMP_ACT� ���� �� �� ��� ��� ���� ��
�.
� �� � �� ��� �� �� ���� ���. �� ��� ���� �
� ��� ��� � � ��� ��� ��� ��� ���� � ��� �
��� � �� �� ��� ��� ���. ��� ���� ��� ��
�� ��� �� ��� �� ���. �� �� ��� ��� ��
� ��, � �� �� �� ���� �.
�� � �� �� �� �� �� �� � ��� ������� ��
�. �� �� ��� � �� � ��� �(null)��� �. ��
� �� � ��� ���� �� ��� ��� ��� �.
v �� �� ��� � � ��� � � �� � �� � ����. ��
� � �� �� �� � ��� � � �� � �� �� �� �� �
�� � ���.
v 1� �� �(null) ��� �� �� ���. �� �� ��� 1� �
� �� � ���.
v �� �� �� ����� ���� �� � �� 1� ���.
v �� �� � � �� �� � �� � �� � ����. �� �� �
�� �� ��� �� �� ��, � ��� ���� ���.
v �� �� �� �� ��� ���.
v �� �� �� ��� ���.
v � �� ���� �� �� ���.
152 iSeries� DB2 UDB SQL ����� �� V5R2
�� � ��� �� �� �� �� �� � �� �� ��� ��� �
�� ��� ���� � � ���.
�� � �� ��� ��� ��� ��� �����.
v ��� ���� �� �� ���
v 155 ��� ��� ���� ���
v 155 ��� ��� ����� �� � ���
v 156 ��� ��� ����� �� � ���
v 158 ��� ��� ����� �� �� ���
v 161 ��� ��� ���
SQL� CREATE TABLE � ALTER TABLE�� �� � �� ���.
��� � �� ��� ��� SQL ���� �����. �� iSeries Navigator
� �� �� �� ���� �� �� � ��� ���� ���
���.
�� ���� �� �� ��
����� �� �, �� � �, �� �� ���� ��� ����� �
�� ����. �� ���� �� �� � ��� ���.
SQL CREATE TABLE � ALTER TABLE� �� �� ���� ��
�� �����.
�� ���� ��, �� � � �� � ���� ��� �(null)
� �� �� � � ���. �� ���� ��� �� �� ����
�.
v 1� �� �� �
v �� �
v �� �� ����� ��� � � �� ���� ��� ��� �� �
�� ��
���� �� ����� �� ��� ���. �� ��� ��� ��
� ���� ����.
� �� ����� ����, ���� iSeries Navigator, CL �, ���� ��
�� �� �� ��� � ����� SQL �� �� �� INSERT,
DELETE � UPDATE � ���� ���.
�: �� ���� ��
� �� � ��� �� �� ��� �� � ���� ��� ��� ��
������. � ����� �� ��� �� �� �� ���. �
� 10 � �� � 153
� SQL�� ���� ��� �� CORPDATA.DEPARTMENT �
CORPDATA.EMPLOYEE �� ��.
CREATE TABLE CORPDATA.DEPARTMENT(DEPTNO CHAR(3) NOT NULL PRIMARY KEY,DEPTNAME VARCHAR(29) NOT NULL,MGRNO CHAR(6),ADMRDEPT CHAR(3) NOT NULL
CONSTRAINT REPORTS_TO_EXISTSREFERENCES CORPDATA.DEPARTMENT (DEPTNO)ON DELETE CASCADE)
CREATE TABLE CORPDATA.EMPLOYEE(EMPNO CHAR(6) NOT NULL PRIMARY KEY,FIRSTNAME VARCHAR(12) NOT NULL,MIDINIT CHAR(1) NOT NULL,LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHAR(3) CONSTRAINT WORKDEPT_EXISTS
REFERENCES CORPDATA.DEPARTMENT (DEPTNO)ON DELETE SET NULL ON UPDATE RESTRICT,
PHONENO CHAR(4),HIREDATE DATE,JOB CHAR(8),EDLEVEL SMALLINT NOT NULL,SEX CHAR(1),BIRTHDATE DATE,SALARY DECIMAL(9,2),BONUS DECIMAL(9,2),COMM DECIMAL(9,2),CONSTRAINT UNIQUE_LNAME_IN_DEPT UNIQUE (WORKDEPT, LASTNAME))
� �� DEPARTMENT �� 1� �� ��� �� �� ��(DEPTNO) ��
���, � �� 2�� ���� �� �� ���.
REPORTS_TO_EXISTS
DEPARTMENT �� �� ��� �� � � �� �� �� ����
��. ADMRDEPT� �� �� �� � DEPTNO� � ���
�. ��� ������ �� � �� ���� �. DELETE
CASCADE ��� DEPTNO � n� �� ���� �� ADMRDEPT�
n� �� �� � ����.
WORKDEPT_EXISTS
EMPLOYEE �� �� ��� �� �� ��(WORKDEPT) � �
� �� ���. ��� WORKDEPT� �� � DEPTNO � �
�� �. DELETE SET NULL ��� �� DEPTNO � n�
DEPARTMENT� ���� ��, EMPLOYEE� WORKDEPT �
� n� �� �� �(null)� ��� ����. UPDATE RESTRICT
��� DEPARTMENT� DEPTNO � EMPLOYEE� WORKDEPT
� �� DEPTNO � �� �� ��� �� ����.
154 iSeries� DB2 UDB SQL ����� �� V5R2
EMPLOYEE �� ���� UNIQUE_LNAME_IN_DEPT� �(last name)� �
� �� �� �. � ����� ���� ���� � �� �� �
�� ����� � ��� ��� �� �� ���.
�� ���� ��
ALTER TABLE�� � � �� �� ���� �� ���� ����
��� ���. ���� ����� �� ���� �� �� �� � ��,
� �� �� ��� ���� �� ����.
DROP TABLE�� DROP SCHEMA� ��� �� ��� �� ����
���.
�: ���� ��
�� �� � DEPARTMENT� � DEPTNO �� 1� �� ���. ���
� 1� �� ���� �� �� �� ���� � DEPARTMENT� EMPLOYEE
� ��� ���� REPORTS_TO_EXISTS � WORKDEPT_EXISTS �� ��
��� ���.
ALTER TABLE CORPDATA.EMPLOYEE DROP PRIMARY KEY
�� �� ��� �� ���� ���� ��� ���.
ALTER TABLE CORPDATA.DEPARTMENTDROP CONSTRAINT UNIQUE_LNAME_IN_DEPT
�� ����� �� �� ��
�� ����� �� � ��� ��� � � �� � � �� ��� ��� �
��. �� �� �� �� � ��� ��� �� SQL�� �� ��� �
��.
v �� � �� ��
v �� �� 1� � ��, 1� �� �� � �� �
�� �� �� � ��� ��� ��
v �� � � ��� ��� �� �� � �� �� �� �� � ��
� � ��� �.
v �� � �� �� �� ��� �� �� �� �� ����. � ���
�� �� �� ��� INSERT� ���(�� �� ��� � � �).
�: ����� �� �� ��
� �� �� ��� �� � ������ ���� �(PROJECT)� ����
�.
v �� �� ��� �� ��(DEPTNO)� �� �
v �� �� ��� �� ��(RESPEMP)� �� �
� 10 � �� � 155
ALTER TABLE CORPDATA.PROJECT ADD CONSTRAINT RESP_DEPT_EXISTSFOREIGN KEY (DEPTNO)REFERENCES CORPDATA.DEPARTMENT
ON DELETE RESTRICT
ALTER TABLE CORPDATA.PROJECT ADD CONSTRAINT RESP_EMP_EXISTSFOREIGN KEY (RESPEMP)REFERENCES CORPDATA.EMPLOYEEON DELETE RESTRICT
REFERENCES��� �� � �� ���� �� �����. ��� � 1
� �� ��� �� �� ��� �� ��� �� �� �� �� � � ���
�����.
PROJECT � ��� �� �� �� � �� DEPTNO� � � ��
DEPTNO� ��� �(���� �� DEPTNO� NOT NULL� ����
��� � � ���� ���). �� �� �� EMPNO� � � ��� �
� RESPEMP� � ��� �.
� A �iSeries� DB2 UDB � �� ��� �� � ��� �� �� � �
��� ���. �� INSERT�� DEPARTMENT � � �
DEPTNO(‘A01’)� ���� ���.
INSERT INTO CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)VALUES (’AD3120’, ’BENEFITS ADMIN’, ’A01’, ’000010’)
����� �� INSERT�� EMPLOYEE � EMPNO ‘000011’� ���� �
��.
INSERT INTO CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)VALUES (’AD3130’, ’BILLING’, ’D21’, ’000011’)
�� INSERT�� DEPARTMENT � � DEPTNO ‘E01’� ���
EMPLOYEE � � EMPNO ‘000010’� ���� ����� ����.
INSERT INTO CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)VALUES (’AD3120’, ’BENEFITS ADMIN’, ’E01’, ’000010’)
�� ����� �� � ��
��� ������ �� �� 1� �� �� ���. �� ���
� �� �� ���� ��� �� � � ��(parent)� ��
�. ��� 1� �� �� � � �� ���.
�� ��
�� � UPDATE� �� � � ���� ��� �� ���� ��
��� �� �� �� ���. �� ���� �� �� ��� ���� ��
� ��, UPDATE NO ACTION ��� ����.
156 iSeries� DB2 UDB SQL ����� �� V5R2
UPDATE NO ACTION
� �� �� � � �� �� � ��, �� � �� ��� �
���. �� �� �� �� ��, UPDATE� ��
�. � �� ��� �� �� ���.
UPDATE RESTRICT
� �� �� � � �� �� � ��, �� � �� ��� �
���. �� �� �� �� ��, UPDATE� ��
�. � �� ��� �� ���.
RESTRICT ��� NO ACTION �� �� ��� ���� ��� � �� ���
�� �� � ����� �� �� � ���. ���� � �� �
��� ���(� ��� UPDATE�). �� ���� UPDATE �
�� ���� �� � ���. �� ���� DELETE� �� �, �
RESTRICT� ���� �� ��(��� �� �� �) ���� �� NO ACTION
��(��� �� � � �� �) ���. ���� ��� �� ���
���.
1. �� ���� UPDATE �� RESTRICT �� NO ACTION� ���� ��
� ���.
2. �� ���� RESTRICT �� �� NO ACTION �� � ���.
�� ����� ��� �� �� �� �� �� �� �� �� �
�� �� �� 1� �� ��� �. �� �� �� �� �� ��� ��
�� �� �� �� ���. �� �� �� ��� ��� (� )
�� �� ��� ����.
�� ����� �� � �� UPDATE� ��� �� �� � �� �� �
� ����� ����. ���� �� �� � �� ��� ���� ��
�� ��� ��� 349 ��� ����� � 350 ��� ��� ���� ���
��.
�: UPDATE ��
�� �� �� ��� � � ���� �� ��� ��� � ����� �
��� � �� � �� ���� ��� �� ���� �� ��� ���
���.
PROJECT � ‘D01’� (WHERE� �� ��� �)� �� DEPARTMENT.
DEPTNO �� �� ���� �� UPDATE� ���. � UPDATE� �
�� ��, PROJECT � DEPARTMENT ��� �� ����� ��� ���.
UPDATE CORPDATA.DEPARTMENTSET DEPTNO = ’D99’WHERE DEPTNAME = ’DEVELOPMENT CENTER’
� 10 � �� � 157
�� ��� DEPARTMENT �� 1� � DEPTNO� PROJECT �� ��
� DEPTNO �� �� �� ���� ��� �� ���.
UPDATE CORPDATA.PROJECTSET DEPTNO = ’D00’WHERE DEPTNO = ’D01’;
��� D01� �� �� ��� �� �� D00�� ���� ��. D00�
DEPARTMENT� 1� � DEPTNO� � ��� ��� ���.
�� ����� �� ��� ��
� 1� �� ��� �� � ��, �� ����� � �� �� DELETE
� ���. � �� �� ��� 1� �� � � �� ���. � 1�
�� �� � ��, DELETE� ��� �� �� �� � ���� �
��. �� � ������ ���� �� ��� �� �� ��� ����
� �. �� ����� ��� �� DELETE� ���.
�� �� DELETE� �� � � �� ��� ��� �� ���� �
� ��� �� �� �� ���. �� ��� ���� �� ��� DELETE
NO ACTION ��� ����.
DELETE NO ACTION
� �� �� � � �� �� � �� �� � �� ��� �
���. �� �� �� �� �� DELETE� ��
�. � �� ��� �� �� ���.
DELETE RESTRICT
� �� �� � � �� �� � �� �� � �� ��� �
���. �� �� �� �� �� DELETE� ��
�. � �� ��� �� ���.
�� �� �� ��� � � ���� �� ��� ��� ����
� �� � �� ���� ��� �� ���� � ��� ���
���.
DELETE CASCADE
�� �� ��� �� �� ��� ���. �� � �� �
���.
�� �� �� � �� � ������ ��� ��� ���. ��
�� � ��� �� �� ����.
v � �� ��� �� �� �� �
v ��� �� ��� �� ��
DELETE SET NULL
� �� �� �� � �� �� ��� �� ��� ��
158 iSeries� DB2 UDB SQL ����� �� V5R2
�. �� ��� ��� � ��� �� �� �� �� � �� ���
��� ��� ���. � �� �� �� ���.
DELETE SET DEFAULT
� � � �� �� � �� ��� �� ��� ���. ��
��� ��� � ��� �� �� �� �� � �� ��� ���
��� ���. � �� �� �� ���.
�� ��, ��� �� ��� ��� �� �� �� �� ���
���. � ��, ���� ��� � �� �� MGRNO� ��
�(DEPARTMENT) �� ���� ����. � � �� ��� �
� �� ��� �� � � ����.
�� �� � �� ��� REPORTS_TO_EXISTS ���� ���.
� � �� �� RESTRICT �� NO ACTION� �� � �� ��� �
� �� ��� �� DELETE� ���.
�� ������ � �� �� � ��� �� � SQLCA� SQLERRD(3)
� ���. � � DELETE� ��� �� ��� �� � ����.
�� CASCADE �� �� ��� �� ���� ���. SQLCA�
SQLERRD(5)� �� � �� �� ���� �� ���� �� � �� ��
�.
RESTRICT ��� NO ACTION ���� ��� ���� ��� � �� ���
�� �� � ����� �� �� � ���. ���� � �� �
��� ���(� ��� DELETE�). �� ���� DELETE �
�� ���� �� � ���. �� ���� DELETE� �� �, �
RESTRICT� ���� �� ��(��� �� �� �) ���� �� NO ACTION
��(��� �� �� �� �) ���. ���� ��� �� ���
���.
1. �� ���� DELETE �� RESTRICT �� NO ACTION� ���� ��
� ���.
2. �� ���� RESTRICT �� �� NO ACTION �� � ���.
�: DELETE ����� ��
DEPARTMENT ���� ��� �� � �� ��� �� �� ��
WORKDEPT(EMPLOYEE ��)� �(null)� ���. �� DELETE� �
��.
DELETE FROM CORPDATA.DEPARTMENTWHERE DEPTNO = ’E11’
� A �iSeries� DB2 UDB � �� ��� �� �� � � ��� ��� �
�, �� �� � DEPARTMENT��� ���� � ‘E11’ �� ���
� 10 � �� � 159
WORKDEPT ��� �� ��� �� � EMPLOYEE� ����. ��
� ��� ���(‘?’)� � ����. �� ��� �� ����.
� 22. DEPARTMENT �. DELETE�� ��� �� � ��
DEPTNO DEPTNAME MGRNO ADMRDEPT
A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00
B01 PLANNING 000020 A00
C01 INFORMATION CENTER 000030 A00
D01 DEVELOPMENT CENTER ? A00
D11 MANUFACTURING SYSTEMS 000060 D01
D21 ADMINISTRATION SYSTEMS 000070 D01
E01 SUPPORT SERVICES 000050 A00
E21 SOFTWARE SUPPORT 000100 E01
F22 BRANCH OFFICE F2 ? E01
G22 BRANCH OFFICE G2 ? E01
H22 BRANCH OFFICE H2 ? E01
I22 BRANCH OFFICE I2 ? E01
J22 BRANCH OFFICE J2 ? E01
�� ‘E11’ ��� ��� ���� DEPARTMENT � � � ��� ��
�����.
��� DELETE�� ���� �� � EMPLOYEE �� �� �� �� �
�� �����.
� 23. EMPLOYEE � �. DELETE� �� � ��.
EMPNO FIRSTNME MI LASTNAME WORKDEPT PHONENO HIREDATE
000230 JAMES J JEFFERSON D21 2094 1966-11-21
000240 SALVATORE M MARINO D21 3780 1979-12-05
000250 DANIEL S SMITH D21 0961 1960-10-30
000260 SYBIL P JOHNSON D21 8953 1975-09-11
000270 MARIA L PEREZ D21 9001 1980-09-30
000280 ETHEL R SCHNEIDER E11 0997 1967-03-24
000290 JOHN R PARKER E11 4502 1980-05-30
000300 PHILIP X SMITH E11 2095 1972-06-19
000310 MAUDE F SETRIGHT E11 3332 1964-09-12
000320 RAMLAL V MEHTA E21 9990 1965-07-07
000330 WING LEE E21 2103 1976-02-23
000340 JASON R GOUNOT E21 5696 1947-05-05
� 24. EMPLOYEE � �. DELETE� �� � ��.
EMPNO FIRSTNME MI LASTNAME WORKDEPT PHONENO HIREDATE
000230 JAMES J JEFFERSON D21 2094 1966-11-21
160 iSeries� DB2 UDB SQL ����� �� V5R2
� 24. EMPLOYEE � � (�). DELETE� �� � ��.
EMPNO FIRSTNME MI LASTNAME WORKDEPT PHONENO HIREDATE
000240 SALVATORE M MARINO D21 3780 1979-12-05
000250 DANIEL S SMITH D21 0961 1960-10-30
000260 SYBIL P JOHNSON D21 8953 1975-09-11
000270 MARIA L PEREZ D21 9001 1980-09-30
000280 ETHEL R SCHNEIDER ? 0997 1967-03-24
000290 JOHN R PARKER ? 4502 1980-05-30
000300 PHILIP X SMITH ? 2095 1972-06-19
000310 MAUDE F SETRIGHT ? 3332 1964-09-12
000320 RAMLAL V MEHTA E21 9990 1965-07-07
000330 WING LEE E21 2103 1976-02-23
000340 JASON R GOUNOT E21 5696 1947-05-05
�� �
�� ����� �� ����� ����� ���� �� �� �� ����� �
�� � ���. �� ����� ��, ���� ��� �� �� �� �
� �� � ���. �� ����� ��, ���� � �� ������
���� � �� � ���. ���� � ����� �� ���(�� �
�� �� ��) ����� �� ���� ����. � �� ���� �
� �� ��� ���. �� ����� ��, ��� ��� ����.
v �� �/�� �� ���� ���.
v �� ��� �� � �� �� ����.
�� ����� �� �� �� ��, ��� ��� ����.
v �� �� � � �� ���� ���.
v ��� ��� ���� ����� ����.
�� ������ ���� ��� ��� ��� �� �� �.
1. CHGPFCST(�� � ���� ��) CL � �� ��� ��� �
� ���.
2. �� ���� �� �(�� �, �� � �� �)� �� ���� �� �
��� �����.
3. CHGPFCST CL ��� �� ���� ��� �� ���.
DSPCPCST(�� �� ���� ��) CL � �� ���� ��� �
��� ���.
� �� � �� � �� �� ��� ��� ������ ����� �
�����.
� 10 � �� � 161
���� WITH CHECK OPTIONWITH CHECK OPTION� ��� �� ��� ���� ��� � �� ��
�� ��� CREATE VIEW�� ��� �� ���. ��� ��� �
�, ��� �� ����� ���� �� �� � ��� ��� ��� �.
��� �� �� �� WITH CHECK OPTION� ��� ���. ��� �
�� � ��� ���� ���.
��� WITH CHECK OPTION� �� �� ��, �� �� ��� �� �
� �� �� �� ��� ���� ���� ���� ���. ��� WITH
CHECK OPTION ��� � �� � �� ���� � ��� �
�� ��� ��� �����. ��� ��� ���� ���� �� ��� �
� �� �� ��� �� ����� ��� ���. �� �� ��� ��
�� ��� �� ���.
�� �WITH CASCADED CHECK OPTION� �� 163 ��� �WITH LOCAL
CHECK OPTION� ���. WITH CHECK OPTION �� �� � �
�� SQL ���� CREATE VIEW ��� �����.
WITH CASCADED CHECK OPTION
WITH CASCADED CHECK OPTION� ��� �� ����� ���� �� �
� ��� ��� ��� � ���. �� �� ����� ��� �� ��
��� �� ��� ����. ��� ��� ��� � ��, �� ��� �
� �� ���.
�� ��, ��� �� ��� �� ��� ���.
CREATE VIEW V1 AS SELECT COL1FROM T1 WHERE COL1 > 10
WITH CHECK OPTION� ���� �� ���� ��� � ��� �� ��
�� �� ��� INSERT�� ���.
INSERT INTO V1 VALUES (5)
WITH CASCADED CHECK OPTION �� V1 � ��� ��.
CREATE VIEW V2 AS SELECT COL1FROM V1 WITH CASCADED CHECK OPTION
�� INSERT�� V2 �� ��� �� � ��� �� ���.
INSERT INTO V2 VALUES (5)
V2 �� ��� � ���.
CREATE VIEW V3 AS SELECT COL1FROM V2 WHERE COL1 < 100
162 iSeries� DB2 UDB SQL ����� �� V5R2
V3� V2 �� V2 WITH CASCADED CHECK OPTION� �� ���
� �� INSERT�� ���.
INSERT INTO V3 VALUES (5)
��� V2 ��� ���� �� INSERT�� ���. V3 WITH CASCADED
CHECK OPTION� ���� ��� V3 ��� ��� �� �� ��� �� �
��.
INSERT INTO V3 VALUES (200)
WITH LOCAL CHECK OPTION
� ��� ���� ��� �� �� � �� ��� � ���
WITH LOCAL CHECK OPTION� WITH CASCADED CHECK OPTION� �
�. �� ��� WITH CHECK OPTION�� �� ��� ��� �� �
�� ���� � � ��� ���.
�� ��, �� �� ��� �� ��� ��� �� ��� ���.
CREATE VIEW V1 AS SELECT COL1FROM T1 WHERE COL1 > 10
��� WITH LOCAL CHECK OPTION �� V1 � �� ��� �
�.
CREATE VIEW V2 AS SELECT COL1FROM V1 WITH LOCAL CHECK OPTION
V2 �� ��� ���� ��� CASCADED CHECK OPTION ��� ��
� �� INSERT� ��� �� V1� �� �� ��� ���� V1� �
� ��� ��� �� ��.
INSERT INTO V2 VALUES (5)
V2 �� ��� � ���.
CREATE VIEW V3 AS SELECT COL1FROM V2 WHERE COL1 < 100
V1� �� ��� V2� WITH LOCAL CHECK OPTION�� �� ���� �
��� �� INSERT� �� ��� �� �� �� WITH CASCADED CHECK
OPTION �� ���.
INSERT INTO V3 VALUES (5)
LOCAL � CASCADED CHECK OPTION�� ��� �� ��� � ��� �
� ��� �� ��� ����� ���.
� 10 � �� � 163
v WITH LOCAL CHECK OPTION� �� ����� ��� � WITH LOCAL
CHECK OPTION �� WITH CASCADED CHECK OPTION� �� �
�� �� ��� ��� ���.
v WITH CASCADED CHECK OPTION� �� ����� ��� � ��
��� �� ��� ��� ���.
�: ����� �� �
�� �� ��� ���.
CREATE TABLE T1 (COL1 CHAR(10))
CREATE VIEW V1 AS SELECT COL1FROM T1 WHERE COL1 LIKE ’A%’
CREATE VIEW V2 AS SELECT COL1FROM V1 WHERE COL1 LIKE ’%Z’
WITH LOCAL CHECK OPTION
CREATE VIEW V3 AS SELECT COL1FROM V2 WHERE COL1 LIKE ’AB%’
CREATE VIEW V4 AS SELECT COL1FROM V3 WHERE COL1 LIKE ’%YZ’
WITH CASCADED CHECK OPTION
CREATE VIEW V5 AS SELECT COL1FROM V4 WHERE COL1 LIKE ’ABC%’
��� INSERT �� UPDATE� �� ��� � �� ��� �� ���
���.
v V1� �� ��, V1 ��� WITH CHECK OPTION� ���� �� ��
���� ���.
v V2� �� ��,
– COL1� �� Z� ��� � �� A� �� ��� ���. �� ��
��� LOCAL�� �� V1 ��� �� ��� �� ����.
v V3� �� ��,
– COL1� �� Z� ��� � �� A� �� ��� ���. V3� �
�� �� ��� ���� ��� �� �� ��� ��� ���. ��
� V3� V2� ���� V2� �� ��� ���� V2 �� �� ��
� ����� �.
v V4� �� ��,
– COL1� ‘AB’� ��� ‘YZ’� ��� �. V4� ��� WITH
CASCADED CHECK OPTION� ���� V4� �� �� �� ��
�� �� ��� ����� �.
v V5� �� ��,
164 iSeries� DB2 UDB SQL ����� �� V5R2
– COL1� ‘AB’� ���� �� ��� ‘ABC’ ��� ���. �� V5
� �� �� ��� �� ���� ��� �� �� �� ��� ��
� ���. ��� V5� V4� ���� V4� ��� �� ��� ���
� V4, V3, V2 � V1 �� �� �� ��� ����� �. �, COL1�
‘AB’� � ‘YZ’� ��� �.
V5� WITH LOCAL CHECK OPTION �� ��, V5� �� COL1�
‘ABC’� ��� ‘YZ’� ��� � ���. LOCAL CHECK OPTION� �
�� ��� ‘C’� ��� �� �� ���.
iSeries� DB2 UDB ��� �
���� ��� �� �� ��� � �� �� � ���� ���� �� �
���. �� �� SQL INSERT, UPDATE �� DELETE���� �����
� ����� insert, update �� delete �� �� �� ���. ����
� �� ��, �� �� �� � �� �� �� � � ���.
���� � �� � ���� ��� ���.
v 166 ��� �SQL ����
v 171 ��� ��� ����
�� ���� ��, CRTPFTRG CL �� ����. ��� �� ��� ���
���� ���� �� ��� ��� ���. �� ���� ��, ��, ��
�� �� ���� � ���.
SQL ���� ��, CREATE TRIGGER�� ����. ��� ����� SQL
�� ����� ����. SQL ���� ��, �� �� �� ���� �
���.
� ���� �� ����� � ��� ��� �� �� � �� �����
� ��� ��� � �� �� ��� ��� ���� ���. SQL
��� � �� ���� �� � �� ��� ���. �� 200�� ���
� � � �� ��� ���.
��� �� �� �� � �� �� ���� ��� ���. �� ��
�� �� �� ��� �� ���� ��� ���. ���, �� �� �
� ��� ��� ���� ���.
v �� �� ���
v �� �� ���
v �� �� ���
v �� �� ���
� 10 � �� � 165
v �� �� ���
v �� �� ���
v �� �� ���(�� ��� ��)
SQL � �� ��� �� ��� � �� ��� � �� ��� ��
� �� �� ��� ��� ��� �� ��� � ���� ������ ���
�� �� ″������� �� ��� ���″ � �����.
SQL ���
SQL CREATE TRIGGER�� ��, �� �� �� �� �� ��� ����
�� �� ���� � �� ����� ��, �� � ��� �� �� �
��. SQL ��� ��� ��� SQL ��, �� �� �� �� ��
��� ����. SQL ���� �� ������ ��� �� �� �� �
�� �� � �� ��� ��.
�� ������ �� SQL ���� ������� � ��� ���. �
��, SQL ���� ��, �� �� �� �� ��� �� �� ������
�� ���� ���. SQL ���� ��� ������ �� ��� ��
�� ���� ��� SQL �� �� � ������ �� ��� �� ���
�.
SQL ��� � �� ��� ��� �SQL ��� �� �����.
CREATE TRIGGER� �� �� ��� ��� SQL ���� CREATE
TRIGGER� ��� �����.
SQL ��� �
SQL ���� CREATE TRIGGER SQL� �� �� ���. SQL �
��� � �� ��� SQL� ����(*PGM) ����� ����. �
���� ��� �� ��� �� ��� ��� ���. ��� ����
SYSTRIGGERS, SYSTRIGDEP, SYSTRIGCOL � SYSTRIGUPD SQL ����
��. SQL ���� � ��� �� �� �� �� ��� SQL� �
�� SQL ��� ��� �� �� ��� SQL ���� ″SQL �����, �
� ���″ � �����.
SQL ��� �� �� ����� �� �����.
v 167 ��� �BEFORE SQL ����
v 168 ��� �AFTER SQL ����
v 169 ��� �SQL ���� ����
v 170 ��� �SQL ��� �� ��
166 iSeries� DB2 UDB SQL ����� �� V5R2
BEFORE SQL ���
BEFORE ���� �� �� ��� �� � ��� �� �����
� ��� � �� � ��� ���. ��� �� ���� ��
� � ��� � ��� �� � �� ��� � ����.
CREATE TABLE TransactionTable (DateOfTransaction DATE, FiscalQuarter SMALLINT)
CREATE TRIGGER TransactionBeforeTrigger BEFORE INSERT ON TransactionTableREFERENCING NEW AS new_rowFOR EACH ROW MODE DB2ROWBEGIN
DECLARE newmonth SMALLINT;SET newmonth = MONTH(new_row.DateOfTransaction);
IF newmonth < 4 THENSET new_row.FiscalQuarter=3;
ELSEIF newmonth < 7 THENSET new_row.FiscalQuarter=4;
ELSEIF newmonth < 10 THENSET new_row.FiscalQuarter=1;
ELSESET new_row.FiscalQuarter=2;
END IF;END
��� SQL �� ��� ��, �� ��� 2000� 11� 14�� ″FiscalQuarter″
�� 2� ����.
INSERT INTO TransactionTable(DateOfTransaction)VALUES(CURRENT DATE)
SQL ���� ��� �� �� ��(UDT)� �� ����� �� �� �
��� ��� �� ��� ���. ��� ��, SQL ���� �� ��
���� �� � ���� � �� ��� � ��, � �� ���
� �� � ���.
CREATE DISTINCT TYPE enginesize AS DECIMAL(5,2) WITH COMPARISONS
CREATE DISTINCT TYPE engineclass AS VARCHAR(25) WITH COMPARISONS
CREATE PROCEDURE SetEngineClass(IN SizeInLiters enginesize,OUT CLASS engineclass)
LANGUAGE SQL CONTAINS SQLBEGINIF SizeInLiters<2.0 THENSET CLASS = ’Mouse’;
ELSEIF SizeInLiters<3.1 THENSET CLASS =’Economy Class’;
ELSEIF SizeInLiters<4.0 THENSET CLASS =’Most Common Class’;
ELSEIF SizeInLiters<4.6 THENSET CLASS = ’Getting Expensive’;
ELSESET CLASS =’Stop Often for Fillups’;
END IF;END
� 10 � �� � 167
CREATE TABLE EngineRatings (VariousSizes enginesize, ClassRating engineclass)
CREATE TRIGGER SetEngineClassTrigger BEFORE INSERT ON EngineRatingsREFERENCING NEW AS new_rowFOR EACH ROW MODE DB2ROWCALL SetEngineClass(new_row.VariousSizes, new_row.ClassRating)
��� SQL �� ��� ��, ″VariousSizes″ �� � 3.0�� ″ClassRating″ �
� ″Economy Class″� ����.
INSERT INTO EngineRatings(VariousSizes) VALUES(3.0)
SQL�� SQL ���� �� � �� �, ��� �� ��, ����� �
��� �� ��� ��� �. �� �� �� �, �� ����� � ��
� �� ��� ���� ��� � ����.
AFTER SQL ���
SQL ���� WHEN �� �� �� ��� ���. ��� ���
��, SQL ��� �� ��� SQL�� ����. ��� ���� ��,
SQL ��� �� ��� SQL�� ���� ��� ��� ������ �����
����. ��� ��, ���� ����� ��� �� ��� �� ���
� ��� �� ��� �� ��� ���.
CREATE TABLE TodaysRecords(TodaysMaxBarometricPressure FLOAT,TodaysMinBarometricPressure FLOAT)
CREATE TABLE OurCitysRecords(RecordMaxBarometricPressure FLOAT,RecordMinBarometricPressure FLOAT)
CREATE TRIGGER UpdateMaxPressureTriggerAFTER UPDATE OF TodaysMaxBarometricPressure ON TodaysRecordsREFERENCING NEW AS new_rowFOR EACH ROW MODE DB2ROWWHEN (new_row.TodaysMaxBarometricPressure>
(SELECT MAX(RecordMaxBarometricPressure) FROMOurCitysRecords))
UPDATE OurCitysRecordsSET RecordMaxBarometricPressure =
new_row.TodaysMaxBarometricPressure
CREATE TRIGGER UpdateMinPressureTriggerAFTER UPDATE OF TodaysMinBarometricPressureON TodaysRecordsREFERENCING NEW AS new_rowFOR EACH ROW MODE DB2ROWWHEN(new_row.TodaysMinBarometricPressure<
(SELECT MIN(RecordMinBarometricPressure) FROMOurCitysRecords))
UPDATE OurCitysRecordsSET RecordMinBarometricPressure =
new_row.TodaysMinBarometricPressure
�� �� � � �� �����.
168 iSeries� DB2 UDB SQL ����� �� V5R2
INSERT INTO TodaysRecords VALUES(0.0,0.0)INSERT INTO OurCitysRecords VALUES(0.0,0.0)
��� SQL �� ��� ��, OurCitysRecords� RecordMaxBarometricPressure�
UpdateMaxPressureTrigger �� ����.
UPDATE TodaysRecords SET TodaysMaxBarometricPressure = 29.95
��� ��� TodaysMaxBarometricPressure� �� 29.91��
RecordMaxBarometricPressure� ���� ���.
UPDATE TodaysRecords SET TodaysMaxBarometricPressure = 29.91
SQL� � ��� �� �� � ���� ��� � �. �� �
�, � �� AFTER UPDATE ���� UpdateMaxPressureTrigger�
UpdateMinPressureTrigger� ���. ��� ����� � TodaysRecords� ��
�� ��� �� �����.
AFTER ���� �� �� ���. �� ��, UPDATE �� � ��
� ����. �� �� � �� �� ��� ��� � �����. ���
��� �� ���� �� ��� � �� �� � ��. ��
�� �� �� �� � �� �� � �� ��� �� ��
�� ��� ���. ���� ���� �� ����� ��� ��
�� ���� �� �� ���� �.
SQL ���� ���
SQL ���� ���� SQL ��� ����� ���� ��� �� ��� SQL
� ��� �� ��� �� �� ��� � � �� ��.
��� ��� � �� ���� ���� ���, �� � �� ��� �
� ��� � �� ���� SQL ��� ��� �� ���.
CREATE TABLE ExcessInventory(Description VARCHAR(50), ItemWeight SMALLINT)CREATE TABLE YearToDateTotals(TotalWeight SMALLINT)
CREATE TABLE FailureLog(Item VARCHAR(50), ErrorMessage VARCHAR(50), ErrorCode INT)
CREATE TRIGGER InventoryDeleteTriggerAFTER DELETE ON ExcessInventoryREFERENCING OLD AS old_rowFOR EACH ROW MODE DB2ROWBEGINDECLARE sqlcode INT;DECLARE invalid_number condition FOR ’22003’;DECLARE exit handler FOR invalid_numberINSERT INTO FailureLog VALUES(old_row.Description,
’Overflow occurred in YearToDateTotals’, sqlcode);DECLARE exit handler FOR sqlexceptionINSERT INTO FailureLog VALUES(old_row.Description,
� 10 � �� � 169
’SQL Error occurred in InventoryDeleteTrigger’, sqlcode);UPDATE YearToDateTotals SET TotalWeight=TotalWeight +
old_row.itemWeight;END
��, �� �� � �����.
INSERT INTO ExcessInventory VALUES(’Desks’,32500)INSERT INTO ExcessInventory VALUES(’Chairs’,500)INSERT INTO YearToDateTotals VALUES(0)
��� � �� SQL �� ��� ����, �� ″Desks″ �� ItemWeight� �
YearToDateTotals� TotalWeight �� � � ���. � �� SQL ��
��� ����, �� �� 32767 �� � ���� �� ″Chairs″ ��
ItemWeight� TotalWeight� � � ��� �� ���. �� ��
�, invalid_number �� ���� ���� FailureLog � �� � ��. ��
��, YearToDateTotals �� �� ��� ��, sqlexception �� ���� ��
��. � ��� �� ��� ��� � ���� �� � ��
��.
DELETE FROM ExcessInventory WHERE Description=’Desks’DELETE FROM ExcessInventory WHERE Description=’Chairs’
SQL ��� �� �
SQL ���� SQL ��, �� �� �� � �� �� �� �� � ��
�� � ���. � �� �� ��, ���� �� �� �� �� � MIN
�� MAX� �� �� �� ���� � �� ����. OLD_TABLE
� NEW_TABLE �� �� �� �� �� ��� ���. ��� ��,
���� �� � MAX� � StudentProfiles� �� �� �� � ���.
CREATE TABLE StudentProfiles(StudentsName VARCHAR(125),StudentsYearInSchool SMALLINT, StudentsGPA DECIMAL(5,2))CREATE TABLE CollegeBoundStudentsProfile(YearInSchoolMin SMALLINT, YearInSchoolMax SMALLINT, StudentGPAMinDECIMAL(5,2), StudentGPAMax DECIMAL(5,2))
CREATE TRIGGER UpdateCollegeBoundStudentsProfileTriggerAFTER UPDATE ON StudentProfilesREFERENCING NEW_TABLE AS ntableFOR EACH STATEMENT MODE DB2SQLBEGINDECLARE maxStudentYearInSchool SMALLINT;SET maxStudentYearInSchool =
(SELECT MAX(StudentsYearInSchool) FROM ntable);IF maxStudentYearInSchool >
(SELECT MAX (YearInSchoolMax) FROMCollegeBoundStudentsProfile) THEN
UPDATE CollegeBoundStudentsProfile SET YearInSchoolMax =maxStudentYearInSchool;
END IF;END
�� ��, ���� ��� �� ��� �� �� � � �����, FOR
EACH STATEMENT ���� ���� �� ����. �� �� ��� ��
�� ��� � �� � �� ������ �� ��� ��� �����
��� ���� �.
170 iSeries� DB2 UDB SQL ����� �� V5R2
�� ���
�� ���� ��, ��� �� ��� �� �� ���� *PGM �����
�� ���� �� ��� ��� ���. ��� ����� � ���
SQL �� ���. ��� ���� ����, ��� ���� ��
ADDPFTRG CL � �� �� � ���� �� iSeries Navigator� �
� �� ��� ���. � ���� ����, ��� �� ���
�.
v � ��
v �� � ��
v ��� ��� �� ���� ��
�� ���� �� ��� ��� � ����� �����.
�� ��� � ����
� �� ��� ����� ��� ���. � ������ ��� SQL� ��
ILE C� �� ���.
iSeries� DB2 UDB�� �� ��� �� �� ��� � � �� �� ��
���� ������ ″������� �� ��� ���″ � �����.
�: �� � �� ��� x ��� ��� ���� ���� �����.
� 10 � �� � 171
#include "string.h"#include "stdlib.h"#include "stdio.h"#include <recio.h>#include <xxcvt.h>#include "qsysinc/h/trgbuf" /* Trigger input parameter */#include "lib1/csrc/msghand1" /* User defined message handler *//*********************************************************************//* This is a trigger program which is called whenever there is an *//* update to the EMPLOYEE table. If the employee’s commission is *//* greater than the maximum commission, this trigger program will *//* increase the employee’s salary by 1.04 percent and insert into *//* the RAISE table. *//* *//* The EMPLOYEE record information is passed from the input parameter*//* to this trigger program. *//*********************************************************************/
Qdb_Trigger_Buffer_t *hstruct;char *datapt;
/*******************************************************//* Structure of the EMPLOYEE record which is used to *//* store the old or the new record that is passed to *//* this trigger program. *//* *//* Note : You must ensure that all the numeric fields *//* are aligned at 4 byte boundary in C. *//* Used either Packed struct or filler to reach *//* the byte boundary alignment. *//*******************************************************/
_Packed struct rec{char empn[6];
_Packed struct { short fstlen ;char fstnam[12];
} fstname;char minit[1];
_Packed struct { short lstlen;char lstnam[15];
} lstname;char dept[3];char phone[4];char hdate[10];char jobn[8];short edclvl;char sex1[1];char bdate[10];decimal(9,2) salary1;decimal(9,2) bonus1;decimal(9,2) comm1;} oldbuf, newbuf;
EXEC SQL INCLUDE SQLCA;
�� 2. � ��� ���� (1/5)
172 iSeries� DB2 UDB SQL ����� �� V5R2
main(int argc, char **argv){int i;int obufoff; /* old buffer offset */int nuloff; /* old null byte map offset */int nbufoff; /* new buffer offset */int nul2off; /* new null byte map offset */short work_days = 253; /* work days during in one year */decimal(9,2) commission = 2000.00; /* cutoff to qualify for */decimal(9,2) percentage = 1.04; /* raised salary as percentage */char raise_date[12] = "1982-06-01";/* effective raise date */
struct {char empno[6];char name[30];decimal(9,2) salary;decimal(9,2) new_salary;} rpt1;
/*******************************************************//* Start to monitor any exception. *//*******************************************************/
_FEEDBACK fc;_HDLR_ENTRY hdlr = main_handler;
/****************************************//* Make the exception handler active. *//****************************************/
CEEHDLR(&hdlr, NULL, &fc);/****************************************//* Ensure exception handler OK *//****************************************/
if (fc.MsgNo != CEE0000){printf("Failed to register exception handler.\n");exit(99);
};
/*******************************************************//* Move the data from the trigger buffer to the local *//* structure for reference. *//*******************************************************/
hstruct = (Qdb_Trigger_Buffer_t *)argv[1];datapt = (char *) hstruct;
obufoff = hstruct ->Old_Record_Offset; /* old buffer */memcpy(&oldbuf,datapt+obufoff,; hstruct->Old_Record_Len);
nbufoff = hstruct ->New_Record_Offset; /* new buffer */memcpy(&newbuf,datapt+nbufoff,; hstruct->New_Record_Len);
�� 2. � ��� ���� (2/5)
� 10 � �� � 173
EXEC SQL WHENEVER SQLERROR GO TO ERR_EXIT;
/*******************************************************//* Set the transaction isolation level to the same as *//* the application based on the input parameter in the *//* trigger buffer. *//*******************************************************/
if(strcmp(hstruct->Commit_Lock_Level,"0") == 0)EXEC SQL SET TRANSACTION ISOLATION LEVEL NONE;
else{if(strcmp(hstruct->Commit_Lock_Level,"1") == 0)
EXEC SQL SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED, READWRITE;
else {if(strcmp(hstruct->Commit_Lock_Level,"2") == 0)EXEC SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
elseif(strcmp(hstruct->Commit_Lock_Level,"3") == 0)EXEC SQL SET TRANSACTION ISOLATION LEVEL ALL;
}}
/********************************************************//* If the employee’s commission is greater than maximum *//* commission, then increase the employee’s salary *//* by 1.04 percent and insert into the RAISE table. *//********************************************************/
if (newbuf.comm1 >= commission){EXEC SQL SELECT EMPNO, EMPNAME, SALARY
INTO :rpt1.empno, :rpt1.name, :rpt1.salaryFROM TRGPERF/EMP_ACTWHERE EMP_ACT.EMPNO=:newbuf.empn ;
if (sqlca.sqlcode == 0) then{
rpt1.new_salary = salary * percentage;EXEC SQL INSERT INTO TRGPERF/RAISE VALUES(:rpt1);
}goto finished;}err_exit:exit(1);
/* All done */finished:return;} /* end of main line */
�� 2. � ��� ���� (3/5)
174 iSeries� DB2 UDB SQL ����� �� V5R2
/******************************************************************//* INCLUDE NAME : MSGHAND1 *//* *//* DESCRIPTION : Message handler to signal an exception to *//* the application to inform that an *//* error occured in the trigger program. *//* *//* NOTE : This message handler is a user defined routine. *//* *//******************************************************************/#include <stdio.h>#include <stdlib.h>#include <recio.h>#include <leawi.h>
#pragma linkage (QMHSNDPM, OS)void QMHSNDPM(char *, /* Message identifier */
void *, /* Qualified message file name */void *, /* Message data or text */int, /* Length of message data or text */char *, /* Message type */char *, /* Call message queue */int, /* Call stack counter */void *, /* Message key */void *, /* Error code */...); /* Optionals:
length of call message queuename
Call stack entry qualificationdisplay external messagesscreen wait time */
/*********************************************************************//******** This is the start of the exception handler function. *//*********************************************************************/void main_handler(_FEEDBACK *cond, _POINTER *token, _INT4 *rc,
_FEEDBACK *new){
/****************************************//* Initialize variables for call to *//* QMHSNDPM. *//* User must create a message file and *//* define a message ID to match the *//* following data. *//****************************************/
char message_id[7] = "TRG9999";char message_file[20] = "MSGF LIB1 ";char message_data[50] = "Trigger error " ;int message_len = 30;char message_type[10] = "*ESCAPE ";char message_q[10] = "_C_pep ";int pgm_stack_cnt = 1;char message_key[4];
�� 2. � ��� ���� (4/5)
� 10 � �� � 175
/****************************************//* Declare error code structure for *//* QMHSNDPM. *//****************************************/
struct error_code {int bytes_provided;int bytes_available;char message_id[7];
} error_code;
error_code.bytes_provided = 15;/****************************************//* Set the error handler to resume and *//* mark the last escape message as *//* handled. *//****************************************/
*rc = CEE_HDLR_RESUME;/****************************************//* Send my own *ESCAPE message. *//****************************************/
QMHSNDPM(message_id,&message_file,&message_data,message_len,message_type,message_q,pgm_stack_cnt,&message_key,&error_code );
/****************************************//* Check that the call to QMHSNDPM *//* finished correctly. *//****************************************/
if (error_code.bytes_available != 0){printf("Error in QMHOVPM : %s\n", error_code.message_id);
}}
�� 2. � ��� ���� (5/5)
176 iSeries� DB2 UDB SQL ����� �� V5R2
� 11 � �� �����
�����( ��� ������� �)� ��� �� ��� SQL�� ���
�� � �� �� ��� �� ������. SQL� ������
��� ��� ������ ��� �� ���.
iSeries� DB2 SQL �� ����� ��� SQL ������� SQL� �� �
����� ��� ��� �� �� ���. �� ������ � �
� � iSeries� DB2 SQL ������� �� ��� ���. �� ���
��� ������ �� � ��� �� ������ �� ����, ����
�� ���� �� ������� �� CALL� ���� ������ ��
� �� ��� ��� �� ��� ���.
������ SQL ����� �� �� ������ ��� ���. �� �
����� ���� �� �� �� ����(System/36* ����� ����� �
�) �� REXX ����� ���. � ������ SQL� ���� � �
�� ��� SQL� ��� ���. SQL ������ ���� SQL �
��� SQL ���� �� �� SQL� ��� ���.
�� ������ ��� ���� �� �� ��� ��� �.
v CREATE PROCEDURE� �� �� ����� ��
v CALL� �� �� ����� ��
v ��� �� ��
v ������ ��� ���� �� �� ���� ��
CREATE PROCEDURE� ��� �� ������ ��� ���.
CREATE PROCEDURE�� ������ ��� ��� ���� �
SYSROUTINES� SYSPARMS ���. ��� ��� ���� SQL CALL
� �� ��� ���.
�� ����� �� SQL ������ �� �� SQL CREATE PROCEDURE
�� ��� ���. ��, iSeries Navigator� �� ������ ��
� ���.
�� ���� �� ������ ��� ��� �� ��� SQL�, �� �
����� ��� �� �� �� � �� ����� ��� � �� ��
�.
v 178 ��� ��� ����� ���
v 179 ��� �SQL ����� ���
© Copyright IBM Corp. 1998, 2002 177
v 185 ��� ��� ����� ����
v 186 ��� ��� ����� ���
v 191 ��� ��� ����� � UDF �� ��� �� ���
v 196 ��� ������ � � �� ������
v 198 ��� ��� �� �� ���� �� ���
v 199 ��� �CALL� ��
Java� ��� ��� ����� �� ��� IBM Developer Kit for Java� Java
SQL �� �����.
DRDA� �� �� ������ ��� � �� ��� 394 ��� �DRDA
�� ����� ����� �����.
�: �� � �� ��� x ��� ��� ���� ���� �����.
�� ����� ��
�� ����� �� CREATE PROCEDURE�� �� ��.
v ������ ���.
v ��� � � ���.
v ����� ��� ���� ��� ����� �� �� ��� ���.
�� �� ���.
CREATE PROCEDURE P1(INOUT PARM1 CHAR(10))EXTERNAL NAME MYLIB.PROC1
LANGUAGE CGENERAL WITH NULLS;
� CREATE PROCEDURE�� �� ��.
v ����� P1 ���.
v �� ��� � �� ���� �� ��� �� �� ���� ��
�. � ���� �� 10� �� ����. ���� �� IN, OUT �
� INOUT�� ��� ���. ��� ��� ��� � ������
�� ��� ���� ��.
v MYLIB� PROC1� ����� ���� ����� �� ���.
MYLIB.PROC1� ������ CALL�� ��� � ���� ������.
v ����� P1(���� MYLIB.PROC1)� C� �� ����. ��� �
�� �� ���� �� �� ���� ���. �� �� ���
� ������ ���� �� �� ���(�� �� ILE C �����
� ��, NUL ��� ��, ���, ��, �� � ���� ��� ���).
178 iSeries� DB2 UDB SQL ����� �� V5R2
v CALL ��� SIMPLE CALL WITH NULLS� � ���. �� ���
�� �� ���� NULL ��� ���� CALL�� �����
� �� �� ���� �� ����. �� �� N ��� ���
�� N� CREATE PROCEDURE� ��� ���� ���. � ��
���� ���� �� �� �� ��� ���.
��� �� ������ ��� ��� �� ���� �. ��� ����
� ��� �� ��, CALL�� ������ ��� � � �����
CREATE PROCEDURE� DECLARE PROCEDURE��� �� ������ �
�� �����. �� �� NULL ������ ��� ���. 187 ��
� ������ ��� �� �� CALL� ���� �� ����� ��� ��
CALL�� �� ���.
SQL ����� ��
SQL ����� �� CREATE PROCEDURE�� �� ��.
v ������ ���.
v ��� � � ���.
v ����� ��� ��� ����� �� �� ��� ���.
v ����� �� ���. ����� ��� ������ �� �� � �
� �� SQL���.
�� ��� � ������ �� ��� �� ��� ��� ��� �
� ����.
CREATE PROCEDURE UPDATE_SALARY_1(IN EMPLOYEE_NUMBER CHAR(10),IN RATE DECIMAL(6,2))LANGUAGE SQL MODIFIES SQL DATA
UPDATE CORPDATA.EMPLOYEESET SALARY = SALARY * RATE
WHERE EMPNO = EMPLOYEE_NUMBER;
� CREATE PROCEDURE�� �� ��.
v ����� UPDATE_SALARY_1 ���.
v �� ���� �� 6� �� �� ��� EMPLOYEE_NUMBER ���
� �� ���� �� �� ��� RATE ���� ���.
v ������ SQL ��� �� SQL ������ ����.
v ����� �� �� UPDATE��� ���. ����� ��� UPDATE
�� EMPLOYEE_NUMBER � RATE �� ��� �� ����.
� UPDATE� ��, �� SQL ��� �� SQL ����� ���
���. SQL ���� ���� ����.
� 11 � �� ����� 179
v ���
v CALL�
v CASE�
v � ��
v FOR�
v GET DIAGNOSTICS�
v GOTO�
v IF�
v ITERATE�
v LEAVE�
v LOOP�
v REPEAT�
v RESIGNAL�
v RETURN�
v SIGNAL�
v WHILE�
��� �� ��� � �� ��� � ������ ��� ���. �
������ CASE� �� �� �� ��� �� � �� ��.
CREATE PROCEDURE UPDATE_SALARY_2(IN EMPLOYEE_NUMBER CHAR(6),IN RATING INT)LANGUAGE SQL MODIFIES SQL DATACASE RATINGWHEN 1 THENUPDATE CORPDATA.EMPLOYEESET SALARY = SALARY * 1.10,BONUS = 1000WHERE EMPNO = EMPLOYEE_NUMBER;
WHEN 2 THENUPDATE CORPDATA.EMPLOYEESET SALARY = SALARY * 1.05,BONUS = 500WHERE EMPNO = EMPLOYEE_NUMBER;
ELSEUPDATE CORPDATA.EMPLOYEESET SALARY = SALARY * 1.03,BONUS = 0WHERE EMPNO = EMPLOYEE_NUMBER;
END CASE;
� CREATE PROCEDURE�� �� ��.
v ����� UPDATE_SALARY_2� ���.
180 iSeries� DB2 UDB SQL ����� �� V5R2
|
v �� ���� �� 6� �� �� ��� EMPLOYEE_NUMBER ���
� �� ���� � �� ��� RATING ���� ���.
v ������ SQL ��� �� SQL ������ ����.
v ����� �� ���. ����� ��� �� ��� RATING� ��
�� ��� �� ��� ����.
� �� ������ � �� ����� �� ��� ���.
�� � �� �� �� ��� SQL� ��� ���. �� SQL �
, �� � ���� ��� ���.
�� �� ���� DEPT_NUMBER� ���. � �� �� �� �� �� �
�� � �� �� �� �� �� �� �� � ��.
CREATE PROCEDURE RETURN_DEPT_SALARY(IN DEPT_NUMBER CHAR(3),OUT DEPT_SALARY DECIMAL(15,2),OUT DEPT_BONUS_CNT INT)LANGUAGE SQL READS SQL DATAP1: BEGINDECLARE EMPLOYEE_SALARY DECIMAL(9,2);DECLARE EMPLOYEE_BONUS DECIMAL(9,2);DECLARE TOTAL_SALARY DECIMAL(15,2)DEFAULT 0DECLARE BONUS_CNT INT DEFAULT 0;DECLARE END_TABLE INT DEFAULT 0;DECLARE C1 CURSOR FORSELECT SALARY, BONUS FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = DEPT_NUMBER;
DECLARE CONTINUE HANDLER FOR NOT FOUNDSET END_TABLE = 1;
DECLARE EXIT HANDLER FOR SQLEXCEPTIONSET DEPT_SALARY = NULL;
OPEN C1;FETCH C1 INTO EMPLOYEE_SALARY, EMPLOYEE_BONUS;
WHILE END_TABLE = 0 DOSET TOTAL_SALARY = TOTAL_SALARY + EMPLOYEE_SALARY + EMPLOYEE_BONUS;IF EMPLOYEE_BONUS > 0 THENSET BONUS_CNT = BONUS_CNT + 1;END IF;
FETCH C1 INTO EMPLOYEE_SALARY, EMPLOYEE_BONUS;END WHILE;CLOSE C1;SET DEPT_SALARY = TOTAL_SALARY;SET DEPT_BONUS_CNT = BONUS_CNT;
END P1;
� CREATE PROCEDURE�� �� ��.
v ����� RETURN_DEPT_SALARY� ���.
v �� ����� �� 3� �� �� ��� ��� DEPT_NUMBER, ��
���� �� �� ��� ��� DEPT_SALARY ��� �� ���� �
�� ��� ��� DEPT_BONUS_CNT� ���.
v ������ SQL ��� �� SQL ������ ����.
v ����� �� ���.
� 11 � �� ����� 181
– SQL � EMPLOYEE_SALARY� TOTAL_SALARY� �� ��� ��
�.
– ��� 0�� ����� SQL � BONUS_CNT� END_TABLE ��
�.
– EMPLOYEE �� � ��� �� C1 ���.
– � END-TABLE 1� ��� � NOT FOUND �� � ���� �
��. � ���� FETCH �� �� �� �� �� ����.
��� ��� SQLCODE� SQLSTATE� 1� �� ������.
– SQLEXCEPTION �� �� ���� ���. ��� DEPT_SALARY
� �(null)� ���� � ��� ��� ���. � ���� �� �
�� �� �� SQLSTATE ���� ‘00’, ‘01’ �� ‘02’� �� �� �
���. ������ �� SQL ������ ����� DEPT_SALARY
�� ����� � ����� �� -1��. � ���� ���� ��,
SQLCODE� SQLSTATE� 0�� �� ������.
SQLEXCEPTION �� ���� ���� �� � ���� ���� �
� ��� ��� ��, � ��� ��� ��� ��� SQLCA �
��. ������ ����� SQLCA� �� SQL �������� �
��.
– �� C1� OPEN, FETCH � CLOSE� ���. ��� CLOSE� ���
� � ��, � ��� SET RESULT SETS� CREATE PROCEDURE�
���� ����� � ��� �� � �.
– � ��� � ��� ��� WHILE� ���. ��� ��� �
�� TOTAL_SALARY� ���� ��� ��� 0�� � ��,
BONUS_CNT� ����.
– DEPT_SALARY� DEPT_BONUS_CNT� �� ���� ��.
� ��� ���� � ���� ��� !� ��� ��� ��, ��� �
� �� ���� ����. ���(atomic) � ��� SAVEPOINTS�
�� ���� . � ��� ���� �� , �� �� ���� .
SAVEPOINTS �� �� ��� ��� 354 ��� ����� �����.
�� �� ���� DEPT_NUMBER� ���. EMPLOYEE_BONUS ��
��� ��� � �� �� �� �� �� �� ��� �� ���.
������ �� �� �� ��� �� ��.
CREATE PROCEDURE CREATE_BONUS_TABLE(IN DEPT_NUMBER CHAR(3),INOUT CNT INT)LANGUAGE SQL MODIFIES SQL DATACS1: BEGIN ATOMICDECLARE NAME VARCHAR(30) DEFAULT NULL;DECLARE CONTINUE HANDLER FOR SQLSTATE ’42710’
SELECT COUNT(*) INTO CNT
182 iSeries� DB2 UDB SQL ����� �� V5R2
FROM DATALIB.EMPLOYEE_BONUS;DECLARE CONTINUE HANDLER FOR SQLSTATE ’23505’
SET CNT = CNT - 1;DECLARE UNDO HANDLER FOR SQLEXCEPTION
SET CNT = NULL;IF DEPT_NUMBER IS NOT NULL THEN
CREATE TABLE DATALIB.EMPLOYEE_BONUS(FULLNAME VARCHAR(30),BONUS DECIMAL(10,2),
PRIMARY KEY (FULLNAME)); FOR_1:FOR V1 AS C1 CURSOR FORSELECT FIRSTNME, MIDINIT, LASTNAME, BONUS
FROM CORPDATA.EMPLOYEEWHERE WORKDEPT = CREATE_BONUS_TABLE.DEPT_NUMBER
DOIF BONUS > 0 THEN
SET NAME = FIRSTNME CONCAT ’ ’ CONCATMIDINIT CONCAT ’ ’CONCAT LASTNAME;
INSERT INTO DATALIB.EMPLOYEE_BONUSVALUES(CS1.NAME, FOR_1.BONUS);
SET CNT = CNT + 1;END IF;
END FOR FOR_1;END IF; END CS1
� CREATE PROCEDURE�� �� ��.
v ����� CREATE_BONUS_TABLE ���.
v �� ����� �� 3� �� �� ��� DEPT_NUMBER ���� �
�� ���� � �� ��� CNT ���� ���.
v ������ SQL ��� �� SQL ������ ����.
v ����� �� ���.
– �� ���� SQL � NAME ���.
– SQLSTATE 42710 �� � ���� ���. EMPLOYEE_BONUS
�� �� �� ��, ���� ���� � �� ��� � ��.
SQLCODE� SQLSTATE� 0�� ����� FOR��� ��� ���.
– SQLSTATE 23505, �� � �� � ���� ���. ������ �
�� �� �� ���� ��, ���� ���� CNT� ���
�. INSERT� ��� SET� �� ��� ���.
– SQLEXCEPTION �� UNDO ���� ���. ���� ��, ���
��� ���� CNT� 0�� ���� � �� ��� ��� ��
�. � �� � �� �� ��� ���� ������ ���.
– FOR� �� �� C1 ��� EMPLOYEE �� ���� ��
�. FOR� �� �� ���� � ��� �� �� ��� ��� SQL
�� ����. � � �� � FIRSTNME, MIDINIT � LASTNAME
� ��� �� �� ���� �� � �� SQL � NAME �
��. SQL � NAME� BONUS� EMPLOYEE_BONUS � ���
�. �� ��� ��� �� ��� ����� �� ���� �� FOR�
��� �� ����� �� ��� �.
� 11 � �� ����� 183
SQL ��� � ��� ��� FOR� �� � ��� �� ����
��� ���. � �� FOR_1.BONUS� ��� � � �� �
BONUS� ��� SQL �� ���. CS1.NAME� �� CS1
� ��� � �� ��� NAME ���. ���� �����
��� ��� ���. CREATE_BONUS_TABLE.DEPT_NUMBER� �
���� CREATE_BONUS_TABLE �� DEPT_NUMBER �����.
���� �� SQL ��� � �� ���� SQL� ���� ���
� ��� �� ��, � ��� �� � ���� ��� ���.
SQL ����� �� SQL ��� ���. ��� �� �� ��� ��
��� �� �� ��. �� ��� ����� ��� ���� � ��
���.
CREATE PROCEDURE CREATE_DEPT_TABLE (IN P_DEPT CHAR(3))LANGUAGE SQL
BEGINDECLARE STMT CHAR(1000);DECLARE MESSAGE CHAR(20);DECLARE TABLE_NAME CHAR(30);DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SET MESSAGE = ’ok’;SET TABLE_NAME = ’CORPDATA.DEPT_’ CONCAT P_DEPT CONCAT ’_T’;SET STMT = ’DROP TABLE ’ CONCAT TABLE_NAME;PREPARE S1 FROM STMT;EXECUTE S1;
SET STMT = ’CREATE TABLE ’ CONCAT TABLE_NAME CONCAT’( EMPNO CHAR(6) NOT NULL,
FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL,LASTNAME CHAR(15) NOT NULL,SALARY DECIMAL(9,2))’;
PREPARE S2 FROM STMT;EXECUTE S2;SET STMT = ’INSERT INTO ’ CONCAT TABLE_NAME CONCAT’SELECT EMPNO, FIRSTNME, MIDINIT, LASTNAME, SALARYFROM CORPDATA.EMPLOYEEWHERE WORKDEPT = ?’;
PREPARE S3 FROM STMT;EXECUTE S3 USING P_DEPT;
END;
� CREATE PROCEDURE�� �� ��.
v ����� CREATE_DEPT_TABLE ���.
v �� ����� �� 3� �� �� ��� P_DEPT ���� ���.
v ������ SQL ������ ����.
v ����� �� ���.
– SQL � STMT � SQL � TABLE_NAME ��� ���.
184 iSeries� DB2 UDB SQL ����� �� V5R2
– CONTINUE ���� ���. ������ �(�� �� ��)� DROP
� �. �� �� ��� �� EXECUTE� ���. ���� ��
�� ��� �� ���.
– �� � ‘_T’� ��� P_DEPT ��� ��� � TABLE_NAME �
�� ‘DEPT_’ ���.
– � STMT� DROP� ��� � �� �� ���.
– � STMT� CREATE� ��� � �� �� ���.
– � STMT� INSERT� ��� � �� �� ���. ���
��� where� ����. � ��� �� � � P_DEPT� USING
�� ����.
������ �� �� �� ‘D21’��� � DEPT_D21_T� ��� � �
� �� ‘D21’ �� �� ���� ������.
�� ����� ���
Create SQL �����, Create SQL �� �� Create Trigger� SET OPTION
DBGVIEW = *SOURCE� �� SQL� ��� ��� ������ ��
���� ���. �� RUNSQLSTM �� ���� DBGVIEW
(*SOURCE)� ��� RUNSQLSTM �� �� �� ��� ���.
�� ��� ��� �� �� �� ��� QTEMP/QSQDSRC� ���. �
� ��� ������ ��� ����� �� ���� ���. �� ���� �
��� �� ��� � �� � ��. ��� � � �� �� �
��� ���� ���.
�� � � ���� ��� �� ����. ��� � �� �� � ��
��� ����� �. �� �� ��� �� ����. ���� ��
���� �� ��� �� ����. ���� �� �� ��� ��� �
� ����. � � ���� FOR� � �� �� ��� �� �
�� ���. ���� ��� ��� ���� �� ����. ��� �
� �� �� �� ������. �� � � ���� ��� ����
���� �. �� �� �� �� ���. ��� �� �� �� �
� ���. � �� ��� �� ��� �� �� �� � �� ��
� �� ������ ��� �� �� ��� �� �� ���.
SQL ��� C� ������ SQL �� ��� �� ��� � �� C��
����� ���. SQL �� �� ��� � � ���� C� ��� �
��. ��� �� �� ��� �����, ��� �� ��� �� �� ��
� ���. �� �� �� ��� � �� � *� �����.
� 11 � �� ����� 185
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
���� �� � � � ��� �� �� ������ ���� �
SQL � � �� ��� � ��� ��� ���. � � � ������
� �� ���� �� �� ���.
���� ������ ��� ���� ��� �� � �� �� ��� �
����. ��� �� � ���� FOR�� ��� �� �� ��
�.
�� ����� ��
SQL CALL�� �� ������ ���. CALL�� �� ������ �
�� �� ����. �� �, � ���� �� ��� � ���.
CALL� ��� �� �� ������ ���� CREATE PROCEDURE��
�� ��. SQL ������ �� ����� CREATE PROCEDURE� �
�� ������ ����� ��� ���.
������ ��� ���� ������ CALL CL � ��� �� ���
�� �� � �� ���. CALL CL �� �� � �� ����
���� �� ����� ��� ��� � �� ������ ��� ��
�� ���� ���� ��� �.
iSeries� DB2 SQL� � �� �� � �� ��� ���� ����� ��
� CALL�� 3�� ��� ���. ��� ���.
v ����� ��� �� �� �� �� CALL�
v �� ����� �� �� �� �� CALL�
v �� CREATE PROCEDURE �� �� �� CALL�
�: �� ����� � �� ����.
v ���� ���� ���� CALL�
v ��� ��� ��� CALL�(�� ��, STRSQL �� �� ���� �
�)
v EXECUTE IMMEDIATE�� ��� CALL�
��� � �� �� ����.
v 187 ��� ������ ��� �� CALL� ���
v 187 ��� ������ ��� �� �� CALL� ���
v 188 ��� �SQLDA� �� �� CALL� ���
v 189 ��� �CREATE PROCEDURE� �� �� CALL� ���
186 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
����� ��� �� CALL� ��
� ��� CALL�� DECLARE PROCEDURE ���� ����� ����� �
� � �� �� ��� ���. ��� PL/I ��� ��� CREATE
PROCEDURE� �� CALL� ���.
DCL HV1 CHAR(10);DCL IND1 FIXED BIN(15);
:EXEC SQL CREATE P1 PROCEDURE
(INOUT PARM1 CHAR(10))EXTERNAL NAME MYLIB.PROC1LANGUAGE CGENERAL WITH NULLS;
:EXEC SQL CALL P1 (:HV1 :IND1);
:
� CALL�� ��� � ���� MYLIB/PROC1 �� ��� ����� � �
� �� ����. ����� ��� ILE C��� � �� �� ��� �
HV1� ��� �� �� 11�� �� �� �� C NUL � �����. ILE
C ������ ��� �, iSeries� DB2 SQL� ���� ��, ���, ��, �
� �� ���� �� ���� �� � ��� ��� �� ����� �
�����. � �� �� ����� ���. � �� CREATE PROCEDURE
�� �� ���� ���� � �� �� �� �� ���. � �
� ����� �� �� ��� ����� � IND1� ��� �� ���.
� �� ���� INOUT�� ����� SQL� ��� � HV1� �����
� IND1 ��� ������ �� � MYLIB.PROC1��� ���
�� ����.
�:
1. CREATE PROCEDURE � CALL� ��� ������� ����� SQL
����� �� ��� �� ��� ��� �.
2. CREATE PROCEDURE� DECLARE PROCEDURE�� �� �� CALL
�� ��� DECLARE PROCEDURE�� ����.
����� ��� �� �� CALL� ��
���� CREATE PROCEDURE�� �� �� CALL�� �� �� �� ��
��.
v �� ��� � �� INOUT �� ���� ����.
v CALL ��� GENERAL��(����� �� ���� ���).
v �� ����� CALL ��� ������ � ��� �� �� �� ��
���.
� 11 � �� ����� 187
v �� ����� ��� ���� �� ������� �� �� ��
���.
�: ����� ��� �� �� CALL�
�: �� � �� ��� x ��� ��� ���� ���� �����.
��� ����� ��� �� �� CALL�� PL/I ���.
DCL HV2 CHAR(10);:
EXEC SQL CALL P2 (:HV2);:
CALL�� ����, iSeries� DB2 SQL� �� SQL �� �� �� ���
� ��� ��. �� ��� �� �� *SYS(��� ��)� ����
DFTRDBCOL ���� CRTSQLPLI � ���� �� ��� ���. �
�� P2� ��� ���� �� ����� ���� ����. �� ���
GENERAL��� ����� � �� ������ �� �� ���� ��
�.
�: CALL�� ��� � ����� �� CALL� ���� � � 0�� �
��, ������ ������ ��� ��� ���� ��� ���.
���� P2� ����� ���� ������ ��� � ��� � HV2� �
�� CALL� ������ ���� P2��� �� �� P2� ��� ���
� ��� �� �� ���.
SQLDA� �� �� CALL� ��
�� ��� �� CALL�� (����� ��� � �� ����) ��� �
C� ��� ��� ��� ���� �� SQLDA� ����. �� ����
�� 2�� ��� �, � ��� SHORT INT ��� � ��� � 4� ��
CHAR� ��� ��� ���.
#define SQLDA_HV_ENTRIES 2#define SHORTINT 500#define NUL_TERM_CHAR 460
exec sql include sqlca;exec sql include sqlda;
...typedef struct sqlda Sqlda;typedef struct sqlda* Sqldap;...
main(){Sqldap dap;short col1;char col2[4];
188 iSeries� DB2 UDB SQL ����� �� V5R2
int bc;dap = (Sqldap) malloc(bc=SQLDASIZE(SQLDA_HV_ENTRIES));
/* SQLDASIZE is a macro defined in the sqlda include */col1 = 431;strcpy(col2,"abc");strncpy(dap->sqldaid,"SQLDA ",8);dap->sqldabc = bc; /* bc set in the malloc statement above */dap->sqln = SQLDA_HV_ENTRIES;dap->sqld = SQLDA_HV_ENTRIES;dap->sqlvar[0].sqltype = SHORTINT;dap->sqlvar[0].sqllen = 2;dap->sqlvar[0].sqldata = (char*) &col1;dap->sqlvar[0].sqlname.length = 0;dap->sqlvar[1].sqltype = NUL_TERM_CHAR;dap->sqlvar[1].sqllen = 4;dap->sqlvar[1].sqldata = col2;...EXEC SQL CALL P1 USING DESCRIPTOR :*dap;...}
�� �� ������� ��� � ���� ��� ������ �� ���
�� CALL� ��� ���. �� �� ��� ���.
...main()
{char proc_name[15];...strcpy (proc_name, "MYLIB.P3");...EXEC SQL CALL :proc_name ...;...}
�� �� MYLIB.P3� ���� ��� ��� USING DESCRIPTOR�� �
� ��� SQLDA� ��� ���� �� ��� �� ��� ���.
������� �� �� ��� �� CALL� ���� CREATE PROCEDURE
���� ��� �� ��, ���� ���. ������� ��� ��� �
�� ���.
�� ����� �� �� � �� ���� ��� ���.
CREATE PROCEDURE� �� �� CALL� ��
�� ��� CREATE PROCEDURE ��� � �� �� CALL�� �� �
� ���.
v �� �� IN �� ���� ����.
v CALL ��� GENERAL��(����� �� ���� ���).
v �� ����� CALL � �� ��� ��� ������ �� ��
�.
� 11 � �� ����� 189
v �� ����� ��� ���� �� ������� �� �� ��
���.
�: CREATE PROCEDURE� �� �� CALL�
�: �� � �� ��� x ��� ��� ���� ���� �����.
��� �� CALL�� C ���.
char hv3[10],string[100];:
strcpy(string,"CALL MYLIB.P3 (’P3 TEST’)");EXEC SQL EXECUTE IMMEDIATE :string;
:
� ��� EXECUTE IMMEDIATE� �� ��� �� CALL� ���.
‘P3 TEST’� �� �� �� ��� ��� �� ���� ���� MYLIB.P3
�� ��� �����.
��� ��� �� CALL� ��� �� ��� � ����� ����
�� �� ���� �. ���� MYLIB.P3� 5�� ���� �� ��
� ��, ���� �� �� ��� �� ��� 2�� ����.
�: �� ��� CALL�� ��� �� �� ������ �� ��
��� ��� ���� � � �� �� ���. �� SQL ��
PREPARE � EXECUTE�� ��� �� ��� ��, ��� �� CALL�
�� ��� ���.
CALL� ��� �� �� �� �� ��� ����.
v �� � �� �� ��� 2� �� ����.
v �� 10� �� � 10��� ����. �� � � �#� � �
� ���. �� �� 123.45� � 10�(5,2)� ����. �� �
� 001.01 �� �� 5� 2� �� � � �#� ����.
v �� �� �� �� �� �� ���� ����.
�� CALL� ��� � ����� ��� �� ����.
CURRENT DATE
ISO ��� 10��� �� ����� ����.
CURRENT TIME
ISO ��� 8��� �� ����� ����.
CURRENT TIMESTAMP
IBM SQL ��� 26��� �� ����� ����.
CURRENT TIMEZONE
�� 6 � � �#� 0� � 10�� ����.
190 iSeries� DB2 UDB SQL ����� �� V5R2
CURRENT SCHEMA
128���� �� � �� ����� ����.
CURRENT SERVER
18���� �� � �� ����� ����.
USER
18���� �� � �� ����� ����.
CURRENT PATH
3483���� �� � �� ����� ����.
�� ����� � UDF� �� ���� �� ��
CALL�� �� ���� ��� �� � REXX ������ ��� �� ���
��� �� ��� ���. ��� ��� � �� ���� �� � ��
�� ���. SQL �� ��� �� �� � � � �� ���. � ��
� �� � �� ��� �� �� �� ��� ���� ������ �
� ���� ��� �� ���. � � ��(-) ��� �� �� ��, � ��
��� � �� �� ��� ���� ���� ���. ��� � ���
iSeries� DB2 SQL� � �� �� � ��� ���� ��� ����. �
��� ��� �� ����� �� ���� ��� ��� ����� �
����. SQL ����� ��� �� SQL �� ��� ����� �� �
� � ���� ���.
��� ��� ��� ��� SQL ����� � IBM Devekioer’s Kit for Java�
Java SQL �� � �����.
� 25. ���� �� ��
SQL �� �� C � C++ CL
iSeries� COBOL �
iSeries� ILE COBOL
SMALLINT �� - PIC S9(4) BINARY
INTEGER � - PIC S9(9) BINARY
BIGINT �� � - PIC S9(18) BINARY �:
iSeries� ILE COBOL ��
�� ����.
DECIMAL(p,s) 10�(p,s) TYPE(*DEC) LEN(p s) PIC S9(p-s)V9(s)
PACKED-DECIMAL �: �
�� 18�� �� ���
�.
NUMERIC(p,s) - - PIC S9(p-s)V9(s) DISPLAY
SIGN LEADING
SEPARATE �: ��� 18
�� �� ��� �.
� 11 � �� ����� 191
|
|
||
|||||
||||
||||
||||||
|||||||
|||||||
� 25. ���� �� �� (�)
SQL �� �� C � C++ CL
iSeries� COBOL �
iSeries� ILE COBOL
REAL �� FLOAT(p) �� - COMP-1 �: iSeries� ILE
COBOL ���� ���
�.
DOUBLE PRECISION,
FLOAT �� FLOAT(p)
�� - COMP-2 �: iSeries� ILE
COBOL ���� ���
�.
CHARACTER(n) char ... [n+1] TYPE(*CHAR) LEN(n) PIC X(n)
VARCHAR(n) char ... [n+1] - �� � �� ���(���
�� �� SQL ������
COBOL � ��)
VARCHAR(n) FOR BIT
DATA
VARCHAR ��� �(��
� �� �� SQL ����
�� C ��)
- �� � �� ���(���
�� �� SQL ������
COBOL � ��)
GRAPHIC(n) wchar_t ... [n+1] - PIC G(n) DISPLAY-1 ��
PIC N(n) �: iSeries�
ILE COBOL� ����.
VARGRAPHIC(n) VARGRAPHIC ��� ��(C
� ��)
- �� � ��� ���(���
�� �� SQL ������
COBOL � ��). �:
iSeries� ILE COBOL� �
���.
DATE char ... [11] TYPE(*CHAR) LEN(10) PIC X(10)
iSeries� ILE COBOL� ��
�, FORMAT DATE.
TIME char ... [9] TYPE(*CHAR) LEN(8) PIC X(8)
iSeries� ILE COBOL� ��
�, FORMAT TIME.
TIMESTAMP char ... [27] TYPE(*CHAR) LEN(26) PIC X(26)
iSeries� ILE COBOL� ��
�, FORMAT TIMESTAMP.
CLOB CLOB ��� �(��� �
� �� SQL ������
C � ��)
- CLOB ��� �(��� �
� �� SQL ������
COBOL � ��) �:
iSeries� ILE COBOL ��
�� ����.
BLOB BLOB ��� �(��� �
� �� SQL ������
C � ��)
- BLOB ��� �(��� �
� �� SQL ������
COBOL � ��) �:
iSeries� ILE COBOL ��
�� ����.
DBCLOB DBCLOB ��� �(���
�� �� SQL �����
� C � ��)
- DBCLOB ��� �(���
�� �� SQL �����
� COBOL � ��) �:
iSeries� ILE COBOL ��
�� ����.
192 iSeries� DB2 UDB SQL ����� �� V5R2
|
|||||
||||||
|||||||
||||
||||||
|||||
||||
||||||
|||||||||
|||||
|
|||||
|
|||||
|
||||
||||||
||||
||||||
||||
||||||
� 25. ���� �� �� (�)
SQL �� �� C � C++ CL
iSeries� COBOL �
iSeries� ILE COBOL
ROWID ROWID ��� �(��� �
� �� SQL ������
C � ��)
- ROWID ��� �(��� �
� �� SQL ������
COBOL � ��)
DataLink - - -
����� � �� - PIC S9(4) BINARY
� 26. ���� �� ��
SQL �� �� FORTRAN
Java �� ��
JAVA
Java �� ��
DB2GENERAL PL/I
SMALLINT INTEGER*2 �� �� FIXED BIN(15)
INTEGER INTEGER*4 int int FIXED BIN(31)
BIGINT - � � -
DECIMAL(p,s) - BigDecimal BigDecimal FIXED DEC(p,s)
NUMERIC(p,s) - BigDecimal BigDecimal -
REAL �� FLOAT(p) REAL*4 �� �� FLOAT BIN(p)
DOUBLE PRECISION,
FLOAT ��
FLOAT(p)
REAL*8 �� �� FLOAT BIN(p)
CHARACTER(n) CHARACTER*n ��� ��� CHAR(n)
VARCHAR(n) - ��� ��� CHAR(n) VAR
VARCHAR(n) FOR
BIT DATA
- - com.ibm.db2.app.Blob CHAR(n) VAR
GRAPHIC(n) - ��� ��� -
VARGRAPHIC(n) - ��� ��� -
DATE CHARACTER*10 �� ��� CHAR(10)
TIME CHARACTER*8 �� ��� CHAR(8)
TIMESTAMP CHARACTER*26 ���� ��� CHAR(26)
CLOB - - com.ibm.db2.app.Clob CLOB ��� ��(��
� �� �� SQL �
����� PL/I � �
�)
BLOB - - com.ibm.db2.app.Blob BLOB ��� ��(��
� �� �� SQL �
����� PL/I � �
�)
DBCLOB - - com.ibm.db2.app.Clob DBCLOB ��� ��
(��� �� ��
SQL ������
PL/I � ��)
� 11 � �� ����� 193
|
|||||
||||
||||
||||
|||||
||
|||||||
|||||
|||||
|||||
|||||
|||||
|||||
|||
||||
|||||
|||||
||||||
|||||
|||||
|||||
|||||
|||||
||||||||
||||||||
||||||||
� 26. ���� �� �� (�)
SQL �� �� FORTRAN
Java �� ��
JAVA
Java �� ��
DB2GENERAL PL/I
ROWID - - - ROWID ��� �(�
�� �� �� SQL
������ PL/I � �
�)
DataLink - - - -
����� � INTEGER*2 - - FIXED BIN(15)
� 27. ���� �� ��
SQL �� �� REXX RPG ILE RPG
SMALLINT - � ����� �� �� �� �
�. ���� ��� 43�� B, 52�
� � �� �� 2� 0���
�.
�� ��. ���� ��� 40��
B�� �� <= 4� � 41-42
�� 00��� �.
��
�� ��. ���� ��� ��
40� I�� �� 5��� �, ��
41-42� 00��� �.
INTEGER �� �� �� ���
(� ��� �� ��)
� ����� �� �� �� �
�. ���� ��� 43�� B, 52�
� � �� �� 4� 0���
�.
�� ��. 40�� B� �� ��
�� ��� 41-42�� <=09��
>=05��, 00��� �.
��
�� ��. ���� ��� ��
40� I�� �� 10� �, ��
41-42� 00��� �.
BIGINT - - �� ��. ���� ��� ��
40� I�� �� 20� �, �
� 41-42� 00��� �.
DECIMAL(p,s) �� �� �� ���
(� ��� �� ��).
� ����� �� �� �� �
�. ���� ��� 43�� P, 52�
� 0-9� �. �� �� ��
��� �� � ��.
�� ��. ���� ��� 40��
P�� 41-42�� 00-31���
�.
NUMERIC(p,s) - � ����� �� �� �� �
�. ���� ��� 43�� ��, 52
�� 0-9� �.
�� ��. ���� ��� 40��
S��� ���� 41-42�� 00-31�
�� �.
REAL �� FLOAT(p) �� ��� E(� ���
��), �� ��
- �� ��. 40�� F�� �� 4
� �.
DOUBLE PRECISION,
FLOAT ��
FLOAT(p)
�� ��� E(� ���
��), �� ��
- �� ��. 40�� F�� �� 8�
�� �.
CHARACTER(n) � �� ������ �
� n�� �� ���
����� �� �� �� �� �
����� �� �� �� ��. �
��� ��� 43�� 52�� ���
� �� �� �� ��� �� �
��� �.
�� ��. ���� ��� 40��
41-42�� A��� �����
�.
194 iSeries� DB2 UDB SQL ����� �� V5R2
|
|||||||
||||||||
|||||
||||||
||
||||
||||||
||||
|
|
|
|||||||
||||
|
|
|
||||||
|||||||
|||
|||||
|||
||||||
|||
|||||
||||||||
|||
� 27. ���� �� �� (�)
SQL �� �� REXX RPG ILE RPG
VARCHAR(n) � �� ������ �
� n�� �� ���
- �� ��. 40�� A��� ����
��� 40� 41-42�� ����
44-80�� ��� VARYING��.
VARCHAR(n) FOR
BIT DATA
� �� ������ �
� n�� �� ���
- �� ��. 40�� A��� ����
��� 40� 41-42�� ����
44-80�� ��� VARYING��.
GRAPHIC(n) G’� ��� ��� �
�� n�� 2��� ��,
�� ’
- �� ��. ���� ��� 40��
G��.
VARGRAPHIC(n) G’� ��� ��� �
�� n�� 2��� ��,
�� ’
- �� ��. ���� ��� 40��
G�� �� 44-80� ���
VARYING��.
DATE � �� ������ �
� 10�� �� ���
����� �� �� �� �� �
����� �� �� �� ��. �
��� ��� 43�� 52�� ���
� �� 10 �� �� �� ���
�� � ��� �.
�� ��. ���� ��� 40��
D��. �� 44-80�
DATFMT(*ISO)��.
TIME � �� ������ �
� 8�� �� ���
����� �� �� �� �� �
����� �� �� �� ��. �
��� ��� 43�� 52�� ���
� �� 8��� �. �� ��
�� ��� �� � ���
�.
�� ��. ���� ��� 40��
T��. �� 44-80�
TIMFMT(*ISO)��.
TIMESTAMP � �� ������ �
� 26�� �� ���
����� �� �� �� �� �
����� �� �� �� ��. �
��� ��� 43�� 52�� ���
� �� 26��� �. �� �
� �� ��� �� � ���
�.
�� ��. ���� ��� 40��
Z��.
CLOB - - CLOB ��� ��(��� �� �
� SQL ������ RPG � �
�)
BLOB - - BLOB ��� ��(��� �� �
� SQL ������ RPG � �
�)
DBCLOB - - DBCLOB ��� ��(��� ��
�� SQL ������ RPG �
��)
ROWID - - ROWID ��� �(��� �� �
� SQL ������ RPG � ��)
DataLink - - -
����� � �� �� �� ���
(� ��� �� ��)
� ����� �� �� �� ��.
���� ��� 43�� B, 52�� �
�� �� 2� 0��� �.
�� ��. ���� ��� 40��
B�� �� <= 4� � 41-42�
� 00��� �.
� 11 � �� ����� 195
|
||||
|||||||
||||||||
||||
|||
||||
||||
||||||||
|||
|||||||||
|||
|||||||||
||
||||||
||||||
||||||
|||||
||||
||||||
||||
����� �� � �� �����
����� �� CALL� ��� ��� ���� ��� �� �����
�� �� ��� �� �� �� ��� ����. ����� �� ���
��� �� � ��� ��� ��� � SQL� �� �� ���
��� 1��� ���.
��� � � � ��� ���� ���� 2��� �� ����� ��
�� �� ���� �. ����� �� �� CALL�� ��� �� ���
�.
v ����� �� ��� ��� � ����. ��� � CALL�� �
�� ��� �� ���� ����� �� ���� �� � ����.
v ����� �� ��� ��� ��� � �� �� � �� �� �
���. � �� ��� �� ����� �� ���� �� ����.
��� �� ��� �������� ��� �� ����� �� �����
�� �� ���� ��. ����� �� �� ������ ��
��� � ��� �� �� �� ��� ��� ��� �� ��� �� �
���� �� �� ��� ���.
�� �� CALL�� ����� � ��� ���. ��� ��� �� �
�� �� ����� �� ��� � �����. �� ����
� �� ����� PROC(2��� � �� ���� � �� ���)� ��
�� �� �����.
������ ��� �� ������ ���.
CREATE PROCEDURE PROC1(INOUT DECIMALOUT DECIMAL(7,2), INOUT DECOUT2 DECIMAL(7,2))EXTERNAL NAME LIB1.PROC1 LANGUAGE RPGLEGENERAL WITH NULLS)
196 iSeries� DB2 UDB SQL ����� �� V5R2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Program CRPG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D INOUT1 S 7P 2D INOUT1IND S 4B 0D INOUT2 S 7P 2D INOUT2IND S 4B 0C EVAL INOUT1 = 1C EVAL INOUT1IND = 0C EVAL INOUT2 = 1C EVAL INOUT2IND = -2C/EXEC SQL CALL PROC1 (:INOUT1 :INOUT1IND , :INOUT2C+ :INOUT2IND)C/END-EXECC EVAL INOUT1 = 1C EVAL INOUT1IND = 0C EVAL INOUT2 = 1C EVAL INOUT2IND = -2C/EXEC SQL CALL PROC1 (:INOUT1 :INOUT1IND , :INOUT2C+ :INOUT2IND)C/END-EXECC INOUT1IND IFLT 0C* :C* HANDLE NULL INDICATORC* :C ELSEC* :C* INOUT1 CONTAINS VALID DATAC* :C ENDIFC* :C* HANDLE ALL OTHER PARAMETERSC* IN A SIMILAR FASHIONC* :C RETURN
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++End of PROGRAM CRPG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
�� 3. CALL�� ����� � �� (1/2)
� 11 � �� ����� 197
�� ��� �� ����� ���� ��
SQL ������ ��, ������ ���� �� ��� SQLCA� ����
���. SIGNAL � RESIGNAL ��� �� ��� ��� � ���
���. ��� ��� SQL ���� SQL �����, � � ��� ���
�����.
�� ������ ��, � ��� �� � �� ��� ���. CALL�
��� SQL ������ �� ���� � �� ��� ��� INOUT ��
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Program PROC1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D INOUTP S 7P 2D INOUTP2 S 7P 2D NULLARRAY S 4B 0 DIM(2)C *ENTRY PLISTC PARM INOUTPC PARM INOUTP2C PARM NULLARRAYC NULLARRAY(1) IFLT 0C* :C* INOUTP DOES NOT CONTAIN MEANINGFUL DATAC*C ELSEC* :C* INOUTP CONTAINS MEANINGFUL DATAC* :C ENDIFC* PROCESS ALL REMAINING VARIABLESC*C* BEFORE RETURNING, SET OUTPUT VALUE FOR FIRSTC* PARAMETER AND SET THE INDICATOR TO A NON-NEGATIVC* VALUE SO THAT THE DATA IS RETURNED TO THE CALLINGC* PROGRAMC*C EVAL INOUTP2 = 20.5C EVAL NULLARRAY(2) = 0C*C* INDICATE THAT THE SECOND PARAMETER IS TO CONTAINC* THE NULL VALUE UPON RETURN. THERE IS NO POINTC* IN SETTING THE VALUE IN INOUTP SINCE IT WON’T BEC* PASSED BACK TO THE CALLER.C EVAL NULLARRAY(1) = -5C RETURN
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++End of PROGRAM PROC1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
�� 3. CALL�� ����� � �� (2/2)
198 iSeries� DB2 UDB SQL ����� �� V5R2
���� ��� �������� ��� � ��� ���. ���� �
����� � ����� �� ��� ��� � ���.
CALL� ��� SQL ������ �� �� � � ��� �� ���
� ������ ��� �� ����(���� ��� ���� QSQCALL)��
��� ���. ������ ��� �� ����� QSQCALL��. � �
�� �� ��� ���� ��� ��� ���. ���� ��� ��
��� �� ��� ��� �� ���� ����. ���� ��� �
QSQCALL� ��� SQLCODE/SQLSTATE-443/38501� ���.
CALL�
� ��� CALL�� �� � �� �� ������ ���� �� �
��. � ��� �� ������ �� �� �� �� �� �
��.
� �� ��� CREATE PROCEDURE ��� �� P1� P2 ������ �
�� ILE C ���� ���. ����� P1� C� ��� 10�� ���
� ���. ����� P2� PL/I� ��� �� 10�� ���� ���.
� �� ������ ��� �� ������ ���.
EXEC SQL CREATE PROCEDURE P1 (INOUT PARM1 CHAR(10),INOUT PARM2 INTEGER,INOUT PARM3 SMALLINT,INOUT PARM4 FLOAT(22),INOUT PARM5 FLOAT(53),INOUT PARM6 DECIMAL(10,5),INOUT PARM7 VARCHAR(10),INOUT PARM8 DATE,INOUT PARM9 TIME,INOUT PARM10 TIMESTAMP)
EXTERNAL NAME TEST12.CALLPROC2LANGUAGE C GENERAL WITH NULLS
EXEC SQL CREATE PROCEDURE P2 (INOUT PARM1 CHAR(10),INOUT PARM2 INTEGER,INOUT PARM3 SMALLINT,INOUT PARM4 FLOAT(22),INOUT PARM5 FLOAT(53),INOUT PARM6 DECIMAL(10,5),INOUT PARM7 VARCHAR(10),INOUT PARM8 DATE,INOUT PARM9 TIME,INOUT PARM10 TIMESTAMP)
EXTERNAL NAME TEST12.CALLPROCLANGUAGE PLI GENERAL WITH NULLS
� 11 � �� ����� 199
� 1: ILE C ������� ��� ILE C � PL/I �����
�: �� � �� ��� x ��� ��� ���� ���� �����.
/**************************************************************//*********** START OF SQL C Application ***********************/
#include <stdio.h>#include <string.h>
#include <decimal.h>main()
{EXEC SQL INCLUDE SQLCA;char PARM1[10];signed long int PARM2;signed short int PARM3;float PARM4;double PARM5;decimal(10,5) PARM6;struct { signed short int parm7l;
char parm7c[10];} PARM7;
char PARM8[10]; /* FOR DATE */char PARM9[8]; /* FOR TIME */char PARM10[26]; /* FOR TIMESTAMP */
�� 4. CREATE PROCEDURE � CALL� � (1/2)
200 iSeries� DB2 UDB SQL ����� �� V5R2
/*******************************************************//* Initialize variables for the call to the procedures *//*******************************************************/strcpy(PARM1,"PARM1");PARM2 = 7000;PARM3 = -1;PARM4 = 1.2;PARM5 = 1.0;PARM6 = 10.555;PARM7.parm7l = 5;strcpy(PARM7.parm7c,"PARM7");strncpy(PARM8,"1994-12-31",10); /* FOR DATE */strncpy(PARM9,"12.00.00",8); /* FOR TIME */strncpy(PARM10,"1994-12-31-12.00.00.000000",26);
/* FOR TIMESTAMP *//***********************************************//* Call the C procedure *//* *//* *//***********************************************/EXEC SQL CALL P1 (:PARM1, :PARM2, :PARM3,
:PARM4, :PARM5, :PARM6,:PARM7, :PARM8, :PARM9,:PARM10 );
if (strncmp(SQLSTATE,"00000",5)){/* Handle error or warning returned on CALL statement */}
/* Process return values from the CALL. */:
/***********************************************//* Call the PLI procedure *//* *//* *//***********************************************//* Reset the host variables prior to making the CALL *//* */:EXEC SQL CALL P2 (:PARM1, :PARM2, :PARM3,
:PARM4, :PARM5, :PARM6,:PARM7, :PARM8, :PARM9,:PARM10 );
if (strncmp(SQLSTATE,"00000",5)){/* Handle error or warning returned on CALL statement */
}/* Process return values from the CALL. */:}
/******** END OF C APPLICATION **********************************//****************************************************************/
�� 4. CREATE PROCEDURE � CALL� � (2/2)
� 11 � �� ����� 201
/******** START OF C PROCEDURE P1 *******************************//* PROGRAM TEST12/CALLPROC2 *//****************************************************************/
#include <stdio.h>#include <string.h>
#include <decimal.h>main(argc,argv)
int argc;char *argv[];{char parm1[11];long int parm2;short int parm3,i,j,*ind,ind1,ind2,ind3,ind4,ind5,ind6,ind7,
ind8,ind9,ind10;float parm4;double parm5;decimal(10,5) parm6;char parm7[11];
char parm8[10];char parm9[8];char parm10[26];
/* *********************************************************//* Receive the parameters into the local variables - *//* Character, date, time, and timestamp are passed as *//* NUL terminated strings - cast the argument vector to *//* the proper data type for each variable. Note that *//* the argument vector could be used directly instead of *//* copying the parameters into local variables - the copy *//* is done here just to illustrate the method. *//* *********************************************************/
/* Copy 10 byte character string into local variable */strcpy(parm1,argv[1]);
/* Copy 4 byte integer into local variable */parm2 = *(int *) argv[2];
/* Copy 2 byte integer into local variable */parm3 = *(short int *) argv[3];
/* Copy floating point number into local variable */parm4 = *(float *) argv[4];
/* Copy double precision number into local variable */parm5 = *(double *) argv[5];
/* Copy decimal number into local variable */parm6 = *(decimal(10,5) *) argv[6];
�� 5. ����� P1� � (1/2)
202 iSeries� DB2 UDB SQL ����� �� V5R2
/**********************************************************//* Copy NUL terminated string into local variable. *//* Note that the parameter in the CREATE PROCEDURE was *//* declared as varying length character. For C, varying *//* length are passed as NUL terminated strings unless *//* FOR BIT DATA is specified in the CREATE PROCEDURE *//**********************************************************/strcpy(parm7,argv[7]);
/**********************************************************//* Copy date into local variable. *//* Note that date and time variables are always passed in *//* ISO format so that the lengths of the strings are *//* known. strcpy would work here just as well. *//**********************************************************/strncpy(parm8,argv[8],10);
/* Copy time into local variable */strncpy(parm9,argv[9],8);
/**********************************************************//* Copy timestamp into local variable. *//* IBM SQL timestamp format is always passed so the length*//* of the string is known. *//**********************************************************/strncpy(parm10,argv[10],26);
/**********************************************************//* The indicator array is passed as an array of short *//* integers. There is one entry for each parameter passed *//* on the CREATE PROCEDURE (10 for this example). *//* Below is one way to set each indicator into separate *//* variables. *//**********************************************************/
ind = (short int *) argv[11];ind1 = *(ind++);ind2 = *(ind++);ind3 = *(ind++);ind4 = *(ind++);ind5 = *(ind++);ind6 = *(ind++);ind7 = *(ind++);ind8 = *(ind++);ind9 = *(ind++);ind10 = *(ind++);:
/* Perform any additional processing here */:
return;}/******** END OF C PROCEDURE P1 *******************************/
�� 5. ����� P1� � (2/2)
� 11 � �� ����� 203
�� �� ILE C ����� ��� REXX ������ ���.
������ ��� �� ������ ���.
EXEC SQL CREATE PROCEDURE REXXPROC(IN PARM1 CHARACTER(20),IN PARM2 INTEGER,IN PARM3 DECIMAL(10,5),IN PARM4 DOUBLE PRECISION,IN PARM5 VARCHAR(10),IN PARM6 GRAPHIC(4),IN PARM7 VARGRAPHIC(10),IN PARM8 DATE,IN PARM9 TIME,IN PARM10 TIMESTAMP)
EXTERNAL NAME ’TEST.CALLSRC(CALLREXX)’LANGUAGE REXX GENERAL WITH NULLS
� 2. C ������� ��� REXX ����� �
�: �� � �� ��� x ��� ��� ���� ���� �����.
/******** START OF PL/I PROCEDURE P2 **************************//******** PROGRAM TEST12/CALLPROC *****************************//**************************************************************/
CALLPROC :PROC( PARM1,PARM2,PARM3,PARM4,PARM5,PARM6,PARM7,PARM8,PARM9,PARM10,PARM11);
DCL SYSPRINT FILE STREAM OUTPUT EXTERNAL;OPEN FILE(SYSPRINT);DCL PARM1 CHAR(10);DCL PARM2 FIXED BIN(31);DCL PARM3 FIXED BIN(15);DCL PARM4 BIN FLOAT(22);DCL PARM5 BIN FLOAT(53);DCL PARM6 FIXED DEC(10,5);DCL PARM7 CHARACTER(10) VARYING;DCL PARM8 CHAR(10); /* FOR DATE */DCL PARM9 CHAR(8); /* FOR TIME */DCL PARM10 CHAR(26); /* FOR TIMESTAMP */DCL PARM11(10) FIXED BIN(15); /* Indicators */
/* PERFORM LOGIC - Variables can be set to other values for *//* return to the calling program. */
:
END CALLPROC;
�� 6. ����� P2� �
204 iSeries� DB2 UDB SQL ����� �� V5R2
/**************************************************************//*********** START OF SQL C Application ***********************/
#include <decimal.h>#include <stdio.h>#include <string.h>#include <wcstr.h>/*-----------------------------------------------------------*/exec sql include sqlca;exec sql include sqlda;/* ***********************************************************//* Declare host variable for the CALL statement *//* ***********************************************************/char parm1[20];signed long int parm2;decimal(10,5) parm3;double parm4;struct { short dlen;
char dat[10];} parm5;
wchar_t parm6[4] = { 0xC1C1, 0xC2C2, 0xC3C3, 0x0000 };struct { short dlen;
wchar_t dat[10];} parm7 = {0x0009, 0xE2E2,0xE3E3,0xE4E4, 0xE5E5, 0xE6E6,
0xE7E7, 0xE8E8, 0xE9E9, 0xC1C1, 0x0000 };
char parm8[10];char parm9[8];char parm10[26];main(){
�� 7. C ���������� ��� REXX ������ � (1/4)
� 11 � �� ����� 205
/* *************************************************************//* Call the procedure - on return from the CALL statement the *//* SQLCODE should be 0. If the SQLCODE is non-zero, *//* the procedure detected an error. *//* *************************************************************/strcpy(parm1,"TestingREXX");parm2 = 12345;parm3 = 5.5;parm4 = 3e3;parm5.dlen = 5;strcpy(parm5.dat,"parm6");strcpy(parm8,"1994-01-01");strcpy(parm9,"13.01.00");strcpy(parm10,"1994-01-01-13.01.00.000000");
EXEC SQL CALL REXXPROC (:parm1, :parm2,:parm3,:parm4,:parm5, :parm6,:parm7,:parm8, :parm9,:parm10);
if (strncpy(SQLSTATE,"00000",5)){/* handle error or warning returned on CALL */:}
:}
/****** END OF SQL C APPLICATION ************************************//**********************************************************************/
�� 7. C ���������� ��� REXX ������ � (2/4)
206 iSeries� DB2 UDB SQL ����� �� V5R2
/**********************************************************************//****** START OF REXX MEMBER TEST/CALLSRC CALLREXX ********************//**********************************************************************/
/* REXX source member TEST/CALLSRC CALLREXX *//* Note the extra parameter being passed for the indicator*//* array. *//* *//* ACCEPT THE FOLLOWING INPUT VARIABLES SET TO THE *//* SPECIFIED VALUES : *//* AR1 CHAR(20) = ’TestingREXX’ *//* AR2 INTEGER = 12345 *//* AR3 DECIMAL(10,5) = 5.5 *//* AR4 DOUBLE PRECISION = 3e3 *//* AR5 VARCHAR(10) = ’parm6’ *//* AR6 GRAPHIC = G’C1C1C2C2C3C3’ *//* AR7 VARGRAPHIC = *//* G’E2E2E3E3E4E4E5E5E6E6E7E7E8E8E9E9EAEA’ *//* AR8 DATE = ’1994-01-01’ *//* AR9 TIME = ’13.01.00’ *//* AR10 TIMESTAMP = *//* ’1994-01-01-13.01.00.000000’ *//* AR11 INDICATOR ARRAY = +0+0+0+0+0+0+0+0+0+0 */
/**********************************************************//* Parse the arguments into individual parameters *//**********************************************************/parse arg ar1 ar2 ar3 ar4 ar5 ar6 ar7 ar8 ar9 ar10 ar11
/**********************************************************//* Verify that the values are as expected *//**********************************************************/if ar1<>"’TestingREXX’" then signal ar1tagif ar2<>12345 then signal ar2tagif ar3<>5.5 then signal ar3tagif ar4<>3e3 then signal ar4tagif ar5<>"’parm6’" then signal ar5tagif ar6 <>"G’AABBCC’" then signal ar6tagif ar7 <>"G’SSTTUUVVWWXXYYZZAA’" then ,signal ar7tagif ar8 <> "’1994-01-01’" then signal ar8tagif ar9 <> "’13.01.00’" then signal ar9tagif ar10 <> "’1994-01-01-13.01.00.000000’" then signal ar10tagif ar11 <> "+0+0+0+0+0+0+0+0+0+0" then signal ar11tag
�� 7. C ���������� ��� REXX ������ � (3/4)
� 11 � �� ����� 207
/************************************************************//* Perform other processing as necessary .. *//************************************************************/
:/************************************************************//* Indicate the call was successful by exiting with a *//* return code of 0 *//************************************************************/exit(0)
ar1tag:say "ar1 did not match" ar1exit(1)ar2tag:say "ar2 did not match" ar2exit(1)::
/************ END OF REXX MEMBER **********************************/
�� 7. C ���������� ��� REXX ������ � (4/4)
208 iSeries� DB2 UDB SQL ����� �� V5R2
� 12 � ���� �� �� ��
� �� DB2� ���� �� �� �� ���.
v DB2 ���� �� ��� ��
v ���� �� �� DB2 �
v �� ����(LOB) ��
v ��� �� ��(UDF)
v ��� ��� ��� ��(UDT)
v UDT, UDF � LOB ��� �� �
�� ����� �� ��� �� ��� �� ��� �� � �� ����
����. ���� ��� ������ ���� ���� ���� �� ��
� ��� ����� ���� ��� ����. ���� �� �� ����
�� ���� ����� ���� ��� ��� �� � ����� ��� �
��� ���� ���. �� ��� ����� �� �� �� �� ��
���� �� ���� ��. � ��� ������ ���� ����
�� �� ���.
DB2 ���� �� ���� ��
DB2� ���� �� ��, ���� ��(OO) ��� �� ��� ���
���(RDB) �� ���. ��� ��� �� ��� ��� �
�. ��� ���� � � ���� �� �� ��� ���� ��� ���
SQL�� �� �� �� ���. �� ��, ��� ����� ��
� , ������� �� �� ��� ������� ��� �� ���
���� �� ���.
���� �� ��� ������(RDB) ��� ���� ��� ��
� �� ��� ���. � ��� ��� ��� ������ ���� ��
��� ��� ���� �. ����� � �� ����� �� ��� �
���(�� ��, ���, ��, ���, � ��). ��� �� ����� �
� ���� �� ��� ���. ��� �� ��� ��(UDT), ���
�� ��(UDF), ��� �� ����(LOB)� DB2 �� ���� ����
�. DB2� ��, �� ������ �� ������ ����� �� ��
���� ��� ��� �� ��� ���.
�� ��� ������ � ���� �� ��� ��� ��� ��� ��. �
��� ������ ���� ��� ����� UDT� ���� ���. UDT
� ����� LOB� ��� ���. UDT� �� UDF� ���� ���
© Copyright IBM Corp. 1998, 2002 209
���. � ��� UDT� UDF� ��� �� ��� �� �� LOB� �
�� �� ���. �� UDT, UDF, LOB� ��� ������� ���
�� �� � �� �� �� ��� ����.
�: DB2 ���� �� ���(UDT, UDF, LOB)� ���� �� ������
��� ���� ��� �� ���. C++ ����� ��� �� �
� � ���� �� ������ ���� DB2 �� ���� ����
�� ���� �� �� � ���� �� ������ ���. UDT,
UDF, LOB� �� ������ ������ ���� �� ��� ��
�� �����. ���, � DB2 ���� ��� ��� ������ � �
� ���� �� ������ ���� ���.
���� �� �� DB2 ��
DB2� ���� ���� ��� ��� �� ���� ���� ��� �� �
���. ��� ���� �� ��� � �� ��� ���(�� ����)
� ��� �� � ��� ��� ���. � ��� �� �� ����
��� �� ��� �� �� �� ����� �� ����.
���� �� �� �� DB2 �� ��� ��� ��� �� ���. UDT
� ���� ��� �� ����. �� ��� ����� UDT� �� � �
�� ��� ��� �� ��� ���. UDF� ���� ��� ���
�. �� �� �� �� ����� UDF� UDT ���� � ���.
��� UDT ���� �� � ���� SQL ���� UDF �� ���.
UDT� � ���� ����� ��� ���. LOB� � �� � � ��
�.
�� ����(LOB) ��
VARCHAR� VARGRAPHIC �� ��� 32K���� ����� ����. �
��� �� �� ��� ��� �� ���� � �� ������� �
��� ��� ���� �. ���, ���, ��, ���� ���, ���� ��
� � �� �� �� ���� �. DB2� ��� �� 2������ ���
�� ��� �� ����� ��� �� 3�� �� �� ���. 3 �� �
� ��� 2� �� ����(BLOB), 1��� �� �� ����(CLOB), 2���
�� �� ����(DBCLOB)��.
�� ����(LOB)� ��� � � ������� � LOB� �, ��, �
�� �� ���. � DB2 �� �� � ��� LOB ��� �
���. � ��� LOB � �� �� � �� 3.5������ ��� �
�� �� �� 256������ LOB ��� ��� ���. ��� ���
�� �� LOB �� ��� �� ���� � ���.
210 iSeries� DB2 UDB SQL ����� �� V5R2
��� �� �� �� ��� �� �� LOB� ��� �� ���.
���, ��� �� LOB ��� � �� � �� �� �����
��� ��� ���. � � ��� � ��� ���. �� ��
�� ������ ��� �� ���� ��� ��, LOB � �
��� ���. � �� �� �� ���� ��� ������ ��
�� ��� ���.
��� � ��� � ��� ��� �� ��� ���.
v ��� ���� �� ��(BLOB, CLOB, DBCLOB) ���
v 212 ��� ��� ���� �� ��� ���
v 213 ��� ��: CLOB �� �� �� �� ��� ���
v 216 ��� ������ � � LOB �� ����
v 216 ��� �LOB � �� ��
v 218 ��� ��: ��� �� ���
v 220 ��� ��: CLOB � �� ���
v 220 ��� �LOB �� � �� ���
v 221 ��� �LOB �� �� �� ��
�� ��� �� ��(BLOB, CLOB, DBCLOB) ��
�� ���� �� ��� ��� 0���� ���� 2������ �� � ��
�.
3 ��� �� ���� �� ��� ��� �� ��� ���.
v � �� ����(CLOB) -- ��� �� ��� �� 1��� ��� ��� �
� ���. � �� ��� ��� � �� VARCHAR �� ��� ��(���
32K���) ���� �� �� ��� �� ��� ��� �� ���.
� �� ���� �� �� �� ��� �� �� �� ����.
v 2��� � �� ����(DBCLOB) -- ��� �� ��� �� 2��� ��
� ��� �� ���. � �� ��� 2��� �� �� ���� ��� ��
��� ��� �� ���. �� � 2��� �� ���� �� �� �
� ��� �� �� �� ����.
v � 2� ����(BLOB) -- ��� �� ��� �� ���� ��� 2� ��
�. � �� ��� 2� ��� ��� ���� �� ���. ���, ��
� �� ��� ��(UDT) �� ���� ��� �� ����. BLOB� �
� ���� ��� UDT� ���, ��, ���, �� � �� �� ����
�� ��� ��� �� �����. UDT �� ��� ��� 240 ��
� ���� ��� ��� ��(UDT)� �����.
� 12 � ���� �� �� �� 211
�� ��� �� ��� ��
�����, LOB �� ���� �, �� ��� �� �� �� �
�����, �� ���� �� ��� �� ���. ��, LOB �� �
��� ������ ��� ��� LOB (�� LOB ���) ��� �� �
���� ��� ��� � ��� 4��� ��. LOB �� ���� ��
, ����� LOB � �� ��� � ��� ��� LOB ��
���. LOB �� ���� ��� �, LOB ��� �������� ��
� (�� �� �� ��") ��� ���.
LOB �� ���� ������� � �� �� ���� ��� ��, LOB
�� LOB ���� ����. ��� LOB �� ���� ��� �, �� �
�� �� ���� �� � �� � �� � �� � �� ��
�. �� ���� ��� � � ��� ����, �� ���� ����� �
�� �( � �� ��� �) � ���. FREE LOCATOR�� �� ���
� ��� � ���. ����� �� �� �� �� �� �� ��� �
� LOB �� ���� ���.
LOB �� ���� DB2� UDF ��� ��� ���. UDF ��, LOB
�� ���� �� LOB �� �� LOB �� �� � ��
�� ��� ����.
LOB ��� � 3 �� ��� ���.
v �� LOB ��� �� ���. �� LOB � ��� �� ���
�.
v LOB LOB �� ���� ���. LOB � �� �� ���, ��
� �� ���� ���.
v �� LOB � �� �� ���. LOB � � � ���(IFS)
�� ����.
���� �� LOB ���� ������ �� ��� ����� ��� �
��. LOB � �� �� � ��� ��� SQL� �� �� ��� �
�� ��, �� ��� ���.
����� �� ���� �� LOB ��� � ��, LOB� ���
� ���. � �� ��� �� ��� ���. �� �� �� �
�� ��� �� ��� ���. LOB �� ���� �� ��
�� 213 ��� ��: CLOB �� �� �� �� ��� ���� ��
� ��� �� ���� �� ��� �� ��� ��� ���.
212 iSeries� DB2 UDB SQL ����� �� V5R2
�: CLOB ��� �� �� �� ��� ��
� ��, ������ ����� LOB �� �� ���� �� � LOB
� ��� ��� �� �� ���� ���. � �� �� ����
� � ��� LOB ��(��� ���� �� ��) �� � � �����
���. �� ��, ��� �� ����� �� � ��� ����
�.
�: �� � �� ��� x ��� ��� ���� ���� �����.
�� LOBLOC ���� � ��
1. ��� �� ����. BEGIN DECLARE SECTION� END DECLARE
SECTION�� ��� � �� � �. SQL�� ��� � ��� �
� � (:)� ��� ���. CLOB LOCATOR ��� �� ��
�.
2. LOB �� �� ��� ��� �� �����. ������� LOB ��� �
�� �� ��� ��� �� ���� �� CURSOR� FETCH ��� ��
��.
3. LOB LOCATORS� �����. � �� ��� LOB LOCATORS� ��
�� �� ��� � �� ���� ���.
CHECKERR ���/��� ���� ��� �� � ������. � �� � �
���� ��� ��� ����� �� �� ���.
C check_error� CHECKERR� �� ���� util.c � ��
�.
C ��: LOBLOC.SQC#include <stdio.h>
#include <stdlib.h>#include <string.h>#include "util.h"
EXEC SQL INCLUDE SQLCA;
#define CHECKERR(CE_STR) if (check_error (CE_STR, &sqlca) != 0) return 1;
int main(int argc, char *argv[]) {
#ifdef DB2MACchar * bufptr;#endif
EXEC SQL BEGIN DECLARE SECTION; �1�char number[7];long deptInfoBeginLoc;long deptInfoEndLoc;SQL TYPE IS CLOB_LOCATOR resume;SQL TYPE IS CLOB_LOCATOR deptBuffer;short lobind;char buffer[1000]="";char userid[9];char passwd[19];EXEC SQL END DECLARE SECTION;
printf( "Sample C program: LOBLOC\n" );
if (argc == 1) {
� 12 � ���� �� �� �� 213
EXEC SQL CONNECT TO sample;CHECKERR ("CONNECT TO SAMPLE");}else if (argc == 3) {
strcpy (userid, argv[1]);strcpy (passwd, argv[2]);EXEC SQL CONNECT TO sample USER :userid USING :passwd;CHECKERR ("CONNECT TO SAMPLE");
}else {
printf ("\nUSAGE: lobloc [userid passwd]\n\n");return 1;} /* endif */
/* Employee A10030 is not included in the following select, becausethe lobeval program manipulates the record for A10030 so that it isnot compatible with lobloc */
EXEC SQL DECLARE c1 CURSOR FORSELECT empno, resume FROM emp_resume WHERE resume_format=’ascii’AND empno <> ’A00130’;
EXEC SQL OPEN c1;CHECKERR ("OPEN CURSOR");
do {EXEC SQL FETCH c1 INTO :number, :resume :lobind; �2�if (SQLCODE != 0) break;if (lobind < 0) {
printf ("NULL LOB indicated\n");} else {
/* EVALUATE the LOB LOCATOR *//* Locate the beginning of "Department Information" section */
EXEC SQL VALUES (POSSTR(:resume, ’Department Information’))INTO :deptInfoBeginLoc;
CHECKERR ("VALUES1");
/* Locate the beginning of "Education" section (end of "Dept.Info" */EXEC SQL VALUES (POSSTR(:resume, ’Education’))
INTO :deptInfoEndLoc;CHECKERR ("VALUES2");
/* Obtain ONLY the "Department Information" section by using SUBSTR */EXEC SQL VALUES(SUBSTR(:resume, :deptInfoBeginLoc,
:deptInfoEndLoc - :deptInfoBeginLoc)) INTO :deptBuffer;CHECKERR ("VALUES3");
/* Append the "Department Information" section to the :buffer var. */EXEC SQL VALUES(:buffer || :deptBuffer) INTO :buffer;CHECKERR ("VALUES4");
} /* endif */} while ( 1 );
#ifdef DB2MAC/* Need to convert the newline character for the Mac */bufptr = &(buffer[0]);while ( *bufptr != ’\0’ ) {
if ( *bufptr == 0x0A ) *bufptr = 0x0D;bufptr++;}#endif
printf ("%s\n",buffer);
EXEC SQL FREE LOCATOR :resume, :deptBuffer; �3�CHECKERR ("FREE LOCATOR");
EXEC SQL CLOSE c1;CHECKERR ("CLOSE CURSOR");
EXEC SQL CONNECT RESET;CHECKERR ("CONNECT RESET");return 0;
}/* end of program : LOBLOC.SQC */
COBOL ��: LOBLOC.SQB
Identification Division.Program-ID. "lobloc".
Data Division.
214 iSeries� DB2 UDB SQL ����� �� V5R2
Working-Storage Section.copy "sqlenv.cbl".copy "sql.cbl".copy "sqlca.cbl".
EXEC SQL BEGIN DECLARE SECTION END-EXEC. �1�01 userid pic x(8).01 passwd.49 passwd-length pic s9(4) comp-5 value 0.49 passwd-name pic x(18).
01 empnum pic x(6).01 di-begin-loc pic s9(9) comp-5.01 di-end-loc pic s9(9) comp-5.01 resume USAGE IS SQL TYPE IS CLOB-LOCATOR.01 di-buffer USAGE IS SQL TYPE IS CLOB-LOCATOR.01 lobind pic s9(4) comp-5.01 buffer USAGE IS SQL TYPE IS CLOB(1K).
EXEC SQL END DECLARE SECTION END-EXEC.
77 errloc pic x(80).
Procedure Division.Main Section.
display "Sample COBOL program: LOBLOC".
* Get database connection information.display "Enter your user id (default none): "
with no advancing.accept userid.
if userid = spacesEXEC SQL CONNECT TO sample END-EXEC
elsedisplay "Enter your password : " with no advancingaccept passwd-name.
* Passwords in a CONNECT statement must be entered in a VARCHAR* format with the length of the input string.
inspect passwd-name tallying passwd-length for charactersbefore initial " ".
EXEC SQL CONNECT TO sample USER :userid USING :passwdEND-EXEC.
move "CONNECT TO" to errloc.call "checkerr" using SQLCA errloc.
* Employee A10030 is not included in the following select, because* the lobeval program manipulates the record for A10030 so that it is* not compatible with lobloc
EXEC SQL DECLARE c1 CURSOR FORSELECT empno, resume FROM emp_resumeWHERE resume_format = ’ascii’AND empno <> ’A00130’ END-EXEC.
EXEC SQL OPEN c1 END-EXEC.move "OPEN CURSOR" to errloc.call "checkerr" using SQLCA errloc.
Move 0 to buffer-length.
perform Fetch-Loop thru End-Fetch-Loopuntil SQLCODE not equal 0.
* display contents of the buffer.display buffer-data(1:buffer-length).
EXEC SQL FREE LOCATOR :resume, :di-buffer END-EXEC. �3�move "FREE LOCATOR" to errloc.call "checkerr" using SQLCA errloc.
EXEC SQL CLOSE c1 END-EXEC.move "CLOSE CURSOR" to errloc.call "checkerr" using SQLCA errloc.
EXEC SQL CONNECT RESET END-EXEC.move "CONNECT RESET" to errloc.call "checkerr" using SQLCA errloc.
End-Main.go to End-Prog.
Fetch-Loop Section.EXEC SQL FETCH c1 INTO :empnum, :resume :lobind �2�
END-EXEC.
� 12 � ���� �� �� �� 215
if SQLCODE not equal 0go to End-Fetch-Loop.
* check to see if the host variable indicator returns NULL.if lobind less than 0 go to NULL-lob-indicated.
* Value exists. Evaluate the LOB locator.* Locate the beginning of "Department Information" section.
EXEC SQL VALUES (POSSTR(:resume, ’Department Information’))INTO :di-begin-loc END-EXEC.
move "VALUES1" to errloc.call "checkerr" using SQLCA errloc.
* Locate the beginning of "Education" section (end of Dept.Info)EXEC SQL VALUES (POSSTR(:resume, ’Education’))
INTO :di-end-loc END-EXEC.move "VALUES2" to errloc.call "checkerr" using SQLCA errloc.
subtract di-begin-loc from di-end-loc.
* Obtain ONLY the "Department Information" section by using SUBSTREXEC SQL VALUES (SUBSTR(:resume, :di-begin-loc,
:di-end-loc))INTO :di-buffer END-EXEC.
move "VALUES3" to errloc.call "checkerr" using SQLCA errloc.
* Append the "Department Information" section to the :buffer varEXEC SQL VALUES (:buffer || :di-buffer) INTO :buffer
END-EXEC.move "VALUES4" to errloc.call "checkerr" using SQLCA errloc.
go to End-Fetch-Loop.
NULL-lob-indicated.display "NULL LOB indicated".
End-Fetch-Loop. exit.
End-Prog.stop run.
����� �� � LOB �� ���
������ ����� � ��� � �� � ��� �� ��� �,
� �(null)� ���� � � ����� � ����. ���, LOB �
� ���� �� ����� �� ��� �� ���. �� ��� ��� �
��� � ����, � ����� �� LOB �� ��� �� ���
LOB � �� ����. ����� � �� � ��� �����
�� ��� ����. �, ��� ��� �� ���� �� � ��
� ���.
LOB � �� ��
� �� �� ��� �� ����, (��� ��� ��) IFS �� ��
� �� �� � ����� �� ���. LOB �� ���� LOB (��
� �� ��) ���� ��� � �� �� � ����. ������
��, ��, ��� � �� �� �� � LOB ��(�� �)�
���.
�� � ����� �� �� ���� � ����. �� � LOB� ��� �
������ ���� � ������ � ��� ��� ��. � �
� � ��� LOB �� �� ���. ����� � �� �� ��
216 iSeries� DB2 UDB SQL ����� �� V5R2
LOB ��� IFS �� � ������ ���� ���. LOB ��� �
�� ��, ������� ��� �� �� � �� ��� ���� �
� �� ��� ���.
�: � �� � �� ��� �� ����� ���� ����(� ���
��� ��� ��) ��� ��� �. ��� ������ �� �
���� �� ���.
� �� �� BLOB, CLOB, �� DBCLOB� �� �� ���. �� �
�(��) �� �� ��(��)�� ����. � �� �� �� �� �� �
� ��� ���(��� ��) �� ���. �� �� ������ �
��� �� ����. � �� �� �� � � � ���� �� ���
� ���. ���� �� �� �� ������ ��� �� �� �� �
�� ��� �� �� ����.
� �� �� ��� � ��� �� �� �� � ��� ���. � �
� � ��� file_options ��� �� � �� ��� ���� �.
��� �� �� �� ��� �� �� � �� ���.
�� � �� �� ��� �� (C �� ���)� ��� ��� ���.
v SQL_FILE_READ(�� �) -- � ��� � 2��. � ��� ��, ��,
� �� ���. DB2� � � �� �� �� �(���)� �
�. �� �� DB2� � �� � ��� data_length ��� �� �
� ��(COBOL �� � SQL-FILE-READ��).
�� � �� �� ��� �� � ��� ��� ���.
v SQL_FILE_CREATE(��� �) -- � ��� � 8��. � ��� ��
� � ��. �� �� �� �� ���� ���(COBOL
�� � SQL-FILE-CREATE��).
v SQL_FILE_OVERWRITE(� � ��) -- � ��� � 16��. �� �
� �� ��� � ��� ��� � ��. �� �� ��, �
�� ��� �� ��� � ��(COBOL �� � SQL-FILE-
OVERWRITE��).
v SQL_FILE_APPEND(� ����) -- � ��� � 32��. � ��� �
� �� �� � ��� ����. ��� �� ��� ��� �
��(COBOL �� � SQL-FILE-APPEND��).
�: LOB � �� �� OPEN�� ���� ��� �� � � LOB � �
� �� ��� ����.
� � ��� �� ��� ��� � � ��� �����.
� 12 � ���� �� �� �� 217
�: ��� �� ��
� ���� ��� CLOB ��� �� �� �� ��� �� ���.
�� LOBFILE ���� � ��
1. ��� �� ����. BEGIN DECLARE SECTION� END DECLARE
SECTION�� ��� � �� � �. SQL�� ��� � ��� �
� � (:)� ��� ���. CLOB FILE REFERENCE ��� ��
���.
2. CLOB FILE REFERENCE ��� � ����. FILE REFERENCE�
�� ����. �� ��� ��� �� ��� ���� ���� �� �
��� ���. ���� �� ���(/) ��� ��� �� �� ���
�� ���.
3. CLOB FILE REFERENCE ��� �� ���. resume ��� ���
��� � �� ��� ���� ����.
CHECKERR ���/��� ���� ��� �� �� ������. � �� �� �
���� ��� ��� ����� �� �� ���.
C check_error� CHECKERR� �� ���� util.c � ��
�.
COBOL CHECKERR� ��� checkerr.cbl� �� ������.
�: �� � �� ��� x ��� ��� ���� ���� �����.
C ��: LOBFILE.SQC#include <stdio.h>
#include <stdlib.h>#include <string.h>#include <sql.h>#include "util.h"
EXEC SQL INCLUDE SQLCA;
#define CHECKERR(CE_STR) if (check_error (CE_STR, &sqlca) != 0) return 1;
int main(int argc, char *argv[]) {
EXEC SQL BEGIN DECLARE SECTION; �1�SQL TYPE IS CLOB_FILE resume;short lobind;char userid[9];char passwd[19];EXEC SQL END DECLARE SECTION;
printf( "Sample C program: LOBFILE\n" );
if (argc == 1) {EXEC SQL CONNECT TO sample;
CHECKERR ("CONNECT TO SAMPLE");}else if (argc == 3) {
strcpy (userid, argv[1]);strcpy (passwd, argv[2]);EXEC SQL CONNECT TO sample USER :userid USING :passwd;CHECKERR ("CONNECT TO SAMPLE");
}else {
printf ("\nUSAGE: lobfile [userid passwd]\n\n");
218 iSeries� DB2 UDB SQL ����� �� V5R2
return 1;} /* endif */
strcpy (resume.name, "RESUME.TXT"); �2�resume.name_length = strlen("RESUME.TXT");resume.file_options = SQL_FILE_OVERWRITE;
EXEC SQL SELECT resume INTO :resume :lobind FROM emp_resume �3�WHERE resume_format=’ascii’ AND empno=’000130’;
if (lobind < 0) {printf ("NULL LOB indicated \n");
} else {printf ("Resume for EMPNO 000130 is in file : RESUME.TXT\n");} /* endif */
EXEC SQL CONNECT RESET;CHECKERR ("CONNECT RESET");return 0;
}/* end of program : LOBFILE.SQC */
COBOL ��: LOBFILE.SQB
Identification Division.Program-ID. "lobfile".
Data Division.Working-Storage Section.
copy "sqlenv.cbl".copy "sql.cbl".copy "sqlca.cbl".
EXEC SQL BEGIN DECLARE SECTION END-EXEC. �1�01 userid pic x(8).01 passwd.49 passwd-length pic s9(4) comp-5 value 0.49 passwd-name pic x(18).
01 resume USAGE IS SQL TYPE IS CLOB-FILE.01 lobind pic s9(4) comp-5.
EXEC SQL END DECLARE SECTION END-EXEC.
77 errloc pic x(80).
Procedure Division.Main Section.
display "Sample COBOL program: LOBFILE".
* Get database connection information.display "Enter your user id (default none): "
with no advancing.accept userid.
if userid = spacesEXEC SQL CONNECT TO sample END-EXEC
elsedisplay "Enter your password : " with no advancingaccept passwd-name.
* Passwords in a CONNECT statement must be entered in a VARCHAR* format with the length of the input string.
inspect passwd-name tallying passwd-length for charactersbefore initial " ".
EXEC SQL CONNECT TO sample USER :userid USING :passwdEND-EXEC.
move "CONNECT TO" to errloc.call "checkerr" using SQLCA errloc.
move "RESUME.TXT" to resume-NAME. �2�move 10 to resume-NAME-LENGTH.move SQL-FILE-OVERWRITE to resume-FILE-OPTIONS.
EXEC SQL SELECT resume INTO :resume :lobind �3�FROM emp_resumeWHERE resume_format = ’ascii’AND empno = ’000130’ END-EXEC.
if lobind less than 0 go to NULL-LOB-indicated.
display "Resume for EMPNO 000130 is in file : RESUME.TXT".go to End-Main.
� 12 � ���� �� �� �� 219
NULL-LOB-indicated.display "NULL LOB indicated".
End-Main.EXEC SQL CONNECT RESET END-EXEC.move "CONNECT RESET" to errloc.call "checkerr" using SQLCA errloc.
End-Prog.stop run.
�: CLOB �� �� ��
�� C ���� ����� �� ���
v userid� ��� � � � �� ����� ����.
v dirname� �userid�� ������� ����.
v filnam.1� ���� � ���� �� � �� �� ���.
v clobtab� CLOB �� ��� � ����.
�� �� :hv_text_file �� ���� �� �� ��� CLOB � ��
� �� ���.
strcpy(hv_text_file.name, "/home/userid/dirname/filnam.1");hv_text_file.name_length = strlen("/home/userid/dirname/filnam.1");hv_text_file.file_options = SQL_FILE_READ; /* this is a ’regular’ file */
EXEC SQL INSERT INTO CLOBTABVALUES(:hv_text_file);
LOB �� �� �� ��
�� �(PF) �� ��(DSPPFM)� �� CL ��� �� LOB � ��
�� �� �� ���� ��, �� � ��� LOB ��� ���� ���. �
�� ������� LOB � �� ��� ���. � ��� � ��
��� ���.
v 13� 28���� 16� 0
v *POINTER� � ��� ���� 16���
� � �� � � ��� � � � �� � 16��� �� ��� ��
��� ��� ����.
�� ��, ColumnOne Char(10), ColumnTwo CLOB(40K), ColumnThree
BLOB(10M)� � � �� �� ��� ���. � � DSPPFM ���
�, ��� � �� ��� �� ����� �.
v ColumnOne� ��: 10���� �� ��� ����.
v ColumnTwo� ��: 22���� 16� 0�� ���� 16���� ‘*POINTER’
� ����.
v ColumnThree� ��: 16���� 16� 0�� ���� 16���� ‘*POINTER’
� ����.
�� ��� LOB � ��� �� � �� ��� ���.
220 iSeries� DB2 UDB SQL ����� �� V5R2
v �� �(PF) �� ��(DSPPFM)
v TOFILE ��� �� *PRINT � ���� �� � ��(CPYF)
v �� ��(DSPJRN)
v �� �� �(RTVJRNE)
v ENTFMT ��� �� *TYPE1, *TYPE2, *TYPE3, *TYPE4 � ��� �
� �� �� �(RCVJRNE)
LOB �� �� � ��
� �� ��� LOB ��� ���� �� ��� �� � ��� �
�.
v ENTFMT ��� �� *TYPEPTR � ��� ��, �� �� �(RCVJRNE)
CL �
v �� �� �(QjoRetrieveJournalEntries) API
� ��� LOB � �� ��� ���.
v 0 �� 15���� 16� 0
v ‘00’x� ��� 1���� ��� ��
v ��� ��� �� ��� ��� LOB ��� �� �� 4���
v 16� 0� 8���
v �� �� ��� LOB ��� ���� ���� �� 16���
� �� � � � LOB ��� ���� ���� 16��� �� ��� �� �
��. � ��� ��� � LOB � ��� �� � �� ����. �
� � � �� ��� ��� � ���� LOB �� �� � �� ��
�� �����.
LOB �� �� �� �� ��� ��� ��� ��� �����.
��� �� ��(UDF)��� �� ��� ���� ��� SQL �� �� �� �����. DB2
� �� ���� �� ��� ��� �� ���� ���� �� ���� �
����� � ���. ��� ��� �� ��� SQL ��� ��� ��
�.
v ��� ��.
��� ������ ��� ��� DB2� �� ���. ��� ���
��, ��� ����, �� ��� ���, � �� �� UDF� ��
� ���.
v ���.
� 12 � ���� �� �� �� 221
DB2 �� ��� ���� ������ ������ � � ��� �
���.
v ���.
��� ���� �� ����� �� �� �� � ���� �� �� �
���� ��� ���. ��� ���� �� �� �� ��� �
��. � �� UDF� � ��� ��� ���, �� �� �����
SQL� � �� �� ���� ��� ��� �� �� ���.
v ���� ��� �.
240 ��� ���� ��� ��� ��(UDT)�� �� ��, UDT� DB2�
��� ����� �� ���� �� ��� ���. � ���
�� ��� UDF� UDT �� ���� ��.
�� ��, SQL UDF� �� ����� DataLink �� ���. �����
�� � �� ���� �� � ��� � �� �� �� ����, SQL
UDF� ���� � ��� ������� �� ����� � �� �
� �� ���(���� ��� �� ��).
��� ��� ��� � �����.
v �UDF� ��� ���
v 225 ��� �UDF ���
v 227 ��� �UDF ���
v 228 ��� �UDF �
v 229 ��� ��� � �� �����
v 229 ��� ��: UDF �
v 233 ��� �UDF ���
UDF� ��� ��
DB2 ������ �� ��, �� ��� � ��� � �� �� �
���.
v UDF�
v ��� ������� ������ ����
��� � ��� ������� ������ ���� ��� �� �� ��
��, �� � ��� ���� �.
v ���.
��� �� ���� � ��� �� ����� �� ���� �� �
��� UDF� �� ��� � ���. �� ��, �������
�� ���� ��� �� ���� �� �� SQL�� � �� ���
���. ������� �� �� �� �� �� �� ���� ��
222 iSeries� DB2 UDB SQL ����� �� V5R2
�. �� ��, DECIMAL� DOUBLE�� �� ��, �������
��� ��� �, ��� ���� �� �� ��� ���.
��� �� �� ���� ��� �� �� � ���(���� ��
DB2 ��� ��� ���). ��� �, � �� � �� ������ �
��� ����� �, ��� � �� ����� ������
�. ���, ��� ��� ������ ��� �� ����� � � �
���(CLP)� ��� �� �� ��� ���� �� ��. ���, ��
�� ��� ��� �� ��� ��� ���� �� �� �� (��
�) ���� ��. �� ODBC, JDBC � �� �� ����� �
� �� STRSQL, STRQM, RUNSQLSTM� �� �� ����. CLP �
��� ��� ������ �� UDF� �� � �� ��� ���. �
� �� �� ���� �� SQL ��� � �(Visualizer� ��) �
���.
v ��.
��� ��, ������� �� ������ ��� � UDF� ���
��� �� �� �� ��. ��� ��� �� ��� ��� ��� ��
�� �� �� � ���. ��� � �� ��� ��� � ��� �
���.
� ��� ���� ��� ����� ���. SELECTION_CRITERIA() �
��� ��� �� �� �� ���� ���. ��� �������
��� �� SELECT� ��� ���.
SELECT A, B, C FROM T
� � �� � �� �� SELECTION_CRITERIA� �� ��� ��
�� � � ��� ��. ��, � T� �� �� �� �������
� ����� �. ���, SELECTION_CRITERIA()� UDF� ����, ��
� ������� �� �� ��� ���.
SELECT C FROM T WHERE SELECTION_CRITERIA(A,B)=1
� ��, � �� �� �� ������� ������� ����� �� �
���.
UDF� �� ���� �� � ��� �� ����(LOB)� ��� ��
�. LOB �� � �� � �� ��� ��� �� ���. � �
� ������� �� �� ��� � �� �������� ���
���. �� �� LOB �� ������ �� �� �� �
�� �����. � �� UDF� ���� � �� �� ���
��� �� �� �� � ���(LOB �� ���� �� LOB�
�� ��� ���. ��� ���� �� �� 216 ��� �����
� � � LOB �� ����� �����).
� 12 � ���� �� �� �� 223
v ���� ��.
UDF� �� ��� ����� ��� ��� �� ��� ��(UDT)�
� ��� ���. UDT �� ��� ��� 240 ��� ���� ��
� ��� ��(UDT)� �����. UDT �� �� ���� � � �
��� �� ��� ��� �� ��� SQL ���� CREATE DISTINCT TYPE
� �����. ��� �� �� �, ��� ��� � �� �� ��� �
�� ��� ���� ����. �� =, >, < � �� �� ��� �� �
� �� ����. ���� � ��� ���� �. ��� ��� �
� ���� �� ��� �� ������� ��� ��� � ���
�� � ���. ���� UDF� �� ����� ��� ���.
�� ��, 1MB BLOB ���� ��� BOAT ��� ��� ��� ��
�. �� CREATE�� ��� ���.
CREATE DISTINCT TYPE BOAT AS BLOB(1M)
BLOB� � � �� ��� � �� �� ���. ��� ��� ���
���. ���, BLOB �� �� ���� ��� ��� ���� ���� �
� ���� ��� �� ���� ��� !�. ��� �� ��� ����
� ��� � ���� ��� �� BOAT_COMPARE �� ��� �
��. �� �, �� �, ���� �, �� BOAT ����� ����
� � �� ���. ��� �� BOAT_COMPARE �� �� �
��.
CREATE SQL FUNCTION BOAT_COMPARE (BOAT, BOAT) RETURNS INTEGER ...
��� ��� � �
– 1�� � �� BOAT� ��.
– 2�� � ��� ��.
– 0�� ���.
��� ��� �� � �� SQL ��� ��� ���. �� ��
���� ���.
CREATE TABLE BOATS_INVENTORY (BOAT_ID CHAR(5),BOAT_TYPE VARCHAR(25),DESIGNER VARCHAR(40),OWNER VARCHAR(40),DESIGN_DATE DATE,SPEC BOAT,... )
CREATE TABLE MY_BOATS (BOAT_ID CHAR(5),BOAT_TYPE VARCHAR(25),DESIGNER VARCHAR(40),DESIGN_DATE DATE,
224 iSeries� DB2 UDB SQL ����� �� V5R2
ACQUIRE_DATE DATE,ACQUIRE_PRICE CANADIAN_DOLLAR,CURR_APPRAISL CANADIAN_DOLLAR,SPEC BOAT,... )
�� SQL SELECT� ��� ���.
SELECT INV.BOAT_ID, INV.BOAT_TYPE, INV.DESIGNER,INV.OWNER, INV.DESIGN_DATEFROM BOATS_INVENTORY INV, MY_BOATS MYWHERE MY.BOAT_ID = ’19GCC’AND BOAT_COMPARE(INV.SPEC, MY.SPEC) = 1AND INV.DESIGNER = MY.DESIGNER
� ��� �� MY_BOATS� �� ���� �, �� �����
BOATS_INVENTORY� �� ��� ��. ������ ��� ���
��� ��� � �� �� ������ �� ���. ��, ��� �
� �� BOAT� �� ��� � ��. BOAT� 1MB� BLOB �
� �� ���� �� �� ����� ��� �� ��� ���.
UDF �
��� UDF� ��� � ��� � ��� �� ���.
���
v ��� �� ��
*SQL �� ��� ��� �� ��� <schema-name>.<function-name>�
�.
*SYS ��� ��� �� ��� <schema-name>/<function-name>��. �
��� DML�� *SYS �� �� ��� ���.
�� ��� ��� ���� � �� �� ��� ���. �� ��
��� ���.
QGPL.SNOWBLOWER_SIZE SMITH.FOO QSYS2.SUBSTR QSYS2.FLOOR
��� ���� �� DB2� ����� ��� <schema-name>. ��
� ���. �� �� ��� ���.
SNOWBLOWER_SIZE FOO SUBSTR FLOOR
v ��
�� ��� schema-name� ���� � � ��� ���� �� ��� DB2
�� � ����. �� ��� DDL�� �� ��� SQL ����
�� CREATE FUNCTION�� �� �����. ��� ����� ��� �
� �����. UDT �� �� UDF �� ���� �� ��� ���
�� ��� � ���. �� ��� ��� � ��� ���� ���
�� ��, ��� ��� ��� � �� ��� �� ����. ���
� 12 � ���� �� �� �� 225
�� SQL �� ����� ��� �� SQLPATH �� �� ����.
��� �� SQL �� SET PATH �� �� ����. �� ��� �
��� � �� SQL�� SQL ���� ���� ��� ��� ��� ��
�.
"QSYS","QSYS2","<ID>"
�� �� � �� SQL �� �����, �� <ID>� �� ��� ��
ID� ����.
�� ��� ���� � �� SQL�� ��� ���� ���� ��� ���
*LIBL��.
v �� ���.
���� ��� ���. ��� �� ���� � ��� �� �
� �� ���. ��� � ��� �� �� �� � ���. ��
��� �� �� ���� ��� �� ��� ��� ��� ��� ��� �
����. �� ��� � ���� 230 ��� ��: BLOB ��� ���
�����. �� � �� � �� ��� ��� SQL ���� �� �
�� �����.
v �� ��
��� ��� ���� ���� �� ����, �� �� �� �� �� � �
� � ��� �� �� ��� �� ��� ��� �� �� �� ���
���. �� �� ��� �� ��� �� �� ���� �� ����.
�� � ����� �� ��� ��� ���.���� �� �� � ��
� �� ��� �� �� � ��� ��� � � ��� �� �� �
��� �� ���.
��, SET PATH� � �� �� ����� ��� SQL ���� �� �
��. SQLPATH ���� ��� � � � ����.
v �� ��
� ��� ��� ���.
– ��. ������� ��� ����. SUBSTR()� � ���.
– ��� ��. DISTINCT TYPE� �� � ������ �� �� ���
�� ��� ����. � ��� DISTINCT TYPE� �� �� ��� ��
� � ���.
– ��� ��. ��� �� ��� ������ � ����.
�� ��, � ��� ��� �� � �� � �� ��� �� �
��.
��� �� ��� ��� � �� ��. �� ��, �� ��
SUBSTR()� ��� ��� � �� �� �� ��� ���. ��� �
226 iSeries� DB2 UDB SQL ����� �� V5R2
� ��� �� ��� ���. ��� UDF� ��(C� �� ����� ��,
�� SQL--SQL ��� ���), �� ��(� ��� �� ���� ��) UDF
��.
� �� �� �(��� � �) � � ����� � �
� ��. � �� DB2� �� ��� ���. � �� ���
� ���. � �� �� �� �� AVG()��. �� UDF� � ��
��� ���. ���, �� UDF� �� � � � �� ��� � ��
� �� ����. ��� ��� �� �� ���. �� ��, ��� �
� SHOESIZE� �� �� INTEGER� �� ���� ���� UDF,
AVG(SHOESIZE)� � �� � �, AVG(INTEGER) ��� � � �� �
�� ���.
� ��� �� ��� SQL� �� ��.��� SELECT� FROM�
� ����� �. � ��� SQL �� �� �� DB2 ���� �� ��
� ���� ��� ���� DB2 �� ��� � ��� ���.�� �
� � �� �� ��� WWW� ���� ��� � �� �����
� Lotus Notes ������ �� ���� ��, ��� � ���� �
� � ��� ��� �� ���. � ��� ������� � ��
� ���. � ��� �� �� �� SQL ���� ��� ���.
��� ���(sourced) ���� ��� � ���.
UDF ��
��, ��, SQL� � �� ��� UDF� ���. � ��� ��� �� ��
�.
v �� UDF. � UDF� �� � �� ��� ������ � ���
�. ��� � UDF� �� �� ��. ����, � �� ��� �
��� CREATE FUNCTION� �� ������ �� � �
�.
v �� ��. � ��� C, COBOL, �� RPG� �� �� ��� �� ���
����� ���� �� ����. � ��� ������ ��, �
������ ��� DML�� ��� ��� ���� �� ��� ����
���. ���, UDF ��� �� ��� �� � �� ��� ��� �
�� � � �� �� ����� ������ ��� ����� ��� �
�� UDF� ���. �� �� � �� ��� ��� 259 ��� �
13 � ���� �� ��(UDF) �� �����.
v SQL UDF. SQL UDF� ���� SQL ��� �� ����. � ‘��’� �
��� CREATE FUNCTION� ��� SQL���. SQL UDF� � ��
�� ���.
– SQL� ���� ��� ���.
� 12 � ���� �� �� �� 227
|
|
|
|
|
|
|
|
– ������� �� ��� ����� ��� �� �� ��� ��� �
�� �� �� ��� ���� SQL ��� ��� ��.
– �� ����, �� ��, UDT� ���� �� � ��� ��� �
� � ���. SQL �� �� ��� ��� 259 ��� �
13 � ���� �� ��(UDF) ��� ����.
UDF� ���� �� ��� ����.
1. DB2� UDF . ��� UDF �� ���� �� CREATE FUNCTION
� �� ������ �� �. �� ��� ��, � ���
�� �� ������ ��� ���. SQL UDF� �� CREATE
FUNCTION���� �� ��� ���, CREATE�� ��� ��
�(�� SQL �� ��� ���). �� UDF� �� CREATE FUNCTION
�� �� ������ � �. �� ��� ��� �� �
�� �� ��� �. ��� ��� �UDF � �����.
2. UDF ���. 259 ��� � 13 � ���� �� ��(UDF) �� ���
��.
� ��� ����� ��� ��� UDF� CREATE VIEW� �� DDL(data
definition language) �� DML(data manipulation language) ��� ���
��� ����.
UDF
������� �� ��� ��� � UDF� ������ ���
�. CREATE FUNCTION �� �� UDF� � ���.
�� �� DETERMINISTIC, ALLOW PARALLEL � RETURNS NULL
ON NULL INPUT� �� ��� �� ����� ��� �� ��� ��
�. � ���� ��� ��� ������ �� ���� �� �� ���
��� �� ��� ���.
�� ��� �� �� ��� � DB2 �� UDF� �� �. ��
� �� � UDF� ��� ���. ���, UDF� ��� ��� �
�� �� �� � � � � � �� ���. UDF
�� �� ��� 259 ��� � 13 � ���� �� ��(UDF) �� ��
���.
UDF � �� 229 ��� ��: UDF � �����.
228 iSeries� DB2 UDB SQL ����� �� V5R2
�� � �� ���
ILE �� ������ ��� ����� ��� �� ��� �� ��� �
��� ������ ��� ���� ���� ��� �.*PGM ��
*SRVPGM ����� ������ � ��� �� � ����� ���� ��
����� ���� � � �� ����.�� � ��� �� �
� ����� ���� ��� ��� ���� � ��� �� �� ��
� �. �� ��� �� ���� ��� �� �� �� ��� ��
�.
v �� ���� ������ QSYS �� QSYS2� ��� �.
v �� ����� CREATE FUNCTION�� ��� � ��� �.
v �� ����� ILE *PGM �� *SRVPGM ����� �.
v �� ���� �� ��� ����� ��� �� SQL�� �� ���
�.
����� ��� !� ��� �� ���.
�: UDF
�� �� UDF� � �� � � ���� �� ���. �� ���
����.
v �: ��
v �: ��� ��
v �: UDT� ��� ��
v �: UDT ��� �� �� ��
v �: UDT� AVG
v �: ��
v �: �� ID� �� � ��
�: �� � �� ��� x ��� ��� ���� ���� �����.
�: ���
�� UDF� � �� �� ���, MATH ��� �� �
�� ���.
CREATE FUNCTION MATH.EXPON (DOUBLE, DOUBLE)RETURNS DOUBLE
EXTERNAL NAME ’MYLIB/MYPGM(MYENTRY)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTIONRETURNS NULL ON NULL INPUTALLOW PARALLEL
� 12 � ���� �� �� �� 229
|
|
|
|
|
|
|
|
|
|
|
|
|
|
� �� ���� RETURNS NULL ON NULL INPUT ��� ���.
� � �� �(null)� �� �� ���� ��� �� ����. scratchpad
� ��� �� ��� ��� ��� ����, NO SCRATCHPAD� NO
FINAL CALL ��� � ����. EXPON� �� �� ��� ����,
ALLOW PARALLEL � ����.
�: �� ��
�� Willie� �� ��� ��� CLOB �� �� ��� �� ��� �
� ���� �� � UDF� � ��. UDF� ��� � �� CLOB �
� ��� ��� ��, � ! �� 0 ��.
�� Willie� FLOAT �� �� �� � ��. ���� SQL� �
� � ��� ����� ���, � ��� �� INTEGER� ��� �. ��
�� �� ���.
CREATE FUNCTION FINDSTRING (CLOB(500K), VARCHAR(200))RETURNS INTEGERCAST FROM FLOATSPECIFIC "willie_find_feb95"EXTERNAL NAME ’MYLIB/MYPGM(FINDSTR)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTIONRETURNS NULL ON NULL INPUT
UDF� ���� FLOAT ��� ���� UDF� �� � ��
�� � � INTEGER� ����� ��� � ��� ��
CAST FROM�� ����. SQL ���� ��� �� ��, INTEGER ��
��� ��� ���� �� ���. �� ���� � �� �� ����
��� �� �� �� �� DDL� ��� ���(231 ��� ��:
UDT� ��� ��� ��). UDF� � ��� �� �� �� ���,
RETURNS NULL ON NULL INPUT ���. scratchpad� ����, NO
SCRATCHPAD� NO FINAL CALL ��� � ����. FINDSTRING�
�� �� ��� ����, ALLOW PARALLEL ��� � ����.
�: BLOB �� ��
���� � ��� CLOB� �� �� BLOB� ���� ��� BLOB
� �� ���� �� � FINDSTRING ���.
CREATE FUNCTION FINDSTRING (BLOB(500K), VARCHAR(200))RETURNS INTEGERCAST FROM FLOATSPECIFIC "willie_fblob_feb95"EXTERNAL NAME ’MYLIB/MYPGM(FINDSTR)’LANGUAGE C
230 iSeries� DB2 UDB SQL ����� �� V5R2
PARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
� ��� UDF ��� ��� ���, � UDF� �� ��� ���
�� ���. BLOB� CLOB ��� ��� �� �� ��� ���
� ���. DB2� UDF ��� BLOB� CLOB �� ����� �����
���� �� �� ����� ��� ���. �� �� � ����. DB2
� ��� �� �� ��� UDF� �� �� ��� � UDF� ��
� ��� ���.
�: UDT� �� ��
� �� �� �� ���. 230 ��� ��: BLOB ��� ����
FINDSTRING �� ����, �� �� BLOB�� ��� �� BOAT� ��
�� ���. FINDSTRING� BOAT �� �� �� ��� �
�� � � FINDSTRING �� ��. � ��� 230 ��� ��:
BLOB ��� ���� BLOB �� � � FINDSTRING ��� ��
�. � �� FINDSTRING� � ����.
CREATE FUNCTION FINDSTRING (BOAT, VARCHAR(200))RETURNS INTSPECIFIC "slick_fboat_mar95"SOURCE SPECIFIC "willie_fblob_feb95"
� FINDSTRING ��� 230 ��� ��: BLOB ��� ���� FINDSTRING
�� � �� ���� �� ���� ��� ���. ���� ��
DDL� ��� ���� ���� ��� �� ��� ��. SOURCE
� ��� ����, EXTERNAL NAME� �� �� � ��� ���
��� � �� ��� ���. � � �� ��� ����. ����
�, ��� �� �� ��� ��, �� ���� ����� 230 ��� ��
: BLOB ��� ��� ����. �� ���� �� ����� � �� ���
��� ���� �� �� ��� �, ��� ��� ��� ���� ���.
�: UDT ���� �� �� ��
���� BOAT� ���� ��� � �� ��� ��� ��� �� �
�� � UDF� � ��. ������ �� �� � ���, � �,
�� ��� ��� ���, � ��� �� ��� ���� ��� ��� �
�� ���� �. �� ��� �� ��� DB2 ��� ����
exchange_rate �� ���� �, ��� � �� �� �� ��� �
��. �� �� NOT DETERMINISTIC�� ���.
CREATE FUNCTION BOAT_COST (BOAT)RETURNS INTEGEREXTERNAL NAME ’MYLIB/COSTS(BOATCOST)’LANGUAGE C
� 12 � ���� �� �� �� 231
PARAMETER STYLE DB2SQLNO SQLNOT DETERMINISTICNO EXTERNAL ACTION
CAST FROM� SPECIFIC� ���� ���� NOT DETERMINISTIC� ���
���.
�: UDT�� AVG
� �� CANADIAN_DOLLAR ��� �� �� AVG � �� ���.
CANADIAN_DOLLAR� �� ���� 242 ��� ��: ���� �����.
��� �� �� �� AVG �� ��� ��� ��� ���.
CANADIAN_DOLLAR �� �� ��� DECIMAL�����, AVG(DECIMAL)
�� ��� �� ��� AVG� ���. ��� � ����
DECIMAL CANADIAN_DOLLAR� ���� ��� � ��� ����
��� �. ��� DECIMAL� CANADIAN_DOLLAR �� �� ���
�� � ���� ���.
CREATE FUNCTION AVG (CANADIAN_DOLLAR)RETURNS CANADIAN_DOLLARSOURCE "QSYS2".AVG(DECIMAL(9,2))
���� SQL �� � AVG ��� ��� ����, SOURCE�� �
��� �� �� �����.
�: ��
��� �� ��� ��� 1 �� �� ��� ��� �� 1� ����
�. � ��� SQL �� �� ���, ��� ��� ��� ����� ��
�� NOT DETERMINISTIC ����. SCRATCHPAD� �� �� �
�����. �� ��� ��� ��� � ����� ��.
CREATE FUNCTION COUNTER ()RETURNS INTEXTERNAL NAME ’MYLIB/MYFUNCS(CTR)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLNOT DETERMINISTICNOT FENCEDSCRATCHPAD 4DISALLOW PARALLEL
��� ��� ��� ��� � ���� ����. �� ��� SCRATCHPAD
� ��� NO FINAL CALL� ��� �� ���. � �� scratchpad�
��� �� 4����� �����, �� ���� � �. COUNTER ��
� �� scratchpad�� �� ��� ���� ���, DB2� � �� ��
�� ! DISALLOW PARALLEL� ����.
232 iSeries� DB2 UDB SQL ����� �� V5R2
�: �� ID� �� � ��
��� �� ��(� �� ���)� �� ��� ���(� �� ���) �
�� ��� �� ���� � ��� �� � � �� ��� �� ���
� � �� � �� � ��. � UDF� ��� �� ��� �� �
� �� ��� ���.
CREATE FUNCTION DOCMATCH (VARCHAR(30), VARCHAR(255))RETURNS TABLE (DOC_ID CHAR(16))EXTERNAL NAME ’DOCFUNCS/UDFMATCH(udfmatch)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTIONNOT FENCEDSCRATCHPADNO FINAL CALLDISALLOW PARALLEL CARDINALITY 20
� ��� �$ �� �� �� �� ��� DETERMINISTIC�� ��
��. DOCMATCH���� �� ��� RETURNS� �� �� DOC_ID
� ����� �����. FINAL CALL� � � �� ���� ��� �.
�� DISALLOW PARALLEL ���� � ��� �� �� ���� ��
��. DOCMATCH���� �� ��� �� ������ CARDINALITY 20�
�� �� ���� DB2 ������ ��� � ��� � �� ��.
����, � � ��� ��� �� �� ���� �� �� �� ���
�.
SELECT T.AUTHOR, T.DOCTEXTFROM DOCS AS T, TABLE(DOCMATCH(’MATHEMATICS’, ’ZORN’’S LEMMA’)) AS FWHERE T.DOCID = F.DOC_ID
FROM�� � �� ��� �� � ��(TABLE ���) �����. �
��� DOCMATCH() � ��� ZORM’S LEMMA� ��� �
MATHEMATICS �� �� � � DOC_ID� ��� � ��. ��
DOC_ID �� ��� �� � �� ���� � ��� �� � �
�.
UDF ��
���� � UDF� ���� ��� SQL� � ���� �� ��� ��
�. � UDF� SELECT� FROM� ��� ���. ��� UDF ��� �
�� ����� ���.
v UDF� ��� �� ��� �� ����� ��� ���. �� � ��
��� �� ��� DLVALUE, DLURLPATH, DLURLPATHONLY,
DLURLSCHEME, DLURLCOMPLETE, DLURLSERVER, ATAN2,
� 12 � ���� �� �� �� 233
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
DIFFERENCE, RADIANS, RAND, SOUNDEX, NOW, CURDATE �
CURTIME �� ��� ��� ���.
v SQL�� �� ��� �� �� ��(ALWCPYDTA(*YES) ��
(*OPTIMIZE))� ��� ���, �� UDF, SQL UDFS, ��� �� ��
DLVALUE, DLURLPATH, DLURLPATHONLY, DLURLSCHEME,
DLURLCOMPLETE, DLURLSERVER� ORDER BY �� GROUP BY��
��� ���.
SQL ���� �� �� �$ �� ���. ��� � �� ��� �� �
���� ��� SELECT� �$ ����� ����, � �$� ��� ��
�� �� ���.
��� �� �� ����� ���� �� �� ���� 225 ��� �UDF �
�� �����. SQL ���� � � �� �� ��� ��� �� ��
�. �� ��� DML(Data Manipulation Language) ��� �� �� ���
� ����, � ����� ��� �� ��� �� ���.
�� ��
��� UDF�� �� �� ���� �� �� ��� �� ��� ����.��
�
function_name ( )ALL ,DISTINCT
expression
��
�� function_name� ������ ���� �� ��� ���. *SYS
�� �� ��� �� ��� ��� ���. �� 0� 90 �� ���
�, �� ��� ��� ���.
v ������ ���� �� � ��
v �
v ���
v ��
v ��� �
v CAST ��� �� ��� ��
v ��� � ��
v � ����
�� ��� ���� ��� �� �� �� ���� �. �� �
�� �� ��� �� �� ���� �. DB2� �� �� � ���
� �� �� ����� �� ���, �� �� ���� ��� ���
�� ���.
�� �� �
�� ��� � �� ��� �� ��� ���.
234 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
AVG(FLOAT_COLUMN)BLOOP(COLUMN1)BLOOP(FLOAT_COLUMN + CAST(? AS INTEGER))BLOOP(:hostvar :indicvar)BRIAN.PARSE(CONCAT(CHAR_COLUMN,USER), 1, 0, 0, 1)CTR()FLOOR(FLOAT_COLUMN)PABLO.BLOOP(A+B)PABLO.BLOOP(:hostvar)"search_schema"(CURRENT PATH, ’GENE’)SUBSTR(COLUMN2,8,3)QSYS2.FLOOR(AVG(EMP.SALARY))QSYS2.AVG(QSYS2.FLOOR(EMP.SALARY))QSYS2.SUBSTR(COLUMN2,11,LENGTH(COLUMN3))
� �� ��
� ������, function_name� ����� ���� �� ��� ���.
*SYS �� *SQL �� �� ��� � ��� �� � ��� ��� ����
�����.
� �� ��� � �� ��� �� ��� ���.
TABLE(TABFUNC()) XTABLE(BLOOP_TAB(:hostvar, COL1+COL2))NEW_TABLE TABLE(SCHEMA1.BLOOP_TAB2()) X
��� ��� �� �� � ��
��� ��� � � ��� ����� ���� ���. �� ��� �
��� ���.
BLOOP(?)
��
BLOOP(NULL)
�� ��� �� �� �� ��� �� ���� ��� �� ���.
CAST �� �� �� �� ��� �� INTEGER� �� ��� �
�� � �� �� ��� ���.
BLOOP(CAST(? AS INTEGER))
��
BLOOP(CAST(NULL AS INTEGER))
��
�
TABLE ( function-name ( ) ) correlation-clause,
expression
��
� 12 � ���� �� �� �� 235
|
|
|
|
|
|
|||
|
��� �� �� ��
��� �� ��� ��� ��, DB2� ��� �� �� �� �� ���
� ���. �� ��, �� ��� ���.
SELECT PABLO.BLOOP(COLUMN1) FROM T
��� PABLO� BLOOP ���� ����. ��� SERGE� BLOOP ��
�� ��, �� BLOOP ��� ��� �� ��� �� ���. ��� PABLO
� �� ���� � �� BLOOP �� �� ��.
CREATE FUNCTION BLOOP (INTEGER) RETURNS ...CREATE FUNCTION BLOOP (DOUBLE) RETURNS ...
��� BLOOP� PABLO ��� �� ���� �� �� ����� �,
column1� �� �� �� ��� BLOOP ���. � ��, PABLO.BLOOP
� � �� �� �� column1� �� �� � �� �� ��� ��
�. � ����� column1� SMALLINT �� INTEGER��, �� ���
� �� BLOOP�� ���� ��, column1� DECIMAL �� DOUBLE��, �
�� BLOOP� ����.
� � �� � �� ��� �� ���.
1. � �� � �� ���. � �� BLOOP� INTEGER ���� ��
����, ���� SMALLINT �� ��� ���. �� �� ����
� �� �� �� ��� �� ���(��� ��� SQL ���� ���
��) DB2� ��� �� �� ��.
2. �� ��� ���� SMALLINT �� INTEGER �� �� � �� BLOOP
���� �� ��, ��� �� ��� ���� ��� ���
�.
SELECT PABLO.BLOOP(DOUBLE(COLUMN1)) FROM T
3. ��, DECIMAL �� DOUBLE �� �� � �� BLOOP ���� �
� ��, ��� ��� ��� �� ��� ��� ��� ���.
SELECT PABLO.BLOOP(INTEGER(COLUMN1)) FROM TSELECT PABLO.BLOOP(FLOOR(COLUMN1)) FROM T
SQL ���� �� ��� �� �� ���� �. INTEGER ���
QSYS2 ���� �� ����.
���� �� �� �� ��
��� �� ��� ��� �� ���� �� �� ��� ���, DB2� �
�� �� �� ���� ��� ��� �� ���� �� ��� ��
�. DROP FUNCTION �� COMMENT ON FUNCTION ��� ��, ���
*SQL ��, �� *SYS �� �� *LIBL �� ���� ���� �� ��
ID� �� ��� ����. ���, ���� ��� ��� ��, �� �
236 iSeries� DB2 UDB SQL ����� �� V5R2
� ��� ��� �� ��� ��(�� ��) �� �� ���. �� �
�, ���� PABLO�� �� SQL�� ��� ��� ���. �� COLUMN1
� INTEGER �� ����.
SELECT BLOOP(COLUMN1) FROM T
236 ��� ���� �� �� ��� ��� � �� BLOOP �� ��
�, � � �� ���. �� ��� �� ��� ���� QSYS �� QSYS2
� ��� BLOOP� ���, column1� INTEGER��� � �� BLOOP� �
���.
"QSYS","QSYS2","PABLO"
���, ���� � ���� �� �� ����� ��� �� ����
� ��� ��� � !��!�� ���. � �����, ���� ���
�� SQLPATH ���� �� �� �� ���� �� � ��� ��
� �� ��� �� ��.
"KATHY","QSYS","QSYS2","PABLO"
Kathy� �� �� BLOOP �� �� ��, �� ��� Kathy� �� �
� � ��� ��� ���� �� �� �� ����. DB2� ���� �
��� � � �� �� ��� ���� ��� ���. ��� ��
��� �� �� ��� �� � �� ���� ����.
�� ��� ��
��� �� ��� ���� �� �� �� ��� ��, �� �� ����� ��
����� ��, � ��� �� �� ��� �� ��� �� �� �� ��
�.
v ��� ��
v �� ��� �� �� � ��� ���
v ��� � ��� ������ �� � ���
(����� ��� ��� ��� �� ��� ���� �� ���, ����
�� ��� �� �� ��� ���� �� ���.) ����� ��� �
� ��, � !� ��� � �� �� �� ��� �� ��. �
��� �� ��� ���, � �� �� ��� �� � ���� ��
�� �� �� ��� ��� ��� ����. ���� �� ����� SQL
��� ��� ���.
236 ��� ���� �� �� ���� � � � �� ��� ���� ��
�� �� �� ��� �� ��� ��� ��� ����. �� UDF �
� �� �� �� ��� ���� ����. ���, � �� ����
� �� ��� ���.
� 12 � ���� �� �� �� 237
�� �� �� ���� ��� ���.
CREATE FUNCTION BLOOP (INTEGER) RETURNS INTEGER ...CREATE FUNCTION BLOOP (DOUBLE) RETURNS INTEGER ...
�� �� DML� ���.
SELECT BLOOP( BLOOP(COLUMN1)) FROM T
column1� DECIMAL �� DOUBLE ���, �� BLOOP ��� �� ���
� �� BLOOP� ����. � BLOOP� INTEGER� ��� �� BLOOP
� � �� BLOOP�� ����.
��, column1� SMALLINT �� INTEGER ���, �� bloop ��� �� �
�� � �� BLOOP� ����. � BLOOP� INTEGER� ��� ��
BLOOP � �� BLOOP�� ����. � ��, �� �� �� ��� ��
� �� ���.
�� �� �� ��� � �� �� ��� ��� ���.
v SQL ����� � �� ���� �� ��� ���. �� ��, ��
� �� BOAT� �� �� "+" ��� �� ��� ��� ���.
��� �� UDF� ��� ���.
CREATE FUNCTION "+" (BOAT, BOAT) RETURNS ...
�� �� ��� �� ��� SQL� �� ���.
SELECT "+"(BOAT_COL1, BOAT_COL2)FROM BIG_BOATSWHERE BOAT_OWNER = ’Nelson Mattos’
�� ���� >, =, LIKE, IN � �� �� �� ���� �� ���
� �� �����.
v �� �� ����� �� ���� ��� � �� �$ ��� ���. �
�� �� �� �� BLOOP �� ����.
CREATE FUNCTION BLOOP (INTEGER) RETURNS INTEGER ...CREATE FUNCTION BLOOP (DOUBLE) RETURNS CHAR(10)...
�� ���� ��� �� SELECT� ��.
SELECT ’ABCDEFG’ CONCAT BLOOP(SMALLINT_COL) FROM T
SMALLINT �� �� ��� �� ��� �� �� ��� � ��
BLOOP���, CONCAT� � �� ���� �� �� INTEGER� ����.
CONCAT� ��� �� ���� ��� ���. � �� BLOOP�
�� �����, � BLOOP� ���� �� ��� �����.
v UDF� LOB ��(BLOB, CLOB, �� DBCLOB) �� �� ���� �
� ��� ���. DB2� ��� �� ��� � ���� �� ��
238 iSeries� DB2 UDB SQL ����� �� V5R2
LOB , � ��� LOB �� ��� ��� ��, ����� ���
�. �� ��, �� C �� ������� � � ���.
EXEC SQL BEGIN DECLARE SECTION;SQL TYPE IS CLOB(150K) clob150K ; /* LOB host var */SQL TYPE IS CLOB_LOCATOR clob_locator1; /* LOB locator host var */char string[40]; /* string host var */
EXEC SQL END DECLARE SECTION;
��� � :clob150K �� :clob_locator1� �� ���� CLOB(500K)�
��� �� �� �� ���. ��� 230 ��� ��: ��� ���
��� FINDSTRING ��� ��, �� � �� �� ����� ��
�.
... SELECT FINDSTRING (:clob150K, :string) FROM ...
... SELECT FINDSTRING (:clob_locator1, :string) FROM ...
v LOB �� � �� � SQL UDF ��� �� �� AS LOCATOR ��
� �� ���. � ��, �� LOB � ��� � ����� ��
� ���. �� LOB LOCATOR� UDF ����.
���� ��� �� LOB� ���� � ��� ��� �� UDF ���
� ��� ���. � ��� �SQL UDF ����. ��� ���
�� ��� ��� LOB � � ���, LOCATOR �� � �� ���
��� � ��� ���. ��� � �� ���� �� ��� ��
UDF ���� � ��� AS LOCATOR� ��� ��� �� �
�.
v UDF� ��� �� �� ��� �� �� ��� ���(�� �
��� ���). DB2� ��� ��� �� �� �� ���� UDF
���.
��� ���, �� ���� ��� ���� ��� UDF ���� ��
���� ��� ��� ���� �� ��� ���� ���� ������ �
��. ��� �� �� ��� �� ��� ���. DB2� ��� ��� �
� ��� �. ��� ��� �� ��� � ���. ��� BLOB
�� ��� BOAT ��� �� ���, BOAT ��� ����� ��
�� 231 ��� ��: UDT ��� �� �� ���� BOAT_COST UDF
� ���. �� C �� ������� � � �, ��� � :ship�
BOAT_COST ���� ��� BLOB ���.
EXEC SQL BEGIN DECLARE SECTION;SQL TYPE IS BLOB(150K) ship;
EXEC SQL END DECLARE SECTION;
�� ��� � :ship ��� �� BOAT ���� �����
BOAT_COST ���� ��� ����.
... SELECT BOAT_COST (BOAT(:ship)) FROM ...
... SELECT BOAT_COST (CAST(:ship AS BOAT)) FROM ...
� 12 � ���� �� �� �� 239
� BOAT ��� ��� ������ ��� � ��� � BOAT UDF
� ���, �� �� � � ��� ��� �. ��� ��� �� ��
� � ���.
��� ��� �� ��(UDT)��� ��� ��� ��� �� �� ��� �� ��� ��� �� DB2 ��
��� �� � �����. ��� ��� ��� �� ��� ��
���� ��� �� �� ��� �� �� ���� ��� �� ��
��� �� ��� �� �� ���� ��� � �� DB2 ��
��� �� �� ��� ���. ��� �� �� ��� ��� ���
��� �� �� 1� 1� ��� � ���.
�� ��� UDT �� �� ���.
v �UDT� ��� ���
v 241 ��� �UDT ���
v 242 ��� �UDT� � ���
v 243 ��� �UDT ��
v 249 ��� �UDT, UDF � LOB ��� �� ��
UDT� ��� ��
UDT� ��� � �� ��� ���.
1. ���.
��� �� �� DB2 �� ��� �� � � �� ���
��� ��� ���.
2. ���.
��� �� ��(UDF) �� ��� �� �� �� ��� ��
���� ��� �� ��� � � � ���.
3. ��� ��.
��� ���� UDT� �� �� � ���. �� UDT� ��
� ���� UDT� ��� ��� ���.
4. ���.
UDT� �� � ���� �� �� �� ����. ������ ��
� �� �� ��� �� �� �� ���� �� �� ���� ��
� ���.
5. ���� ��.
�� �� ��� �� ��� ��� ��� UDT� �� �� ��� �
� ��� ��� ���(221 ��� ���� �� ��(UDF)� ��).
240 iSeries� DB2 UDB SQL ����� �� V5R2
6. ���� �� ��� ��.
UDT� �� � ���� �� ��� ����. �� ���� �� ��� �
� ��� ��� ���.
UDT ��
UDT� �, ��, UDF �� � ������ CREATE��� ���� �.
CREATE DISTINCT TYPE� �� ��� UDT� ���. �� ��
� �� ��� ��� ��� SQL ���� CREATE DISTINCT TYPE ��
���.
CREATE DISTINCT TYPE� ��� �� � ���.
1. ��� UDT ��� ������ ���� �� �� ���.
2. UDT� �� ��� UDT� ����� ��� �� DB2 �� ��� ��
��. �� �� �� �� �� ����� �. �� ��� UDT� �
UDT� �� ���� ��� ���.
UDT ��� �� DB2� �� �� �� ��� �� ���.
v �� ��� �� �� �� UDT� �� ���� ���� ��. �� �
�, FLOAT� ���� �� �� �� ��, DOUBLE��� ��� ��� �
�� ��� ��.
v �� �� UDT� ���� ��. UDT �� �� ���� ��� ��
�� ��� SQL ���� �����.
� ��� ��� UDT �� ���.
���� �� UDT ��
�� �� �� �� ���, ���� �� �� �� �� �� �� ���
��� �� �� ��� ����.
v ��
v ���
v ��� ��
���� �� �� ��� ���� �� �� ��� 236 ��� ���� ��
�� ��� �����.
�: CREATE DISTINCT TYPE ��
��� CREATE DISTINCT TYPE ��� ���.
v �: ��
v �: ��
�: �� � �� ��� x ��� ��� ���� ���� �����.
� 12 � ���� �� �� �� 241
�: ��
� ��� ��� ��� �� ������ ��� � ��� ��� �
�� ����� ��� � DB2� ��� � � ��� ���. �
��� ���� �� ��� ���. ��� ��� ��� �� � ��
�� �� ��� �� UDT� ���� �.
CREATE DISTINCT TYPE US_DOLLAR AS DECIMAL (9,2)CREATE DISTINCT TYPE CANADIAN_DOLLAR AS DECIMAL (9,2)CREATE DISTINCT TYPE GERMAN_MARK AS DECIMAL (9,2)
�: �
�� ��� ���� �� ������ � DB2 �� ���� � �
� ��� ��� �� ����� ���. � ��� �� �� ��� �
�� ����(���, ��� ��� � ��� ����), ����
�� � ���� �� UDT� ���.
CREATE DISTINCT TYPE PERSONAL.APPLICATION_FORM AS CLOB(32K)
UDT� � ��
� �� UDT� ��� � ��� UDT� �� �� �� ��� ���. �
�� CREATE TABLE ��� ���.
v �: ��
v �: ������ �
�: �� � �� ��� x ��� ��� ���� ���� �����.
�: ��
� ��� ��� ��� ��� �� ��� �� ��� ��� ��
�.
CREATE TABLE US_SALES(PRODUCT_ITEM INTEGER,MONTH INTEGER CHECK (MONTH BETWEEN 1 AND 12),YEAR INTEGER CHECK (YEAR > 1985),TOTAL US_DOLLAR)
CREATE TABLE CANADIAN_SALES(PRODUCT_ITEM INTEGER,MONTH INTEGER CHECK (MONTH BETWEEN 1 AND 12),YEAR INTEGER CHECK (YEAR > 1985),TOTAL CANADIAN_DOLLAR)
CREATE TABLE GERMAN_SALES(PRODUCT_ITEM INTEGER,MONTH INTEGER CHECK (MONTH BETWEEN 1 AND 12),YEAR INTEGER CHECK (YEAR > 1985),TOTAL GERMAN_MARK)
242 iSeries� DB2 UDB SQL ����� �� V5R2
�� �� UDT� 242 ��� ��: ���� ��� �� CREATE DISTINCT
TYPE �� ���. �� ��� �� ���� ���. � ��
�� �� ��� 151 ��� ��� ���� �� � ��� �����.
�: ����� ��
��� �� ���� �� � �� ��� �� ��� ��� ���.
CREATE TABLE APPLICATIONS(ID INTEGER,NAME VARCHAR (30),APPLICATION_DATE DATE,FORM PERSONAL.APPLICATION_FORM)
UDT ��� ���� �� ID� �� ��� ��� �� ��� ��� ��
��� UDT ��� �� ������. ��� �� ��� �� ���� �
��� DB2� �� �� �� ��� ���� �� ��� ���� ��
��� �� �� �� �� �� ��.
UDT �
UDT� ��� �� ��� �� � �� ��� ����. ��� ��� UDT
� ��� ������ ���� UDT� ��� ��� � ���.
��� UDT� ���� ���� � ��� �� ��� ��� ���.
�� ��, �� �� �� �� ��� ��� ��� ��� �� ��� �
�, � ��� �!� �� ���� � ���� ��� ��� ��� �
� �� �� �� ��� � ���.
��� ���� ��, DB2� �� ��, UDT �� ��� ���� �� UDT �
��� ��� ��� � ��� ���. �� ���, DB2� � �
� ��� �� UDT �� ��� � ���. UDT ���� �
��� ���� ���� � �� � ��� ���� �����
�. �� ���, � �� UDT ��� ���� UDT ���� UDT �
��� �� ��� ��� ���� ����� �.
UDT �� �� �UDT �� ��� �����.
UDT �� �
��� UDT� �� ���.
v �: UDT� � ��� ��
v �: UDT ��� ���
v �: UDT� ��� ��
v �: UDT� ��� �� UDF
v �: UDT� ��� ��
v �: �� SQL� ��
� 12 � ���� �� �� �� 243
v �: � UDT� ��� ��
v �: UNION� UDT ��
�: �� � �� ��� x ��� ��� ���� ���� �����.
�: UDT� �� ��� ��
1992� 7�(7/92) ��� $100 000.00 �� ��� �� �� �� ��� �
��.
SELECT PRODUCT_ITEMFROM US_SALESWHERE TOTAL > US_DOLLAR (100000)AND month = 7AND year = 1992
���� �� ��� �� ��� �� ��� ���(�, DECIMAL)� � ��
� ���� DECIMAL �� ��� ���� DB2� ��� ��� �
� ���. DB2� ��� � ��� ��(�, �� ��� DECIMAL�
���� ��) ��� ��� �� �� DECIMAL� ���� �
��. UDT� ���� UDT� ����, ���� ���� �� �� �
�� �� ��� �� �� ��� ��� ���. �, �� ��� ���
�� ��� �.
SELECT PRODUCT_ITEMFROM US_SALESWHERE TOTAL > CAST (100000 AS us_dollar)AND MONTH = 7AND YEAR = 1992
�: UDT ��� ���
��� ��� �� ��� ��� UDF� ���� ��� ���. �� �
� DB2 ��� ���� �� � ���. ��� ��� ���
� �� � �� �� �� ��� �� UDF� ���.
�� �� �� UDF� �� �� ���. ��� �� C ����
DECIMAL ��� �� ���. �� � �� ��� UDT�
DECIMAL� ������. ���� UDF� DOUBLE � ���
�. ���, DOUBLE� �� ��� ����� �� DECIMAL ���
�� C �� ���� �� �� ���� ����. ���, ��� UDF�
��� �� ����� �.
CREATE FUNCTION CDN_TO_US_DOUBLE(DOUBLE) RETURNS DOUBLEEXTERNAL NAME ’MYLIB/CURRENCIES(C_CDN_US)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLNOT DETERMINISTIC
244 iSeries� DB2 UDB SQL ����� �� V5R2
��� ��� �� �� ��� ��� � �� UDF ��� �����, NOT
DETERMINISTIC�� ���� �.
�� ��� ��� ��� � UDF� �� �� �� �� ��� �
�. ��� ��� DECIMAL �� ������ �. DECIMAL � DOUBLE
� ������ �. �� �� DOUBLE DECIMAL� ����
DECIMAL �� ��� ����� �.
��� ���� ���� ���� � ��� �� ��� � �� � ���
� ��� �� �� �� UDF� ��� � ���� DB2 �� ���.
���, � �� �� UDF� ���� �. � �� UDF� DOUBLE
DECIMAL ��� ����. � �� UDF� DECIMAL UDT� ����.
�� �����.
CREATE FUNCTION CDN_TO_US_DEC (DECIMAL(9,2)) RETURNS DECIMAL(9,2)SOURCE CDN_TO_US_DOUBLE (DOUBLE)
CREATE FUNCTION US_DOLLAR (CANADIAN_DOLLAR) RETURNS US_DOLLARSOURCE CDN_TO_US_DEC (DECIMAL())
US_DOLLAR �� US_DOLLAR(C1)(C1� ��� ��� ��� �)� �� ��
� �� ��� �� �� ��� ���.
US_DOLLAR (DECIMAL(CDN_TO_US_DOUBLE (DOUBLE (DECIMAL (C1)))))
�, C1(��� ��� ���)� decimal� �����, CDN_TO_US_DOUBLE ����
���� double �� �� �����. � ��� �� � ��
decimal� ����� �� �� ��� ����� double (�� �� ��)
��.
� ���� �� ��� ��� �� �� �� ���.
CREATE FUNCTION GERMAN_TO_US_DOUBLE(DOUBLE)RETURNS DOUBLEEXTERNAL NAME ’MYLIB/CURRENCIES(C_GER_US)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLNOT DETERMINISTIC
CREATE FUNCTION GERMAN_TO_US_DEC (DECIMAL(9,2))RETURNS DECIMAL(9,2)SOURCE GERMAN_TO_US_DOUBLE(DOUBLE)
CREATE FUNCTION US_DOLLAR(GERMAN_MARK) RETURNS US_DOLLARSOURCE GERMAN_TO_US_DEC (DECIMAL())
�: UDT� ��� ��
1989� 3�(3/89) ���� ��� ��� �� ��� �� �� �� �
�� ���.
� 12 � ���� �� �� �� 245
SELECT US.PRODUCT_ITEM, US.TOTALFROM US_SALES AS US, CANADIAN_SALES AS CDN, GERMAN_SALES AS GERMANWHERE US.PRODUCT_ITEM = CDN.PRODUCT_ITEMAND US.PRODUCT_ITEM = GERMAN.PRODUCT_ITEMAND US.TOTAL > US_DOLLAR (CDN.TOTAL)AND US.TOTAL > US_DOLLAR (GERMAN.TOTAL)AND US.MONTH = 3AND US.YEAR = 1989AND CDN.MONTH = 3AND CDN.YEAR = 1989AND GERMAN.MONTH = 3AND GERMAN.YEAR = 1989
�� ��� ��� ��� � ���� � ��� ����, ��� ��� �
�� ��� ���� UDF� � ���� � �� ��� ����
UDF� ���. �� ��� �� �� � ��� ���� ��
DECIMAL� ��� ��� DECIMAL ��� � ���.
�: UDT� ��� �� UDF� ���� SUM ��� �� �� SUM �� �� �� UDF� �� �
� ���.
CREATE FUNCTION SUM (GERMAN_MARKS)RETURNS GERMAN_MARKSSOURCE SYSIBM.SUM (DECIMAL())
���� 1994�� � �� �� �� �� �� ��� �. �� ��
�� ��� ��� �.
SELECT PRODUCT_ITEM, US_DOLLAR (SUM (TOTAL))FROM GERMAN_SALESWHERE YEAR = 1994GROUP BY PRODUCT_ITEM
�� �� ���� �� ��� SUM �� ��� ���� SUM(us_dollar
(total)) �� ���.
�: UDT� ��� �
��� ���� �� � ������ ���� ��� ���. ���
� �� � ��� �� ��� �� ��� � �� �� ��� �
� ��.
EXEC SQL BEGIN DECLARE SECTION;SQL TYPE IS CLOB(32K) hv_form;
EXEC SQL END DECLARE SECTION;
/* Code to fill hv_form */
INSERT INTO APPLICATIONSVALUES (134523, ’Peter Holland’, CURRENT DATE, :hv_form)
246 iSeries� DB2 UDB SQL ����� �� V5R2
���� �� ��� UDT personal.application_form�� ��� ��� �
� ����� ��� ����. �� DB2� UDT� �� ��� ����
�� UDT� �� �� �� ��� ����.
�: �� SQL� �
246 ��� ��: UDT� ��� ��� ��� ��� �� �� �� SQL
� ��� ��, ��� �� ��� ��� ��� ���.
EXEC SQL BEGIN DECLARE SECTION;long id;char name[30];SQL TYPE IS CLOB(32K) form;char command[80];
EXEC SQL END DECLARE SECTION;
/* Code to fill host variables */
strcpy(command,"INSERT INTO APPLICATIONS VALUES");strcat(command,"(?, ?, CURRENT DATE, ?)");
EXEC SQL PREPARE APP_INSERT FROM :command;EXEC SQL EXECUTE APP_INSERT USING :id, :name, :form;
DB2� ��� �� �� ��� ��� ��� UDT � ��� ��
��� CLOB(32K)� DB2 ����. ��� ��� UDT� ��� ���
� UDT ��� ��� �� ��� ���. ���, ��� ��� ���
UDT� ��� ���.
�: �� UDT� ��� �
246 ��� ��: UDT� ��� �� UDF�� � ���� ��� � UDF�
���, ��� ��� ��� SUM ��� �� �� SUM �� �� � �
� ���(sourced) UDF� �� �� ���.
CREATE FUNCTION SUM (CANADIAN_DOLLAR)RETURNS CANADIAN_DOLLARSOURCE SYSIBM.SUM (DECIMAL())
CREATE FUNCTION SUM (US_DOLLAR)RETURNS US_DOLLARSOURCE SYSIBM.SUM (DECIMAL())
�� ����� �� �� � ��� � ��� �� �� �(�� ��)� �
� ����� ���.
CREATE TABLE US_SALES_94(PRODUCT_ITEM INTEGER,TOTAL US_DOLLAR)
CREATE TABLE GERMAN_SALES_94(PRODUCT_ITEM INTEGER,
� 12 � ���� �� �� �� 247
TOTAL US_DOLLAR)
CREATE TABLE CANADIAN_SALES_94(PRODUCT_ITEM INTEGER,TOTAL US_DOLLAR)
INSERT INTO US_SALES_94SELECT PRODUCT_ITEM, SUM (TOTAL)FROM US_SALESWHERE YEAR = 1994GROUP BY PRODUCT_ITEM
INSERT INTO GERMAN_SALES_94SELECT PRODUCT_ITEM, US_DOLLAR (SUM (TOTAL))FROM GERMAN_SALESWHERE YEAR = 1994GROUP BY PRODUCT_ITEM
INSERT INTO CANADIAN_SALES_94SELECT PRODUCT_ITEM, US_DOLLAR (SUM (TOTAL))FROM CANADIAN_SALESWHERE YEAR = 1994GROUP BY PRODUCT_ITEM
� UDT� �� � ��� ����, UDT ���� ��� ��� � �
��� � �� ��� ����� ����. UDT� �� ����� ��
�� ���� ��� �� �� ��� ���.
�: UNION�� UDT ��
�� ����� ��� �� ��� �� ��� ��� �� ��� ���
��� ���.
SELECT PRODUCT_ITEM, MONTH, YEAR, TOTALFROM US_SALES
UNIONSELECT PRODUCT_ITEM, MONTH, YEAR, US_DOLLAR (TOTAL)FROM CANADIAN_SALES
UNIONSELECT PRODUCT_ITEM, MONTH, YEAR, US_DOLLAR (TOTAL)FROM GERMAN_SALES
UDT� �� UDT��� union� ��� ���� ��� ��� �� ���,
� ���� �� ��� ����. ��� ��� UDT� � �� �� ��
�� ���� ���� UDT ��� ����� �� ��� ����
�.
248 iSeries� DB2 UDB SQL ����� �� V5R2
UDT, UDF � LOB ��� �� ��
�� ��� �� DB2 ���� ��(UDT, UDF, LOB) ��� ��� �
� �� �����. ���, � ��� ������ � � �� ���� �
� ��� �� ���� ���.
��� ��� �� � �����.
v �UDT, UDF, LOB �
v ���� ������� ��
UDT, UDF, LOB �
���� ��� �� �� ������ ���� ��� ����� ��� ���
� �����. �� �� ��� ��, �� ��, � ���. UDT� ��
, ���� ��� ��� ��� ��� �� �� DB2 ��� ���.
LOB� ��� �� �� ��� �� �� � ��� ��� �� ��� ��
�� �� ����. UDF� �� ��� ��� � ��� ���.
���� UDT, UDF, LOB ��� ��� ���� ��. ��� �� �
�� � �� ������ ��� ����� LOB� ����, �� UDF
�� ��� UDT� �����. ������ ��� �� � ��� ��
� ����� ���� ����. ��� UDT� UDF� � ��� ���
�, �� ��� ��� �.
��� ������ �
�� �� ��� ������� UDT, UDF, LOB� �� ��� �� �
��.
�: UDT� UDF ��
�: ������� ��� � LOB �� ��
�: UDF� UDT� �� ���� ��
�: LOB �� ���� UDT ��� � ��
�: �� � �� ��� x ��� ��� ���� ���� �����.
�: UDT� UDF ��
�� ��� �� �� DB2 �� ���� ��� ���. ��� ��
� ��� ��, ��, � �� �� �� ��� �� �� ��� �
�� �� ��� �� �� �� ��� ��� �. �� ��� � �
��, ��� �� ��(���, ���, ��, ��, �� �� ��)� ���.
���, ���� �� ��� �� ����� UDT� �� �� �� ��
�� ��. �� ��� ��, ���, �� ��� �� �� UDF �
�� �� �� �� ���. �� �� ��� �� ��� �� �
� ���. �� CREATE� �� �� � ��.
� 12 � ���� �� �� �� 249
CREATE DISTINCT TYPE E_MAIL AS BLOB (1M)
CREATE FUNCTION SUBJECT (E_MAIL)RETURNS VARCHAR (200)EXTERNAL NAME ’LIB/PGM(SUBJECT)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
CREATE FUNCTION SENDER (E_MAIL)RETURNS VARCHAR (200)EXTERNAL NAME ’LIB/PGM(SENDER)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
CREATE FUNCTION RECEIVER (E_MAIL)RETURNS VARCHAR (200)EXTERNAL NAME ’LIB/PGM(RECEIVER)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
CREATE FUNCTION SENDING_DATE (E_MAIL)RETURNS DATE CAST FROM VARCHAR(10)EXTERNAL NAME ’LIB/PGM(SENDING_DATE)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
CREATE FUNCTION CONTENTS (E_MAIL)RETURNS BLOB (1M)EXTERNAL NAME ’LIB/PGM(CONTENTS)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
CREATE FUNCTION CONTAINS (E_MAIL, VARCHAR (200))RETURNS INTEGEREXTERNAL NAME ’LIB/PGM(CONTAINS)’LANGUAGE CPARAMETER STYLE DB2SQLNO SQLDETERMINISTICNO EXTERNAL ACTION
250 iSeries� DB2 UDB SQL ����� �� V5R2
CREATE TABLE ELECTRONIC_MAIL(ARRIVAL_TIMESTAMP TIMESTAMP,MESSAGE E_MAIL)
�: ������� ��� � LOB �� ��
�� ����� �� �� DB2� �� ���� �� ��� ��� �
��. �� �� �� DB2 ��� � � �� INSERT� �
HV_EMAIL_FILE �� � � ���.
EXEC SQL BEGIN DECLARE SECTIONSQL TYPE IS BLOB_FILE HV_EMAIL_FILE;
EXEC SQL END DECLARE SECTIONstrcpy (HV_EMAIL_FILE.NAME, "/u/mail/email/mbox");HV_EMAIL_FILE.NAME_LENGTH = strlen(HV_EMAIL_FILE.NAME);HV_EMAIL_FILE.FILE_OPTIONS = 2;
EXEC SQL INSERT INTO ELECTRONIC_MAILVALUES (CURRENT TIMESTAMP, :hv_email_file);
DB2 LOB �� �� ��� �� ��� �� ��� LOB� �� UDT ���
���. ���, � �� UDT �� ��� �� LOB � �� ��
�� ��. BLOB ��� �� �� ���� ��� �� ��� ��
���� ����. �� DB2� �� ��� �� �� �� ��� ��
�� � ����.
�: UDF� UDT� �� ���� ��
� �� ���� �� � �� ��� �� �� � ��� � � � �
� �� ��� � � ��� ���.
SELECT COUNT (*)FROM ELECTRONIC_MAIL AS EMAIL, CUSTOMERSWHERE SUBJECT (EMAIL.MESSAGE) = ’customer order’AND CUSTOMERS.EMAIL_ADDRESS = SENDER (EMAIL.MESSAGE)AND CUSTOMERS.NAME = ’Customer X’
� SQL ��� UDT� ��� UDF� ���. ��� � UDF� UDT� �
� �� ���� ����. �� ��� ��� UDT �� ��� ��
�����. �� �� �� � ��� �!�� ��� UDF ���� ��
�. � UDF� ��� ��� ��� �� �� ��� ��� �� �� ��
�.
��� �� ��� ��� 1994� �� ��� �� �� ��� ���� �
�� ��� ���.
SELECT SENDER (MESSAGE), SENDING_DATE (MESSAGE), SUBJECT (MESSAGE)FROM ELECTRONIC_MAILWHERE CONTAINS (MESSAGE,’"performance" AND "products" AND "marketplace"’) = 1
� 12 � ���� �� �� �� 251
�� ��� �� ���� ��� ��� �� �� �� � UDF� �
� ��.
�: LOB �� ���� UDT ��� �� ��
�� �� �� ������ ����� ��� �� ��� �� �� �� �
� �� ��� ���� ��� ���(�� ��� � � ���). ��
� UDT� LOB� �����, ��� ���� LOB �� ���� ��� �
��.
EXEC SQL BEGIN DECLARE SECTIONlong hv_len;char hv_subject[200];char hv_sender[200];char hv_buf[4096];char hv_current_time[26];SQL TYPE IS BLOB_LOCATOR hv_email_locator;
EXEC SQL END DECLARE SECTION
EXEC SQL SELECT MESSAGEINTO :hv_email_locatorFROM ELECTRONIC MAILWHERE ARRIVAL_TIMESTAMP = :hv_current_time;
EXEC SQL VALUES (SUBJECT (E_MAIL(:hv_email_locator))INTO :hv_subject;
.... code that checks if the subject of the e_mail is relevant ....
.... if the e_mail is relevant, then...............................
EXEC SQL VALUES (SENDER (CAST (:hv_email_locator AS E_MAIL)))INTO :hv_sender;
��� �� BLOB �� ��� ��(UDT� �� ��)���, UDT� ���
UDF� �� ���� ��� BLOB �� ���� ��� UDT� �����
�� ��.
DataLink ��
DataLink �� ��� ������ � ��� �� �� �� ��� �
� �� �� � ���. DataLink� � ��� �� ��� �����
��� ���� �� ���. � ����� ��� �, �� ��, �� �
, ��� �� ���. �� �� �� ���� �� ��� ����
�� ��� ���� ��� � �� ���� ��� DataLink �� �� �
� ��� �� ���. ���� SQL ��� �� �� �����
����� ��� ��� ��� �� ��� ���. DataLink �� �� �
� �� ���� �� ��� ��� ����. �� ��, � ���
DataLink �� ��� ������ ��� ����� ���� ��� ���� �
���.
252 iSeries� DB2 UDB SQL ����� �� V5R2
DataLink �� �� �� SQL �� �� ����� ��� ��� ����
�� ��� ��� �� ��� ���. � ���� �� ���� SQL
�� �� ��� �� �� �� �� ���� ���. �� ��, ��
�� ��� � � ��� � �� ��� �� ��� ��, SQL �� �
� � ��� �� �� ��� ��� ���. ��� ���� �� ��
�� ����� ��� �����, SQL �� �� ���� ���� ��� �
� �� ���� �� ��� ���� ��. �� ��� DataLink�
��� ���. SQL �� ���� SQL �� �� �� ��, �, ��
� �� � �� �� ��� ���. ��� �� ��� DataLink � �
� ����. �� � �� ��� ��� ���� �� URL ���. ��
� ���� �� ������� SQL ����� �� URL �� �
����� � �� ������ �� URL �� � � ��� ��
���.
��� �� ����� � �� ��� ���.
v � � ���� �� ��� ��� � ��� ���.
v � � ���� �� �, �� LOB � �� �� �� �� ��� ���
�� ��� ���.
v � � ���� ��� ��� ��� � ����� ��� ��� �
���.
v ���� ���� ������ ��� � � ��� �� ���, ���
���� SQL �� �� ��� ���� ���� �� ���, � �
��� ��� ���, ���, ��� � ��� �� �� �� �
��� ���.
DataLink� �� ����� ″���″ � �� �� ����� ���
���. ����� ��� SQL � �� �� �� ��� ����� ��, �
�, �� �� ��� � DataLink �� �� ���. � �����
������ ����. � ��� ��� �� ����, ����� ���� �
� ��. � �� ��� ����, DataLink � �� � ��� ��
�� �� ��� �. DataLink � �� � ��� ��� ��� SQL �
��� �����.
DataLink �� ��� ��� ��� � �����.
v 254 ��� �NO LINK CONTROL�
v 254 ��� �FILE LINK CONTROL(� ��� ��� ��)�
v 254 ��� �FILE LINK CONTROL(������ ��� ��)�
v 254 ��� �DataLink� �� �� ��� ��
� 12 � ���� �� �� �� 253
NO LINK CONTROL
�� NO LINK CONTROL� ���, �� SQL � ��� � ��� ���
���. URL� ����� ����� ����, �� ��� ��� ��
�� �� ��� ��� �� ���.
FILE LINK CONTROL(� ��� �� ��)
�� �� �� � ���(FS) ��� �� FILE LINK CONTROL� ��� �
��� �� �� � ��� �� ��� �� �� ��� URL� �
�. �� �� SQL � ��� � ��� �. ����� ����, ���
��� ����. �� ����� ���� �� �� ��, ��, �� �� ���
�� ���. ��, ����� �� �� ��� ���. URL� �
� �� � � ��� ��� ��� ��, �� ��� ��� ���
�. DataLink� �� �� �� ����, ����� ���� �� ��. DataLink
� � �� ���� �� ����� ���� �� �� ��� ����� �
���.
� � ���� �� ��� ���� �� ��� ��� ��� ���. �
�� �� �� �� �� �� �� ��� ���. � ���� ����� ��
�� �� ���� �� ��� ���.
FILE LINK CONTROL(������ �� ��)
DataLink �� ������ ��� �� FILE LINK CONTROL� ���, URL
� ��� ���� �� �� � ��� ����. ����� ��� ��
� ��� �� ��� ���� ����. ����� ���� �� �� ���
� �� �� ��� ��� ����� �� SQL �� URL ���� �
��. �� SQL �� �� URL ��� ��� �� �� �� ��
��. �� ��� ��� ���� ���� �� �� � ���� �
��. �� ��� �� URL� ��� ��(FETCH, SELECT INTO )
�� SQL �� ���, � ��� ��� �� �� ���� ����
�� ��� ���.
� ��� ��� ���� ���� ���� ��� �� ��� ���
�� �� ��� �� ��� ���. ���� ��� �� �� �
�� SQL �� �� �� �� ����, ���� DataLink � ���
SQL � �� ������ ��� �� ����� ��� ���� ��
��� ��� ���.
DataLink� �� �� ��� �
DataLink �� �� �� ��� 3 �� � ����� �� ���.
254 iSeries� DB2 UDB SQL ����� �� V5R2
1. DB2 ������ ��� DATALINK�� ��� �� ��� ���. ��
CREATE TABLE� ALTER TABLE� �� SQL�� ��� ���. �
� �(null) ��� ��� �� ���. �� �� ��� SQL �
���� ���� �. �� DATALINK ��� � ��� � ���
��� �� ����. SQL ��� �� �� �� ��� DATALINK
�� ���. �� INSERT� UPDATE� �� SQL�
����� � DLVALUE ��� �� ���.
2. �� �� � ���(DLFM)� ��� � �� �� �� ���, � �
�� �� ��� ���. � ��� ��, �� ��, �� �� ���
���. �� ��� ��� �� DLFM� �� �� � ��� SQL �
� �� �� ��� � ��� ��� ���. ���, SQL �� ��
���� � � ����� �� ��� � � ��� ��� ���
�� ��� ���.
3. ��� ����� �� ��� ���� �� � �� � ����
� �� � DataLink ��� ����� �. � ����� �� �
�����, ��� �����, ���� � �� � ����
�� ��. �� �� ��� ���� ���, ��� ���. �
�� ��� �� ����� ����, ��� ����� �� �� ‘�
�’ �� ���� � � �� �� ����. �� �� �� ��
�����.
DataLink� �� � ��� �� ��� �� ��� � � �� ��� ��
�.
v TCP/IP� DataLink� �� � ���� �� ��� ����� �. �
� ��� ����� ��� ��� �� ��, DataLink �� �� SQL �
� �� ���� ����. �� � �� �� �� �����. �����
��� �� ���� URL� TCP/IP �� �� ���� � ��� DataLink
� ��� ��� �� ����� �. CFGTCP �� TCP/IP �� �
��� TCP/IP �� ��� � �� ��� ���.
v SQL �� ��� ���� �� ������ ���� ����� ��� ��
� �� ��� ��� ������(RDB) ����� ��� �.
WRKRDBDIRE �� � ����� ��� ��� ��� �� ���
���. ���� �� �� �� TCP/IP �� ��� ��� ������
(RDB) ���� �� ���.
v DLFM ��� ��� ����� ��� �� ���� ���� �.
STRTCPSVR *DLFM �� DLFM ��� �� �� ��� ���.
DLFM ��� CL � ENDTCPSVR *DLFM �� �� ���.
� DLFM� ��� DLFM ��� �� ��� � �� ��� ���. �
DLFM ��� QShell ����� ��� �� ����� ����� �� �
� 12 � ���� �� �� �� 255
�� ���. ��� � ����� ���� CL � QSH� ���.
�� �� DLFM ���� � ��� �� � �� ��� ����.
� ���� �� ����� ��� �� ���� � dfmadmin-help� �
�� ���. �� �� ���� ��� �� CL � ����. CL �
�� ���� ����� ��� �� �� �� �� DLFM ��
� ���. ���� ���� QSH � �� ��� ���� � ��
�� �� CL � �� ��� CL � ��� ���.
� ���� ��� ��� �� ������ ���� �� ���� , ��
*IOSYSCFG � �� ���.
�� �� - ��� ��� ����� ��� �� �� ������. ��
�� DLFM ��� � ���� DataLink ��� ��� ���� �.
��� ��� �� ���� � dfmadmin -add_prefix� ����. ���
��� CL �� ADDPFXDLFM��.
�� ��, ��� ����� ��� /mydir/datalinks/ ����� �� TESTSYS1
���. ���� ��� ��� �� ADDPFXDLFM PREFIX((‘/mydir/
datalinks/’)) � ���. URL �� ��� �� ��
http://TESTSYS1/mydir/datalinks/videos/file1.mpg
��
file://TESTSYS1/mydir/datalinks/text/story1.txt
� �� ��� ��� ��� �� �� ���.
���� � dfmadmin -del_prefix� �� ��� ��� � ���.
�� �� � ��� ���� �� ��� ����� �� ��� ���
���� �� ���� ���� ��� ���.
��� ������ �� - ��� ������� �� ��� � ��� �����
�(RDB) �����. DLFM� �� ��� ��� SQL �� �� ��� ��
�� �� ������ ���� ����� �. ��� ������� DLFM�
� �� ��� �� �� �� ��� DLFM� �� ��� �. ��� �
������ ��� ���� �� dfmadmin -add_db�� CL ��
ADDHDBDLFM��. � ��� �� SQL �� �� ����� � � �
��.
�� ��, �� /mydir/datalinks/ ��� ��� �� TESTSYS1� ���� �
���� TESTDB �� PRODDB� �� ���� SQL �� � ���� ����
��� ���� ��. �� � ���. ADDHDBDLFM
HOSTDBLIB((TESTDB) (PRODDB)) HOSTDB(TESTSYS1)
256 iSeries� DB2 UDB SQL ����� �� V5R2
� 13 � ��� �� ��(UDF) ��
��� �� ��(UDF)� ��, ��, SQL� � �� ���� �����. �� �
� UDF� � �� �� � �� ���. SQL� �� �� UDF�
���� �� ��� � ���� �. � �� SQL� �� �� �
�� ���. ��� SQL �� ��� �� ��� �.
v �UDF �� �� ��� �����.
v ������ ��� �� UDF� ���.
v �� �� �� ���� ��� �� �� ��� ����.
v �� ���� �����.
�� � �� �� �� �����.
v 272 ��� ��: � �� UDF�
v 274 ��� ��: ����
UDF �� �� ��
UDF� ���� ��� � ��� �� �� ���� � � �� ��� ��
�. UDF �� � �� ��� � ��� ���� ���� �.
��� ��� ���.
v �UDF� ���� �� ��
v 260 ��� ���� �����
v 260 ��� �� ���
UDF� ���� �� ��
UDF� SQL� ��� �����, � SQL�� ���� �� � � ���
�� ���� �� ���. ��� UDF� ������� � ��� ����
� �.
��� � ��� ��� ��, UDF� ��� �� UDF� ���� �� �
��� �� ��(��� ��)� ���. � ��� ���� UDF� ��� �
� SQL�� ��� ��� �� ����. � ��� �� ��, UDF� ���
��( �� ��)� ��� � �� �� �� ���. � �� �� �
� ��� ��� �� ��, ������� � �� ��� UDF� ���
� ����. UDF� ��� �� � ��� ���, SQL�� ���� �
����� �� ��� ���.
© Copyright IBM Corp. 1998, 2002 259
������ �� ��� ��� UDF �� ��� �� UDF� � � ���
�� � � ���� �� �. ���, ����� � UDF� ��� �� �
� ����, �� INI �� UDF_TIME_OUT �� ��� ��. INI �
�� ��� ��� ������ �� � �� ��� ��� �� �� �
QAQQINI� �����. ���, UDF_TIME_OUT �� ��� ����
������� ��� �� ���� �� ��� ���.
UDF� ���� �� ��� �����, UDF� ��� SQL� �� ��� ��
��� �� �� ��� ���, �� ���� SQL�� ��� �� �
� ��� � �� �� �� ���. �, UDF� �� �� �
��, ��, �� �� � ��� ���� ���.
��� ���
FENCED� ��� UDF� � ��� SQL�� �� �� ����. ��
�, UDF� SQL� ��� ����� ��� ��� ���� ����. �
�� �� ��� ��� Information Center� ����� ��� � ��� �
���� �� ������ ���� �����.
UDF� SQL�� �� �� �����, SQL�� �� �� �� ���.
���, �� ���� ����� �� ��� ����� ����.
v UDF� SQL�� ���� ��� ��� �� ��� ����. ���� �
� �� � ��� ���.
v UDF� SQL�� ���� � ����, ����� ��� � ��� �
��. UDF �� UDF ���� ��� ��� �, �� SQL� ���
���� �� ���.
v UDF� 2� ���� ���� ! �� � �� ���.
v UDF ����� ��� �� �� ���, �� ���� �� ��(ACTGRP
���)� ��� ���� �. ACTGRP(*NEW)� ��� ���
�� UDF� ��� ���� ���.
UNFENCED�� �� �� �� ��� 272 ��� ��� �� �� ���
� �� ��� �����.
�� ��
UDF� � ��� �� ��� ���. �� �� UDF ����� ��
� ���� ��� �� ���. ����, UDF �� ALLOW
PARALLEL� ���� ��� �� ����� ���. ��� �� ��
� ��� iSeries Information Center� ����� ��� � ��� ����
� �� ������ ���� �����.
260 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
��� �� � ��� �� ��� ����, �� �� � DISALLOW
PARALLEL ���� �.
�� �� ��
�� �� �� �� �� SQL �� �� �� �� �� �� ��
��� ���. �� ��� ��� �� �� ��� ������ ��� �
���� ��� ��, ����� ���� �� � ��� �� ��
�� ����.
SQL �� �� �� ����� UDF� � � ���. ��� ��� ��
�����.
v �SQL ���� UDF ��
v 262 ��� ��� ���� UDF ��
�� 270 ��� �� �� ����� �����.
SQL ���� UDF �
SQL ��� CREATE FUNCTION� �� ���� ��, �, � UDF
��. ���, SQL ��� ����� ���, �� ��� ��(����� �)
CREATE FUNCTION� � �� ����. SQL �� �� UDF�
��, �� �� ����� ��� ����, ���� ��� ���� ��
�� ����� ������ ����. ���, �� �� �� �� �
� �� ��� �� ���� �� ���.
��� UDFSQL ��� �� �� CREATE FUNCTION�� ��� �� ��� ��
���.
CREATE FUNCTION function-name(parameters) RETURNS return-valueLANGUAGE SQLBEGIN
sql-statementsEND
�� ��, ��� ���� ����� �� ����.
CREATE FUNCTION PRIORITY(indate DATE) RETURNS CHAR(7)LANGUAGE SQLBEGINRETURN(
CASE WHEN indate>CURRENT DATE-3 DAYS THEN ’HIGH’WHEN indate>CURRENT DATE-7 DAYS THEN ’MEDIUM’ELSE ’LOW’
END);
END
� 13 � ��� �� ��(UDF) � 261
|
|
|
|
|
|||||
|
||||||||||
�� � ��� ��� �� ��� ���.
SELECT ORDERNBR, PRIORITY(ORDERDUEDATE) FROM ORDERS
� UDFSQL � �� �� CREATE FUNCTION�� ��� �� ��� �� ��
�.
CREATE FUNCTION function-name(parameters) RETURNS TABLE return-columnsLANGUAGE SQLBEGIN
sql-statementsRETURN
select-statementEND
�� ��, ��� ���� ��� �� ����.
CREATE FUNCTION PROJFUNC(indate DATE)RETURNS TABLE (PROJNO CHAR(6), ACTNO SMALLINT, ACTSTAFF DECIMAL(5,2),
ACSTDATE DATE, ACENDATE DATE)LANGUAGE SQL
BEGINRETURN SELECT * FROM PROJACT
WHERE ACSTDATE<=indate;END
�� � ��� ��� �� ��� ���.
SELECT * FROM TABLE(PROJFUNC(:datehv)) X
� �� RETURN� ���� SQL � ��� ���.
�� ���� UDF �
SQL ��� ��� ����� UDF ��� �� ���. � ��� SQL
���� �� �� �� ����, ���� �� ���� ��� ��� �
� ��� ���. ����� ��� ���� �� ��� ���� ���
���.
�� �� ��� Java � � ���. ��� �� ��� IBM
Developer Kit for Java� Java SQL �� ��� �����.
DB2�� �� ���� �� ��
DB2� UDF ��� �� ��� �� ����� ���. ���� ���
� �� �� �� �� ����. �� ���� �� ���� ���
��� ����. ��� ����� �� �� ��� ���� ��� �
����� ���.
UDF� ���� ��� ��� �, �� ��� �� ��� ������
�� ����� ��� ��� �� ���� � ���� �. ���
262 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
� �� �� �� ����, ��� ���� ���� �� ��� � �
�� � � ���. �� �� ��� �� �� ��� ��� ��
�, ������ �� � ��� � ���.
��� �� UDF ���, ���� � �� ��� ����. �� , �� �
��� �� ��� ���� ���� ��� � ���� ���.
��� �� SQL: ��� �� SQL� �� �� SQL(���� �� ��)
���. � ��� �� ��� UDF� ��� ���. ��� �� SQL
�� ��� �� ���� ��� ��� �� ���� ����.
SQL-argument
� �� UDF� ��� � DB2 �� ����. � � n� ��
���, �� n� �� �� ��� � ��. �� � �� �
�� �� ��� ���� ����. � �� � �� ���
���� �� �� ����. �: � ���� ����� ����.
UDF �� ��� ��� DB2 �� ���.
SQL-result
DB2 �� � � �� UDF �� ����. ������� �
�� ����� ���. ���� �� �� ����� �
�� � � ��� ����� ����. ������� CREATE
FUNCTION� ����� � �� ����� ����� ��
�. CAST FROM�� CREATE FUNCTION� ����, DB2� UDF�
CAST FROM� ��� ���� ���, ��� � �� DB2�
UDF� RETURNS� ����� ���� ���.
SQL-argument-ind
� �� UDF� ��� � DB2 �� ����. ���
SQL-argument� �(null)�� ���� ��� �� UDF �� ���
���. n�� SQL-argument-ind� �� ��� n�� SQL-argument
���. � ������ ��� �� � ��� �� ����. ��
� �� ����.
0 �� �� �� ���.
-1 �� ���.
��
� SQL-argument
SQL-result
� SQL-argument-ind
SQL-result-ind SQL-state �
� function-name specific-name diagnostic-message ��
� 13 � ��� �� ��(UDF) � 263
|
|
|
|
RETURNS NULL ON NULL INPUT�� ��� ����, UDF� �
�� ��� ���. ���, CALLS ON NULL INPUT�� ���
����, �� �� � ���� UDF� � ��� ��� ���
�. �: � ���� ����� ����. UDF �� ��� �
�� DB2 �� ���.
SQL-result-ind
DB2 �� � � �� UDF �� ����. ������� �
�� ����� ���. �� ��� �� � ��� �� �
���. � �� ���� ������� �� �� �� ���.
0 �� �� ����, ������� SQL-result �� ��
�. ������� � ����� �� ����� ���. �
��� �� �� ����� ��� ����� � ��� �����
����.
SQL-state
� �� SQLSTATE� ��� CHAR(5) ��.
� ���� '00000'� ��� ������� ���� �� �� �
�� �� �� ��� ���. ���� SQLSTATE� �� �
� ���� ���, ��� �� �� �� ��� ������ ����
�� ��� ���.
01Hxx �� ��� �� �� �� ��. �� �� SQL ��� ��
�. xx� ��� ��� � ���.
38xxx �� ��� �� �� �� ��. SQL ��� ���. xxx
� ��� ��� � ���.
��� ��� �� ��� SQLSTATE �� ��� ��� SQL ��
� � ��� �����.
function-name
� �� UDF� ��� � DB2 �� ����. �� �� ��
�� ��� ��� � � �� �� ��� VARCHAR(139) �
�.
���� �� �� ��� ��� ���.
<schema-name>.<function-name>
���� �� ��� �� ��� � � �� ��� � UDF �� �
� ��� � � ���� ���. �: � ���� ����� ���
�. UDF �� ��� ��� DB2 �� ���.
264 iSeries� DB2 UDB SQL ����� �� V5R2
specific-name
� �� UDF� ��� � DB2 �� ����. �� �� ��
�� ��� ��� � � �� �� ��� VARCHAR(128) �
�.
function-name� �����, ���� �� ��� �� ��� � � �
� ��� � UDF �� �� ��� � � ���� ���.
specific-name �� ��� ��� CREATE FUNCTION �����.
�: � ���� ����� ����. UDF �� ��� ���
DB2 �� ���.
diagnostic-message
� �� UDF� ��� � DB2 �� ����. SQLSTATE ��
�� ��� UDF �� ��� � ��� ���� �� ��� �� UDF
�� ��� �� VARCHAR(70) ��.
� � UDF� ��� ������ �� ����� �� ��� �� UDF
�� ��� ���. SQL-state ���� UDF �� ���� �
�� ��� ���� DB2 �� ���.
��� �� DB2SQL: DB2SQL ��� �� ��, ��� �� SQL
�� ���� �� �� ���� �� ��� ���� �� ������ �
�� ������ ����. ���, DB2SQL �� ���� ��� ���
����. ��� ��� ��� ��� � � ��� UDF �� ���
�, � ���� �� ��� ��� UDF ����. �� ��� ����
��� �� SQL �����. � ���� ���� � UDF �� ���
���.
��� ��� ��:��
� SQL-argument
SQL-result
� SQL-argument-ind
SQL-result-ind SQL-state �
� function-name specific-name diagnostic-messagescratchpad call-type dbinfo
��
� 13 � ��� �� ��(UDF) � 265
|
|
|
|
|
|
|
� ��� ��:
��
� SQL-argument
� SQL-result
� SQL-argument-ind
� SQL-result-ind SQL-state �
� function-name specific-name diagnostic-messagescratchpad
call-typedbinfo
��
scratchpad
� �� UDF� ��� � DB2 �� ����. UDF ��
CREATE FUNCTION�� SCRATCHPAD ���� ��� ��� � �
� ��. � �� �� ��� �� ����.
v scratchpad �� �� �� INTEGER
v �� UDF� ��� � DB2 �� �� 2� 0�� ���� ��
scratchpad
scratchpad� UDF �� �� ������ UDF �� � ����
�� ��� ����� ��� ���.
� ��� �� CREATE FUNCTION FINAL CALL� ��� �� UDF
�� FIRST �� � ��� �� scratchpad� �����. � �
� � scratchpad ��� �� � ��� ��� ��. � �� DB2�
scratchpad� �� ��� ��� ���. scratchpad� � ��
� �� ����. ��� �� ��� �� DB2� scratchpad �
��� ���.
NO FINAL CALL� ������ � ��� ���� ��� ��,
scratchpad� � OPEN �� � ��� �� ����� scratchpad
��� OPEN �� �� � ��� �� ��� ��. ��� ��
� �� ���� � �� �� ��� ���. OPEN ���
scratchpad� �� ���� ��� ��� CREATE FUNCTION�
FINAL CALL ���� �. FINAL CALL ��� ��� OPEN,
FETCH � CLOSE ��� �� scratchpad ��� � �� ��� ���
� � �� FIRST � FINAL �� �� ��.
call-type
� �� UDF� ��� � DB2 �� ����. ��� �� �
�, UDF �� CREATE FUNCTION�� FINAL CALL ���� ��
� ��� � �� ��. ��� � ��� �� �� ��.
266 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scratchpad � �� ���� scratchpad �� �� ��
diagnostic-message � �� ���. � �� INTEGER ���
���.
��� �� ��:
-1 � �� �� UDF� �� ��� ���. � ��� ��
SQL � � ����� �� �� ����.
0 �� ����(�� �� �� � � ����).
1 ��� ����. ���� SQL-argument �� SQL-argument-ind
� ���. UDF� SQL-result, SQL-result-ind �, SQL-state
�� diagnostic-message �� �� �� ���� ��
�. �� �� UDF� �� � DB2 �� ���.
� ��� ��:
-2 � �� �� UDF� �� ��� ���. � ��� ��
SQL � � ����� �� �� ����.
-1 ��� � �� �� UDF �� � ���. NO FINAL
CALL� ���� scratchpad� ������ ��� �� �� ��
�. All SQL �� ����.
0 ��� � ����. DB2� � ��� � ��� ��� �
��� SQLSTATE ’02000’�� ���� �� � ��
�� ��� ���.
1 ��� �� ����. � ��� OPEN ��� �� ��� �
� CLOSE �� � �� ��� �� � ����.
2 ��� ����. ���� SQL-argument �� SQL-argument-ind
� ���. UDF� SQL-result, SQL-result-ind �, SQL-state
�� diagnostic-message �� �� �� ���� ��
�. �� �� UDF� �� � DB2 �� ���.
dbinfo � �� UDF� ��� � DB2 �� ����. UDF ��
CREATE FUNCTION�� DBINFO ���� ��� ��� � ��
��. �� � ��� sqludf include ��� ����.
��� �� GENERAL(�� SIMPLE CALL): ��� �� GENERAL �
�, ���� CREATE FUNCTION�� ��� ��� �� ��� ���
� ����. � ��� �� ��� UDF� ��� ���. ��� �
�� ���.
� 13 � ��� �� ��(UDF) � 267
|
|
|
|
||
|
||
||
|
|
|
|
||
|
||
|
|
||
|
|
||
|
||
|
|
|
|
|
|
|
�� �SQL-result = func ( )SQL-argument
��
SQL-argument
� �� UDF� ��� � DB2 �� ����. � � n� ��
���, �� n� �� �� ��� � ��. �� � �� �
�� �� ��� ���� ����. CREATE FUNCTION�� ��
� ���� �� �� ����. �: � ���� ����� ���
�. UDF �� ��� ��� DB2 �� ���.
SQL-result
� � UDF �� ���. DB2� ������ ���� ��
�. ��� ��� �� ��� �� �����
�. ������� CREATE FUNCTION� ����� � ��
������ � ���. CAST FROM�� CREATE FUNCTION�
����, DB2� UDF� CAST FROM� ��� ���� �
��, ��� � �� DB2� UDF� RETURNS� ����� �
��� ���.
�� ��� �� ����� ��� ���� ��, ��� �
� GENERAL �� ��� �� ��� ��� ���� ����
�.
��� �� GENERAL WITH NULLS: ��� � GENERAL WITH
NULLS� ��� UDF� ��� ���. � ��� �� ��, ��� �
� ���� (��� ����) ��� ���� ����.
�� SQL-result = funcname ( �
SQL-argument�
� SQL-result-ind )SQL-argument-ind-array
��
SQL-argument
� �� UDF� ��� � DB2 �� ����. � � n� ��
���, �� n� �� �� ��� � ��. �� � �� �
�� �� ��� ���� ����. CREATE FUNCTION�� ��
� ���� �� �� ����. �: � ���� ����� ���
�. UDF �� ��� ��� DB2 �� ���.
SQL-argument-ind-array
� �� UDF� ��� � DB2 �� ����. � ���
268 iSeries� DB2 UDB SQL ����� �� V5R2
SQL-arguments� �(null)�� ���� ��� �� UDF �� ���
���. � � ��� �� � ��� �(�����) ���. n
�� � �� n�� SQL-argument ���. � � ��� ��
� �� ����.
0 �� �� �� ���.
-1 �� ���.
UDF� � ��� ��� ��� �. �: � ���� ����� �
���. UDF �� ��� ��� DB2 �� ���.
SQL-result-ind
DB2 �� � � �� UDF �� ����. ������� �
�� ����� ���. �� ��� �� � ��� �� �
���. � �� ���� ������� �� �� �� ���.
0 �� �� ����, ������� SQL-result �� ��
�. ������� � ����� �� ����� ���. �
��� �� �� ����� ��� ����� � ��� �����
����.
SQL-result
� � UDF �� ���. DB2� ������ ���� ��
�. ��� ��� �� ��� �� �����
�. ������� CREATE FUNCTION� ����� � ��
������ � ���. CAST FROM�� CREATE FUNCTION�
����, DB2� UDF� CAST FROM� ��� ���� �
��, ��� � �� DB2� UDF� RETURNS� ����� �
��� ���.
�� ��� �� ����� ��� ���� ��, ��� �
� GENERAL WITH NULLS �� ��� �� ��� ��� ����
���� �.
�:
1. CREATE FUNCTION� ��� �� ��� ����� ���� ��
��� ���. ��� ���� �� �� ���� � �� ��
��, ��� �� ���� �� �� ����. �� ������� �
� �� �� ��� ��� ��� �� �� ��� �� �
��� ��� �� �� ���� ��� � ���. �� �
�, ��� ��� �� ��� ��
CREATE FUNCTION X(INT) RETURNS INTLANGUAGE CEXTERNAL NAME ’MYLIB/MYPGM(MYENTRY)’
� 13 � ��� �� ��(UDF) � 269
� ����� ��� ��� �� ��
void myentry(int*inint*out,... .
������� ��� ��� myentry� �� �� ��� MYENTRY�
��� ��� �� �� � !�.
2. C++ �� ��� ��� ����� ��, C++ �� ��� extern
″C″� ���� �� �� ���� �����. ��� ���, C++
���� ���� ‘�� ���’� � ������� �
� ��.
��� �� DB2GENERAL: ��� �� DB2GENERAL� Java UDF�
���. � ��� �� ��� IBM Developer Kit for Java� Java SQL
�� ��� �����.
��� �� Java: Java ��� ��� SQLJ �1� �� SQL �� ��
�� ��� ����. � ��� �� ��� IBM Developer Kit for Java�
Java SQL �� ��� �����.
� �� ���
�� �� �� ��� SQL� �� ��� UDF��. � �� ��� SELECT�
FROM ��� ���. � �� ��� ��, �� �����.
v � ��� �� ����� � DB2� UDF �� �� ����� � �
� �� �����.OPEN, FETCH, CLOSE, FIRST � FINAL� �� ��
��� � �� �����. FIRST � FINAL� �� UDF� ��� �
� �� ���. ��� � ��� �� �� �� �� ����
� ��� � � � ����.
v DB2� ��� �� ��� � �� ���� �� ����� ���� �
�� �� ���. � �� � SQL-result �� ����. �
��� � ���� CREATE FUNCTION�� RETURNS TABLE � �
�� ��� ���. SQL-result-ind � ����� ���� ���
SQL-result ��� � ���� ����.
v � �� �� CREATE FUNCION�� RETURNS� ��� �� � ��
���� � �� ���. CREATE FUNCTION� DBINFO ���� �
��� dbinfo �� �� �� � �� �� ��� �� ��
� ���� ���.
v �� �� � � ��� � �� �� � �� �� ��.
270 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v � �� �� CREATE FUNCTION�� CARDINALITY n ��� ��
�. � �� �� Optimizer� �� ��� ��� �� ���� ���
��� � Optimizer� ��� �� � � �. � ���
CARDINALITY� ��� � ���� � cardinality� ��� �� �
FETCH ��� �� � �� �� �� �� ���� �. DB2
� �� ���� ��� �� � �� ����. ���� �� � ��(SQL
� ‘02000’) �� �� � ��� � �� ��� ���� ��
�.
� �� ��
� �� �� �� �� �� ��� ��� ���.
1. FIRST �� ��� ��� ��� ����� ���.
2. FIRST ��� ��� ��� OPEN, FETCH � CLOSE ��� �����
FINAL ��� �� �����.
3. OPEN ��� ��� FETCH � CLOSE ��� ����� ���.
4. OPEN ��� ��� FETCH � CLOSE ��� �����.
5. FETCH ��� ��� ��� FETCH ��� ����� ��� CLOSE
��� �����.
�: � ��� � UDF �� ��� �� ��� ���. ��� ��� ��
��� ��� �� �� �� ��� ���� ��� ��� � �
��.
��� �� ��
FINAL CALL �� �� ��� ��� UDF �� �� �� ��� ��
� ���.
1. FIRST �� ��� ��� ��� ����� ���.
2. FIRST ��� ��� �� ��� ��� �� �� NORMAL ��� ��
��� FINAL ��� �� �����.
3. NORMAL ��� ��� ��� NORMAL ��� ����� ��� FINAL
��� �����(FINAL CALL ��� ��). ��� FIRST ��� �
�� �� �� FINAL ��� ����� ���� �� � UDF� ��
�� ��� � ���.
�: � ��� ��� UDF �� ��� �� ��� ���. ��� ���
�� ��� ��� �� �� �� ��� ���� ��� ��� �
���.
� 13 � ��� �� ��(UDF) � 271
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
��� �� �� ���� �� �
��� �� ��(UDF) �� � UDF� ��� UDF� �� ���� ����
�.����� UDF� ��� UDF� ���. ������ �� �����
�� �� ���� UDF� ���� � ���. ��� UDF� �� ��
� SQL ��� �� � �� ���� ��� ��� ���� ��� ���
��� ���. �� �� �� �� �� ��� � �� �� ��
��� UDF� ��� �� � ���. ‘NOT FENCED’ �� ��
�� UDF� ������� UDF� �� �� ��� �� UDF� ���
���� ��� ����. ���� ���� �� ��� UDF� �� ��
�� UDF� ������ �� ��� ������ �� ����.
CREATE FUNCTION QGPL.FENCED (parameter1 INTEGER)RETURNS INTEGER LANGUAGE SQLBEGINRETURN parameter1 * 3;END;CREATE FUNCTION QGPL.UNFENCED1 (parameter1 INTEGER)RETURNS INTEGER LANGUAGE SQL NOT FENCED-- Build the UDF to request faster execution via the NOT FENCED optionBEGINRETURN parameter1 * 3;END;
UDF ��
��� �� SQL �� � �� �� �� UDF� ��� �� ��
�.
v ��: � �� UDF�
v 274 ��� ��: ����
v 275 ��� ��: � � ���
�: �� �� UDF
�: �� � �� ��� x ��� ��� ���� ���� �����.
���� � �� �� �� ���� ���. ���� ��� ��
�.
SELECT SQUARE(myint) FROM mytable
�� �� � �� ���� UDF� ��� �� ���.
v SQL �� ��
CREATE FUNCTION SQUARE( inval INT) RETURNS INTLANGUAGE SQLBEGINRETURN(inval*inval);END
272 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
v �� �� ��, �� �� SQL:
CREATE FUNCTION�:
CREATE FUNCTION SQUARE(INT) RETURNS INT CAST FROM FLOATLANGUAGE CEXTERNAL NAME ’MYLIB/MATH(SQUARE)’DETERMINISTIC
NO SQLNO EXTERNAL ACTION
PARAMETER STYLE SQLALLOW PARALLEL
��:
void SQUARE(int *inval,double *outval,short *inind,short *outind,char *sqlstate,char *funcname,char *specname,char *msgtext){if (*inind<0)*outind=-1;
else{*outval=*inval;*outval=(*outval)*(*outval);*outind=0;}
return;}
���� � �� ��� ���� �:
CRTCMOD MODULE(mylib/square) DBGVIEW(*SOURCE)CRTSRVPGM SRVPGM(mylib/math) MODULE(mylib/square)
EXPORT(*ALL) ACTGRP(*CALLER)
v �� �� ��, �� �� GENERAL:
CREATE FUNCTION�:
CREATE FUNCTION SQUARE(INT) RETURNS INT CAST FROM FLOATLANGUAGE CEXTERNAL NAME ’MYLIB/MATH(SQUARE)’DETERMINISTIC
NO SQLNO EXTERNAL ACTION
PARAMETER STYLE GENERALALLOW PARALLEL
��:
double SQUARE(int *inval){double outval;
� 13 � ��� �� ��(UDF) � 273
outval=*inval;outval=outval*outval;
return(outval);}
���� � �� ��� ���� �:
CRTCMOD MODULE(mylib/square) DBGVIEW(*SOURCE)
CRTSRVPGM SRVPGM(mylib/math) MODULE(mylib/square)EXPORT(*ALL) ACTGRP(*CALLER)
�: ���
�: �� � �� ��� x ��� ��� ���� ���� �����.
���� �� SELECT�� � ��� ���� ��� ���. ����
���� �� �� UDF� ��. � ��� DB2 SQL ��� �
�� scratchpad� �� �� ���.
CREATE FUNCTION COUNTER()RETURNS INTSCRATCHPADNOT DETERMINISTICNO SQLNO EXTERNAL ACTIONLANGUAGE CPARAMETER STYLE DB2SQLEXTERNAL NAME ’MYLIB/MATH(ctr)’DISALLOW PARALLEL
/* structure scr defines the passed scratchpad for the function "ctr" */struct scr {
long len;long countr;char not_used[96];
};
void ctr (long *out, /* output answer (counter) */short *outnull, /* output NULL indicator */char *sqlstate, /* SQL STATE */char *funcname, /* function name */char *specname, /* specific function name */char *mesgtext, /* message text insert */struct scr *scratchptr) { /* scratch pad */
*out = ++scratchptr->countr; /* increment counter & copy out */*outnull = 0;
return;}/* end of UDF : ctr */
� UDF �� �� � ���.
v ��� �� SQL �� ���, ��.
v scratchpad �� �� �� �� �� �, SQL-state, function-name,
specific-name, message-text � ���.
v ��� scratchpad� �� �� �� ��� ���.
v ��� �� ���� ���. �� ��� ��.
274 iSeries� DB2 UDB SQL ����� �� V5R2
v SCRATCHPAD� DB2� �� �����, �� ����� scratchpad �
� ���.
v UDF� SQL �� ��� ���� NOT DETERMINISTIC�� ��
��(� ��� ��).
v UDF� ��� ��� � scratchpad �� ����� DISALLOW PARALLEL
��� �� ��.
�: � � ��
�: �� � �� ��� x ��� ��� ���� ���� �����.
��� ��� � � �� � ��� �� � ��� ���. � ��
�� � ��� �� ����� �� ���� ��� �� �� �� �
�. � ���� � ��� ��� � � � ��� ����. � ��
� � ��� ����.
#include <stdlib.h>#include <string.h>#include <stdio.h>#include <sqludf.h> /* for use in compiling User Defined Function */
#define SQL_NOTNULL 0 /* Nulls Allowed - Value is not Null */#define SQL_ISNULL -1 /* Nulls Allowed - Value is Null */#define SQL_TYP_VARCHAR 448#define SQL_TYP_INTEGER 496#define SQL_TYP_FLOAT 480
/* Short and long city name structure */typedef struct {char * city_short ;char * city_long ;
} city_area ;
/* Scratchpad data */�1�/* Preserve information from one function call to the next call */typedef struct {/* FILE * file_ptr; if you use weather data text file */int file_pos ; /* if you use a weather data buffer */
} scratch_area ;
/* Field descriptor structure */typedef struct {char fld_field[31] ; /* Field data */int fld_ind ; /* Field null indicator data */int fld_type ; /* Field type */int fld_length ; /* Field length in the weather data */int fld_offset ; /* Field offset in the weather data */
} fld_desc ;
/* Short and long city name data */city_area cities[] = {
� 13 � ��� �� ��(UDF) � 275
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
{ "alb", "Albany, NY" },{ "atl", "Atlanta, GA" },...{ "wbc", "Washington DC, DC" },/* You may want to add more cities here */
/* Do not forget a null termination */{ ( char * ) 0, ( char * ) 0 }
} ;
/* Field descriptor data */fld_desc fields[] = {{ "", SQL_ISNULL, SQL_TYP_VARCHAR, 30, 0 }, /* city */{ "", SQL_ISNULL, SQL_TYP_INTEGER, 3, 2 }, /* temp_in_f */{ "", SQL_ISNULL, SQL_TYP_INTEGER, 3, 7 }, /* humidity */{ "", SQL_ISNULL, SQL_TYP_VARCHAR, 5, 13 }, /* wind */{ "", SQL_ISNULL, SQL_TYP_INTEGER, 3, 19 }, /* wind_velocity */{ "", SQL_ISNULL, SQL_TYP_FLOAT, 5, 24 }, /* barometer */{ "", SQL_ISNULL, SQL_TYP_VARCHAR, 25, 30 }, /* forecast *//* You may want to add more fields here */
/* Do not forget a null termination */{ ( char ) 0, 0, 0, 0, 0 }
} ;
/* Following is the weather data buffer for this example. You *//* may want to keep the weather data in a separate text file. *//* Uncomment the following fopen() statement. Note that you *//* have to specify the full path name for this file. */char * weather_data[] = {
"alb.forecast"," 34 28% wnw 3 30.53 clear","atl.forecast"," 46 89% east 11 30.03 fog",..."wbc.forecast"," 38 96% ene 16 30.31 light rain",/* You may want to add more weather data here */
/* Do not forget a null termination */( char * ) 0
} ;
#ifdef __cplusplusextern "C"#endif
/* This is a subroutine. *//* Find a full city name using a short name */int get_name( char * short_name, char * long_name ) {
int name_pos = 0 ;
while ( cities[name_pos].city_short != ( char * ) 0 ) {if (strcmp(short_name, cities[name_pos].city_short) == 0) {
276 iSeries� DB2 UDB SQL ����� �� V5R2
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
strcpy( long_name, cities[name_pos].city_long ) ;/* A full city name found */return( 0 ) ;
}name_pos++ ;
}/* Could not find such city in the city data */strcpy( long_name, "Unknown City" ) ;return( -1 ) ;
}
#ifdef __cplusplusextern "C"#endif
/* This is a subroutine. *//* Clean all field data and field null indicator data */int clean_fields( int field_pos ) {
while (fields[field_pos].fld_length !=0 ) {memset( fields[field_pos].fld_field, ’\0’, 31 ) ;fields[field_pos].fld_ind = SQL_ISNULL ;field_pos++ ;
}return( 0 ) ;
}
#ifdef __cplusplusextern "C"#endif
/* This is a subroutine. *//* Fills all field data and field null indicator data ... *//* ... from text weather data */int get_value( char * value, int field_pos ) {
fld_desc * field ;char field_buf[31] ;double * double_ptr ;int * int_ptr, buf_pos ;
while ( fields[field_pos].fld_length != 0 ) {field = &fields[field_pos] ;memset( field_buf, ’\0’, 31 ) ;memcpy( field_buf,
( value + field->fld_offset ),field->fld_length ) ;
buf_pos = field->fld_length ;while ( ( buf_pos > 0 ) &&
( field_buf[buf_pos] == ’ ’ ) )field_buf[buf_pos--] = ’\0’ ;
buf_pos = 0 ;while ( ( buf_pos < field->fld_length ) &&
( field_buf[buf_pos] == ’ ’ ) )buf_pos++ ;
if ( strlen( ( char * ) ( field_buf + buf_pos ) ) > 0 ||strcmp( ( char * ) ( field_buf + buf_pos ), "n/a") != 0 ) {
field->fld_ind = SQL_NOTNULL ;
� 13 � ��� �� ��(UDF) � 277
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Text to SQL type conversion */switch( field->fld_type ) {case SQL_TYP_VARCHAR:
strcpy( field->fld_field,( char * ) ( field_buf + buf_pos ) ) ;
break ;case SQL_TYP_INTEGER:
int_ptr = ( int * ) field->fld_field ;*int_ptr = atoi( ( char * ) ( field_buf + buf_pos ) ) ;break ;
case SQL_TYP_FLOAT:double_ptr = ( double * ) field->fld_field ;*double_ptr = atof( ( char * ) ( field_buf + buf_pos ) ) ;break ;
/* You may want to add more text to SQL type conversion here */}
}field_pos++ ;
}return( 0 ) ;
}
#ifdef __cplusplusextern "C"#endif
void SQL_API_FN weather( /* Return row fields */SQLUDF_VARCHAR * city,SQLUDF_INTEGER * temp_in_f,SQLUDF_INTEGER * humidity,SQLUDF_VARCHAR * wind,SQLUDF_INTEGER * wind_velocity,SQLUDF_DOUBLE * barometer,SQLUDF_VARCHAR * forecast,/* You may want to add more fields here */
/* Return row field null indicators */SQLUDF_NULLIND * city_ind,SQLUDF_NULLIND * temp_in_f_ind,SQLUDF_NULLIND * humidity_ind,SQLUDF_NULLIND * wind_ind,SQLUDF_NULLIND * wind_velocity_ind,SQLUDF_NULLIND * barometer_ind,SQLUDF_NULLIND * forecast_ind,/* You may want to add more field indicators here */
/* UDF always-present (trailing) input arguments */SQLUDF_TRAIL_ARGS_ALL
) {
scratch_area * save_area ;char line_buf[81] ;int line_buf_pos ;
/* SQLUDF_SCRAT is part of SQLUDF_TRAIL_ARGS_ALL *//* Preserve information from one function call to the next call */
278 iSeries� DB2 UDB SQL ����� �� V5R2
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
save_area = ( scratch_area * ) ( SQLUDF_SCRAT->data ) ;
/* SQLUDF_CALLT is part of SQLUDF_TRAIL_ARGS_ALL */switch( SQLUDF_CALLT ) {
/* First call UDF: Open table and fetch first row */case SQL_TF_OPEN:
/* If you use a weather data text file specify full path *//* save_area->file_ptr = fopen("tblsrv.dat","r"); */save_area->file_pos = 0 ;break ;
/* Normal call UDF: Fetch next row */�2�case SQL_TF_FETCH:
/* If you use a weather data text file *//* memset(line_buf, ’\0’, 81); *//* if (fgets(line_buf, 80, save_area->file_ptr) == NULL) { */if ( weather_data[save_area->file_pos] == ( char * ) 0 ) {
/* SQLUDF_STATE is part of SQLUDF_TRAIL_ARGS_ALL */strcpy( SQLUDF_STATE, "02000" ) ;
break ;}memset( line_buf, ’\0’, 81 ) ;strcpy( line_buf, weather_data[save_area->file_pos] ) ;line_buf[3] = ’\0’ ;
/* Clean all field data and field null indicator data */clean_fields( 0 ) ;
/* Fills city field null indicator data */fields[0].fld_ind = SQL_NOTNULL ;
/* Find a full city name using a short name *//* Fills city field data */if ( get_name( line_buf, fields[0].fld_field ) == 0 ) {
save_area->file_pos++ ;/* If you use a weather data text file *//* memset(line_buf, ’\0’, 81); *//* if (fgets(line_buf, 80, save_area->file_ptr) == NULL) { */if ( weather_data[save_area->file_pos] == ( char * ) 0 ) {
/* SQLUDF_STATE is part of SQLUDF_TRAIL_ARGS_ALL */strcpy( SQLUDF_STATE, "02000" ) ;break ;
}memset( line_buf, ’\0’, 81 ) ;strcpy( line_buf, weather_data[save_area->file_pos] ) ;line_buf_pos = strlen( line_buf ) ;while ( line_buf_pos > 0 ) {
if ( line_buf[line_buf_pos] >= ’ ’ )line_buf_pos = 0 ;
else {line_buf[line_buf_pos] = ’\0’ ;line_buf_pos-- ;
}}
}
� 13 � ��� �� ��(UDF) � 279
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Fills field data and field null indicator data ... *//* ... for selected city from text weather data */get_value( line_buf, 1 ) ; /* Skips city field */
/* Builds return row fields */strcpy( city, fields[0].fld_field ) ;memcpy( (void *) temp_in_f,
fields[1].fld_field,sizeof( SQLUDF_INTEGER ) ) ;
memcpy( (void *) humidity,fields[2].fld_field,sizeof( SQLUDF_INTEGER ) ) ;
strcpy( wind, fields[3].fld_field ) ;memcpy( (void *) wind_velocity,
fields[4].fld_field,sizeof( SQLUDF_INTEGER ) ) ;
memcpy( (void *) barometer,fields[5].fld_field,sizeof( SQLUDF_DOUBLE ) ) ;
strcpy( forecast, fields[6].fld_field ) ;
/* Builds return row field null indicators */memcpy( (void *) city_ind,
&(fields[0].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) temp_in_f_ind,&(fields[1].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) humidity_ind,&(fields[2].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) wind_ind,&(fields[3].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) wind_velocity_ind,&(fields[4].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) barometer_ind,&(fields[5].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
memcpy( (void *) forecast_ind,&(fields[6].fld_ind),sizeof( SQLUDF_NULLIND ) ) ;
/* Next city weather data */save_area->file_pos++ ;
break ;
/* Special last call UDF for cleanup (no real args!): Close table */�3�case SQL_TF_CLOSE:
/* If you use a weather data text file *//* fclose(save_area->file_ptr); *//* save_area->file_ptr = NULL; */save_area->file_pos = 0 ;break ;
280 iSeries� DB2 UDB SQL ����� �� V5R2
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}
}
� UDF �� �� �� ��� �� �� � ����.
1. scratchpad� ������. row �� OPEN �� � ��� ���� iptr
� � nbr_rows �� �� � mystery �� �� ����.
2. FETCH� iptr �� � ���� �� �� ��� iptr� out_c1,
out_c2, and out_c3 � ��� �� ���� ��� ��� ���
��.
3. ����� CLOSE� OPEN �� ���� scratchpad� ��� �����
���.
��� � UDF �� CREATE FUNCTION���.
CREATE FUNCTION tfweather_u()RETURNS TABLE (CITY VARCHAR(25),
TEMP_IN_F INTEGER,HUMIDITY INTEGER,WIND VARCHAR(5),WIND_VELOCITY INTEGER,BAROMETER FLOAT,FORECAST VARCHAR(25))
SPECIFIC tfweather_uDISALLOW PARALLELNOT FENCEDDETERMINISTICNO SQLNO EXTERNAL ACTIONSCRATCHPADNO FINAL CALLLANGUAGE CPARAMETER STYLE DB2SQLEXTERNAL NAME ’LIB1/WEATHER(weather)’;
� �� �� �� � ���.
v �� �� �� ��� 7�� �� � ��.
v SCRATCHPAD� ���� DB2� ��� ��� ��� scratchpad �
� ���.
v NO FINAL CALL� ����.
v SQL �� ��� ���� NOT DETERMINISTIC�� ������.
� ��� mystery �� �� ����� ��� ��� ��� ��� ��� �
��.
v � �� DISALLOW PARALLEL� ���.
v CARDINALITY 100� DB2 optimizer� ��� ���� ��� � � �
�� ���.
� 13 � ��� �� ��(UDF) � 281
||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
v DBINFO� ���� ���� �� �� ��� �� �� ��� ��
�� �� ��� ���� ����.
v NOT NULL CALL� ���� �� SQL �� NULL�� � �� � � �
�� �� �� UDF� ���� ���.
� � ��� ��� �� � ���� �� ��� �����.
SELECT *FROM TABLE (tfweather_u())x
282 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
||
|
� 14 � � SQL ������
�� SQL ��� ���� ��� ������ ��� SQL� ��
���. �� SQL ��� ������� �� ��� �� SQL� ��(�
� ��)��� �����. ������� ��� SQL�� �� �� � ��
� ���. ������� �� ��.
v SQL� �� �� ���.
v �� SQL� ���.
v �� ��.
v SQL � ��� ���.
��� SQL(� 17 � ���� SQL ���� ����)� �� SQL ����� �
��. SQL�� ��� SQL �� ���� ���� ����.
�:
1. ��� ����� �� SQL��� �� SQL �� ��� ��� ��
��. �� ��� ���� �� �� �� �� ���� ���
�� ���� � ��� ��� ��� ���. ���� �� SQL
� "��� ��� ������� ���� �. � ������� �
(��) SQL� �� ������� �� ���� �.
2. EXECUTE �� EXECUTE IMMEDIATE�� �� �� FOR READ ONLY
� ��� ����� �� �� �� � �� � ����� �
�� �� ���� ��� �� ���� ���.
ALWBLK(*ALLREAD) CRTSQLxxx ��� FOR UPDATE OF� �����
�� ��� ��� ���� �� ���� �� ��� ��� �� ��
�� FOR READ ONLY �� � ���. ��� FOR READ ONLY
� �� ��� �� � �� �� �� �� �� ��.
� �� SQL�� �� �� ����. iSeries� RPG ����� �� �
� ��� �� PL/I, COBOL, C �� iSeries� ILE RPG ����� �� �
�� �.
�� �� iSeries� DB2 UDB� ��� �� �� � �� �� ���
���� ��� ���� ����.
© Copyright IBM Corp. 1998, 2002 283
�: �� �� �� SQL �� ��� �� �� �� � ����.
� 28. �� ������ ���� SQL�� ���
SQL� � SQL � SQL
ALTER TABLE Y Y
BEGIN DECLARE SECTION Y N
CALL Y Y
CLOSE Y N
COMMENT ON Y Y
COMMIT Y Y
CONNECT Y N
CREATE ALIAS Y Y
CREATE DISTINCT TYPE Y Y
CREATE FUNCTION Y Y
CREATE INDEX Y Y
CREATE PROCEDURE Y Y
CREATE SCHEMA Y Y
CREATE TABLE Y Y
CREATE TRIGGER Y Y
CREATE VIEW Y Y
DECLARE CURSOR Y � 1 ��
DECLARE GLOBAL TEMPORARY TABLE Y Y
DECLARE PROCEDURE Y N
DECLARE STATEMENT Y N
DECLARE VARIABLE Y N
DELETE Y Y
DESCRIBE Y � 2 ��
DESCRIBE TABLE Y N
DISCONNECT Y N
DROP Y Y
END DECLARE SECTION Y N
EXECUTE Y � 3 ��
EXECUTE IMMEDIATE Y � 4 ��
FETCH Y N
FREE LOCATOR Y Y
GRANT Y Y
HOLD LOCATOR Y Y
INCLUDE Y N
INSERT Y Y
LABEL ON Y Y
LOCK TABLE Y Y
OPEN Y N
284 iSeries� DB2 UDB SQL ����� �� V5R2
||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
� 28. �� ������ ���� SQL�� ��� (�)
SQL� � SQL � SQL
PREPARE Y � 5 ��
RELEASE Y N
RELEASE SAVEPOINT Y Y
RENAME Y Y
REVOKE Y Y
ROLLBACK Y Y
SAVEPOINT Y Y
SELECT INTO Y � 6 ��
SELECT� Y � 7 ��
SET CONNECTION Y N
SET OPTION Y � 8 ��
SET PATH Y Y
SET RESULT SETS Y N
SET SCHEMA Y Y
SET TRANSACTION Y Y
SET � Y N
UPDATE Y Y
VALUES INTO Y N
WHENEVER Y N
�:
1. ��� ���, �� � ��� �� SELECT� �� ��� ��� �
����.
2. ��� ���, ��� ��� �� ��� ����.
3. ��� ��� �� ��� SQL� ��� ����. SQL��
EXECUTE� ��� � PREPARE� �� �� ����� �. 287
��� �PREPARE�� EXECUTE� ��� �� PREPARE� �� ��
���.
4. ��� ��� ��� ��� � �� �� �� ����� ���
���. EXECUTE IMMEDIATE��� �� ���� ���� ���� �
�� ���� ����. 286 ��� ��SELECT� ��� �� EXECUTE
IMMEDIATE� �� �����.
5. ��� ���, ��� � �� SELECT� �, ��� � ����
����. 286 ��� ��SELECT� ��� �� PREPARE� �� ��
���.
6. SELECT INTO�� ���� EXECUTE IMMEDIATE� ��� ���.
7. EXECUTE� EXECUTE IMMEDIATE� �� ��� ��� OPEN� ��
���� ��� ���.
� 14 � �� SQL ������ 285
|
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
|||
||||
8. REXX ������ ��� �� ����� ������ ��� ��
�.
�: �� � �� ��� x ��� ��� ���� ���� �����.
� SQL ������ �� � ��
�� SQL� ���� �� SQL�� ����� ���� �� ��� �
���� �� EXECUTE��� EXECUTE IMMEDIATE�� �� ����
�. EXECUTE IMMEDIATE�� SQL�� ���� ��� ���� ����
�� �.
�� SQL�� SELECT� � �SELECT�� � �� �� ��� ���. �
SELECT�� DELETE, INSERT � UPDATE� �� �� ����.
ODBC� �� ����� ��� ����� �� ������� ���� �
� SQL �� ������� ���. iSeries Access� ��� ���
�� �� ������ �� �� ��� ��� iSeries Access Express ��
����� �����.
SELECT� ��
�� SQL �SELECT� ���� �� ����.
1. ���� SQL�� ���� �� �� ���� �����(284 �
�� � 28 ��).
2. SQL� �����(SQL� ��, � � ���� � 17 � ���� SQL
��� �����).
�� SQL �SELECT� ��� �� ����.
1. EXECUTE IMMEDIATE� �� SQL� ��� SQL� ��� �
��� �� �����.
2. �� �� SQL � ��� �����.
��� �� SQL �SELECT�(stmtstrg) �� ������� ���.
EXEC SQLEXECUTE IMMEDIATE :stmtstrg;
�� SQL�� CCSID
SQL�� �� ��� ���. ��� �� CCSID� �� ���� CCSID
� ����. PL/I� �� � ���� � ���. � ��� � CCSID
� �� ���� CCSID� ����.
286 iSeries� DB2 UDB SQL ����� �� V5R2
�� SQL�� �� ���� CCSID� ��� ����. �� �� �� ��
�� ���. �� ��, ���(not sign)(¬)� CCSID 500� 'BA'X ��
�. �� ��� �� ���� CCSID� 500� ��, SQL� ���(¬)� 'BA'X
���� ��� ���.
�� ��� CCSID� 65535�� SQL� CCSID 37 ��� �� ��� �� �
�� ���. �� SQL� ���(¬)� '5F'X� � ���.
PREPARE�� EXECUTE� ��
�SELECT� ��� ��� ��� �SELECT�� ���� EXECUTE
IMMEDIATE� �� �� ���. �SELECT� ��� ��� �
�� �SELECT� PREPARE � EXECUTE� �� ���� �.
PREPARE�� �SELECT�(�� �� DELETE�) ��� ���� ��� �
� ��. CRTSQLxxx � DLYPRP(*YES)� ���� USING��
PREPARE� ��� ��� ���� ��� EXECUTE �� DESCRIBE�
�� ��� � � ��� ����. ��� S1��� �����. ���
��� �� ��� �� � �� �� ���� �� � �
�� ���. ��� ��� ��� � � ��� � ���.
DSTRING = ’DELETE FROM CORPDATA.EMPLOYEE WHERE EMPNO = ?’;
/*The ? is a parameter marker which denotesthat this value is a host variable that isto be substituted each time the statement is run.*/
EXEC SQL PREPARE S1 FROM :DSTRING;
/*DSTRING is the delete statement that the PREPARE statement isnaming S1.*/
DO UNTIL (EMP =0);/*The application program reads a value for EMP from thedisplay station.*/EXEC SQLEXECUTE S1 USING :EMP;
END;
�� �� ��� ���� ����� �� � �� ��� ��� ��� �
� ����� ��� �� � �� �� ��� �.
�: ������ �� � �� ��� ������ ��� �� �� ���
��� ����. �� ���� COMMIT� � �� CONNECT(��
1)�, DISCONNECT� �� RELEASE� �� ���.
� 14 � �� SQL ������ 287
SELECT� �� � SQLDA ��
�� SELECT�� �� ���� ���� � �� ��� ���.
�� ��� SELECT� ���� ��, SQLDA� ��� ���.
�� ��� SELECT� ��� ���� �� SQLDA ��� ���� �.
SQLDA� ��� � �� ������ ����� SQL� ��� SQL
��� �� ��� ���� �� ��. �� SELECT ��� ���
�� ��� PREPARE �� DESCRIBE��� �� ���.
� ��� SELECT�
�� SQL� �� ��� SELECT�� �� �� �� � ��� ��� ��
� ��� ���. ��� �� ��� �� �� ��� �� ��� �
� �� ��� ���� SQLDA� ��� ���. � � FETCH�
� FETCH� �� � ���� ��� � � FETCH ��
� �� �� �� ���. � SQL �������� ����� ��� �
� ��� ���.
�� SQL �� ������ ������ �� ��� �� SELECT� ���
���.
�� ��� SELECT� ���� �� � ������� �� �� �
����� �.
1. ��� � �� SQL� ����� �.
2. PREPARE� �� �� SQL�� ��� �� � ��� ����
� �� �. CRTSQLxxx � DLYPRP(*YES)� ���� USING��
PREPARE� ��� ��� ���� ��� EXECUTE �� DESCRIBE
� �� ��� � � ��� ����.
3. �� �� �� ��� ���� �.
4. ��� ��� �.
5. � �� �� ���(�� ��� �� ��� SELECT� ���� �� �
� �� ��� SELECT� ��� � �� ��� �����) FETCH
���.
6. ��� �� ��� ��� ��� �.
7. �� �� SQL � ��� ���� �.
�� �� ��� ���.
MOVE ’SELECT EMPNO, LASTNAME FROM CORPDATA.EMPLOYEE WHERE EMPNO>?’TO DSTRING.
EXEC SQLPREPARE S2 FROM :DSTRING END-EXEC.
288 iSeries� DB2 UDB SQL ����� �� V5R2
EXEC SQLDECLARE C2 CURSOR FOR S2 END-EXEC.
EXEC SQLOPEN C2 USING :EMP END-EXEC.
PERFORM FETCH-ROW UNTIL SQLCODE NOT=0.
EXEC SQLCLOSE C2 END-EXEC.STOP-RUN.FETCH-ROW.
EXEC SQLFETCH C2 INTO :EMP, :EMPNAME END-EXEC.
�: � �� SELECT�� �� �� �� �� ��� SELECT�� �� ��
� ��� �� �� ��� ���� SQL ��� ��(SQLDA) ��
� ��� ���.
�� ��� SELECT�
�� SQL� �� ��� SELECT�� �� � �� � �� ��� �
� ���. �, ��� �� � �� �� �� �� !�. ���� �
� � � �� �� �� ��� �� ��� ���.
�: REXX�, �� 5.b, 6 � 7� ���� ���.
������� �� ��� SELECT� ��� ��, ����� �� �� ��
���� �.
1. ��� � �� SQL� ����� �.
2. PREPARE� �� �� SQL�� ��� �� � ��� ���
� � �� �. CRTSQLxxx � DLYPRP(*YES)� ���� USING
�� PREPARE� ��� ��� ���� ��� EXECUTE ��
DESCRIBE� �� ��� � � ��� ����.
3. �� �� �� ��� ���� �.
4. �� SELECT�� ��� �� ��(�� 3� ���)� ��� �.
5. DESCRIBE� �� SQL��� � �� � � �� � �� �� �
�� ���� �.
�:
a. �� PREPARE� INTO� �� � ���� PREPARE �
DESCRIBE� �� �� ���.
b. �� � � �� ��� ��" �� SQLDA� �� ��� �����
��� ��� �� �� �� ���� �� ��� SQLDA
� ��� DESCRIBE� ����� �.
� 14 � �� SQL ������ 289
6. �� ��� � ��� �� ��� ����� �����.
7. SQLDA(SQL ��� ��) ���� ��� � SQL �� ��� �
��� � � ��� ��� �.
8. � ��� �.
9. ��� �� ��� ��� ��� �.
10. �� �� SQL � ��� �����.
�� �� � �� �� ����� 296 ��� ��: SQLDA ���� ��
�� SELECT�� �����.
SQL �� ��(SQLDA)
�� SQL� SQL ��� ��(SQLDA)��� � ��� �� SQL� ���
��� �� SQL� �� ��� ���. SQLDA� DESCRIBE �
DESCRIBE TABLE� �� ��� �� PREPARE, OPEN, FETCH, CALL
� EXECUTE� ��� ���.
SQLDA �� ��� ��� � �� �� ���. PREPARE� DESCRIBE
�� SQLDA� ��� �� �� ��� ������ ���� ���.
DESCRIBE� SQLDA� � �� �� �� � �� ��� ������ �
��� ���. OPEN, EXECUTE, CALL � FETCH�� SQLDA� ��
� � �� ��� ���. �� ��, DESCRIBE� �� SQLDA�
�� ��� �� ��� ��� ��, FETCH�� �� ��� ��
�.
������� �� � �� ��� � � ��, � �� SELECT�
�� � �� SQLDA� ��� ���. ��� ��� SQL ���� SQLDA
� SQLCA� �����.
SQLDA� C, C++, COBOL, PL/I, REXX � RPG� ��� ���. iSeries�
RPG� ��� �� �� ��� �� ��, SQLDA� PL/I, C, C++, COBOL
�� iSeries� ILE RPG ����� iSeries� ILE RPG ���� ��� ���
� �. �� ��, �� ����� iSeries� RPG ���� ���� �.
SQLDA ��
SQLDA� 4�� �� � � ���� SQLVAR� ��� 6�� � � ��
� �� ����.
�: REXX� SQLDA�� ���. ��� ��� ��� �� �� SQL ���
�� ��� ��, REXX ������� SQL� �� �����.
SQLDA� OPEN, FETCH, CALL � EXECUTE ��� ��, ���� �
SQLVAR� ��� �� ���.
290 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
SQLDA ��� ��� ���.
SQLDAID
SQLDAID� ���� �� ‘eyecatcher’� ���. ��� PREPARE
�� DESCRIBE� ���� SQLDA �� SQLDA� �� 8�� �
��. � �� FETCH, OPEN, CALL �� EXECUTE ���� �
��.
7�� ���� � � �� � ��� SQLVAR ��� ���� ��
� �� ����. LOB �� ��� �� �� �� �� �� SQLVAR
��� ��� ���. LOB �� ��� ��� �� �� � ����
���� ����.
SQLDAID� REXX ���� ���.
SQLDABC
SQLDABC� SQLDA� �� ���. ��� PREPARE ��
DESCRIBE� ���� SQLDA �� SQLN*LENGTH(SQLVAR)
+ 16� �� 4��� ���. SQLDABC� FETCH, OPEN, CALL �
� EXECUTE �� ���� � SQLN*LENGTH(SQLVAR) + 16��
��� �� �� ����� �.
SQLABC� REXX ���� ���.
SQLN SQLN� SQLVAR� � ���� � ��� 2��� ���. ��
SQL� ���� � 0�� ��� �� �� ����� �.
SQLN� REXX�� ���� ���.
SQLD SQLD� SQLVAR� ���� � ��� 2��� �� SQLDA �
� ���� ��� � �� �� �� .� ��� SQL ��
DESCRIBE �� PREPARE� ����. � ���� � ��� �
�� � 0�� ��� �� SQLN�� �� �� �� ����
�.
SQLVAR
� ��� � ��� � �� � �� � �� ����. ��� ��
SQL �� DESCRIBE �� PREPARE� ����. � ���
� ��� � ����� �. ��� �� ��� �� ����.
SQLTYPE
SQLTYPE� 293 ��� � 29 ��� ��� � �� �� �
� �� ��� 2��� ���. SQLTYPE� � � �
�� � SQLIND �� �� ��� �� ����� �� �
� ���.
� 14 � �� SQL ������ 291
SQLLEN
SQLLEN� ��� � �� �� � � ��� 2��� �
���.
SQLRES
SQLRES� �� �� �� ��� 12��� ����. OS/400
� ���� 1/4 �� �� ��� �.
SQLRES� REXX� ���� ���.
SQLDATA
SQLDATA� SQLDA� OPEN, FETCH, CALL � EXECUTE
��� �, ��� �� ��� ��� 16��� ��� ��
�.
SQLDA� PREPARE� DESCRIBE� ��� �, � �� ��
��� ����.
�� �� ��� ��� CCSID� SQLDATA� � �� � �
� ��� ����. BIT ��� �� CCSID� 65535��.
REXX� CCSID� � SQLCCSID ���.
SQLIND
SQLIND� SQLDA� OPEN, FETCH, CALL � EXECUTE �
�� � ���� �� ����� ���� � � ��� �
� ��� ��� 16��� �����. �� � � ����
� ��� � �� �� ����. � ���� SQLTYPE
� � �� �� ��� ����.
SQLDA� PREPARE� DESCRIBE ��� �� � ��� ��
���� �� ���� ���.
SQLNAME
SQLNAME� �� 30� �� � �� ���. PREPARE �
� DESCRIBE �� � �� ��� � ��, ��� �� �
�� � ��� �� ���. OPEN, FETCH, EXECUTE ��
CALL�, � �� �� ���� CCSID(��� �� �� ID)
� ��� � ��� ���. CCSID� �� � ��� ��
� ��� ��� ���.
�� SQLDA� SQLVAR � ��� SQLNAME ��� ��
CCSID� ��� ���.
�� �� �� ��
SQLNAME� �
�
SQLNAME �
� 1 & 2
SQLNAME �
� 3 & 4
�� SBCS 8 X’0000’ CCSID�� MIXED 8 X’0000’ CCSID
292 iSeries� DB2 UDB SQL ����� �� V5R2
�� �� �� ��
SQLNAME� �
�
SQLNAME �
� 1 & 2
SQLNAME �
� 3 & 4
�� BIT 8 X’0000’ X’FFFF’GRAPHIC ���� �� 8 X’0000’ CCSID�� �� �� ���� �� ���� �� ���� �� ���� ��
�: SQLNAME ��� CCSID ���� � �� �. ���
� ��� ������� CCSID ��� ��� ��� ��
�. CCSID� ���� ��� � �� ��� CCSID� �
���.
��� ��� � �� ���� � CCSID �� ��� 2�
�� CCSID��. ��� 2��� CCSID� �� ��� 65535
� ����.
� 29. PREPARE, DESCRIBE, FETCH, OPEN, CALL �� EXECUTE �� SQLTYPE � SQLLEN
SQLTYPE
PREPARE � DESCRIBE� � FETCH, OPEN, CALL � EXECUTE� �
� �� �� SQLLEN
HOST VARIABLE DATA
TYPE SQLLEN
384/385 �� 10 ��� �� � �� ���
��
��� �� �
�
388/389 �� 8 ��� �� � �� ���
��
��� �� �
�
392/393 ���� 26 ����� �� � �� �
�� ��
��� �� �
�
396/397 �� �� � #1 �� � � N/A N/A
400/401 N/A N/A � � ��� ��� ��� �� �
�
392/393 ���� 26 ����� �� � �� �
�� ��
��� �� �
�
404/405 BLOB 0(� #2 ��) BLOB ���� ��(� #2
��)
408/409 CLOB 0(� #2 ��) CLOB ���� ��(� #2
��)
412/413 DBCLOB 0(� #2 ��) DBCLOB ���� ��(� #2
��)
452/453 �� � �� ��� �� � � �� � �� ��� ��� �� �
�
456/457 � �� � �� ��� �� � � � �� � �� ��� ��� �� �
�
460/461 N/A N/A � � �� ��� ��� �� �
�
464/465 �� � ��� ��� �� � � �� � ��� ��� ��� �� �
�
� 14 � �� SQL ������ 293
||
|
||
|||||
|||||||
|||||||
|||||||
|||||
||||||
|||||||
||||||
||||||
||||||
||||||
||||||
||||||
||||||
� 29. PREPARE, DESCRIBE, FETCH, OPEN, CALL �� EXECUTE �� SQLTYPE � SQLLEN (�)
SQLTYPE
PREPARE � DESCRIBE� � FETCH, OPEN, CALL � EXECUTE� �
� �� �� SQLLEN
HOST VARIABLE DATA
TYPE SQLLEN
468/469 �� � ��� ��� �� � � �� � ��� ��� ��� �� �
�
472/473 � �� � ��� ��� �� � � � ��� ��� ��� �� �
�
476/477 N/A N/A PASCAL L-��� ��� �� �
�
480/481 �� �� ���� �� 4,
��� �� 8
�� �� ���� �� 4,
��� �� 8
484/485 � 10� ��� 1� ��
, 2� � �#
� 10� ��� 1� ��
, 2� � �#
488/489 (zoned) 10� ��� 1� ��
, 2� � �#
(zoned) 10� ��� 1� ��
, 2� � �#
492/493 � � 8 � � 8
496/497 � � 4(� #3 ��) � � 4
500/501 � � 2(� #3 ��) � � 2
504/505 N/A N/A DISPLAY SIGN LEADING
SEPARATE
��� 1� ��
, 2� � �#
904/905 N/A N/A ROWID 40
916/917 N/A N/A BLOB � �� � 267
920/921 N/A N/A CLOB � �� � 267
924/925 N/A N/A DBCLOB � �� � 267
960/961 N/A N/A BLOB �� ��� 4
964/965 N/A N/A CLOB �� ��� 4
968/969 N/A N/A DBCLOB �� ��� 4
�:
1. DataLink �� ��� DESCRIBE TABLE�� ���.
2. 2� SQLVAR� len.sqllonglen ��� �� � �� �� ���.
3. �� � 2� ��� � 2 �� 4� SQL ��� ��(SQLDA)� ���
���. ��� 1� ���, ��� 2� ��� ��� ���. �
�� ���� X’00’�� � ��, ��� �� ����. � � ���
��� �� ��� ���. SQLDA� � � ��� � 5� ��
�.
SQLVAR2
��� � �� ��� ��� �� SQLVAR ����. �� ��� �
� �� LOB � ��� ��, �� � �� SQLVAR� ���. �
294 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
||
|||||
||||||
||||||
||||||
|||||||
|||||
||||
|||||
||||
|||||
|||||
|||||
||||||||
|||||
|||||
|||||
|||||
|||||
|||||
||||||
�� ��� ��, ��� �� ��� �� ���. LOB� ��, ��� �
� � �� �� �� �� �� ��� ���� ���� �� ��
�. LOB� ��� �� �� ���� ���� ��, � ��� ��
� ���. ��� �� SQLVAR �� � SQLDA� ��� ��� �
��� �� ��� �� �� �� �� �� ����. SQLDAID�
7�� ���� �� ��� SQLVAR �� ����.
SQLD� � � SQLVAR ��� ���� �� ��
v SQLD� �� � �� ��� � SQLVAR ��� ����.
v �� SQLVAR �� �� ��� � � ���� ���� SQLCA�
SQLCODE �� +237 ��� ���. �� SQLVAR ��� �
��� �� SQLVAR� ��� ���.
v �� SQLVAR �� ��� � � SQLVAR� ���� ����
SQLCA� SQLCODE �� +239 ��� ���. SQLVAR ���
��� ���.
SQLLONGLEN
SQLLONGLEN� LOB(BLOB, CLOB �� DBCLOB) ��� �
�� �� � � ��� 4��� � ���.
SQLDATALEN
SQLDATALEN� ��� �� � ��� ��� 16��� �
�� ���. � �� LOB(BLOB, CLOB � DBCLOB) �
�� �� ����. �� DESCRIBE �� PREPARE� �
��� ���.
� ��� NULL��, ��� �� �� �� � � �� � 4
��� ���� SQLDATA� �� �� � ���� ����.
�� BLOB �� CLOB �� ��� � DBCLOB �� �
� � ����.
� ��� NULL� ��, �� �� SQLVAR� SQLDATA
��� ���� �� ��� ��� ��� �� �(DBCLOB �
��)� �� �� 4��� �� �� �� ���� �� ��
�.
SQLDATATYPE_NAME
SQLDATATYPE_NAME� �� 30� �� � �� ���.
�� DESCRIBE �� PREPARE� ����. � �� �� �
�� ����.
v ��� ��� � ��, ������ ���� � �� �
�� ��� �� ���� ���. ��� ��� 30����
� �, � � ����.
� 14 � �� SQL ������ 295
v �� �� ������ ���� � ��� �� 20�
��� ���.
v � �� ��, ������ ���� � � ���� ��
�.
�: SQLDA� ���� �� �� SELECT�
��� ������� ��� ��� ���� �� SELECT� ���� ��� �
��.� ��� ����� ��� � ������� ����� ���
��� �� ��� ���. � ���� �� � ��� � �� ��
� �� � ���. ��� ������� �� � �� ��� �� �
� � � � � � ��� ��� �.
�� ��, �� �� ���� �.
SELECT WORKDEPT, PHONENOFROM CORPDATA.EMPLOYEE
WHERE LASTNAME = ’PARKER’
�: � SELECT�� INTO�� ���. �� SELECT�� � �� ��
�� INTO� ���� ���.
��� ��� � ����. � �� ��� DSTRING� ��� �� ��
� �� PREPARE� �� ����.
EXEC SQLPREPARE S1 FROM :DSTRING;
���� � �� � ��� �� ���� �. �� �� �� SQLDA
� ���.
SQLDA� ��� � �� ��� ����� ��� ���(REXX�� ��
�� ��� ��� ���). ���� ��� ��� �� �� ���.
SQLDA� 16��� �� ����� �. SQLDA� 16��� �� ��
� �� ����. � �� �� � � ��(SQLVAR)� �� � ���
�� 80�����.
�� ��� ����� ��� SQLVAR � ���� �� �� ��
�. ��� � �� �� SQLVAR � ��� ��� �. ���� SELECT
� �� �� � ��� SQLVAR � �� � ��. � SELECT�
� ��� � �����, ��� � � � ���. ���� ���� �
� ��� �. � �� 20� ��� �� � SELECT� �� ���
�� ���. � �� SQLVAR � 20 ��� ��� � � �� �
� SQLVAR �� �� ��� ��� �. ��� �� SQLDA ��� 20
x 80 � 1600 16 � �� 1616���� ��.
296 iSeries� DB2 UDB SQL ����� �� V5R2
SQLN �� SQLDA� �� � � �� ��� �, SQLDA� SQLN ���
SQLVAR � �� � �� ���� �(� �� 20).
����� ��� � DESCRIBE� ��� ���.
EXEC SQLDESCRIBE S1 INTO :SQLDA;
DESCRIBE�� �� � SQL� ��� �� ��� �� ��� ���
SQLDA �����. �� ��� DESCRIBE� ��� �� SQLDA ��
���. � �$� ���� ��� ����.
SQLDA �� �� ���� �.
� 30. SQLDA �
�� �
SQLAID ‘SQLDA’
SQLDABC 1616
SQLN 20
SQLD 2
SQLDAID� DESCRIBE� �� � SQL �� ����� ��� ����.
SQLDABC� SQLDA� ��� �� ����. SQLDA � ���
SQLVAR ��� � � ����, ��� SELECT�� � �� � � �� ��
�.
� 31. SQLVAR �� 1
�� �
SQLTYPE 453
SQLLEN 3
SQLDATA(3:4) 37
SQLNAME 8 WORKDEPT
� 32. SQLVAR �� 2
�� �
SQLTYPE 453
SQLLEN 4
SQLDATA(3:4) 37
SQLNAME 7 PHONENO
SQLDA� ��� SQLVAR ��� ��" �� � �� ��� ����� SQLN
���� �. �� �� �� ��� 20 � �� SELECT�� �� 27
���� ��. SQLVAR� ��� ��� ���� ��� �� ��� �
��� �� SQL� � �� � ��� ���. ��, SQL� SQLD�
� 14 � �� SQL ������ 297
SELECT� �� ��� �� � � ��� ��� ���� ��. ��
�� DESCRIBE �� SQLN SQLD � ���� �. SQLD� � SQLN
� �� � ��, ��� �� SQLD �� � SQLDA� ���
DESCRIBE� �� ����.
EXEC SQLDESCRIBE S1 INTO :SQLDA;
IF SQLN <= SQLD THENDO;
/*Allocate a larger SQLDA using the value of SQLD.*//*Reset SQLN to the larger value.*/
EXEC SQLDESCRIBE S1 INTO :SQLDA;
END;
�SELECT�� DESCRIBE� ��� ��, SQL� SQLD� 0�� ���.
��� ����� SELECT� �SELECT� �� �� ��� ��, SELECT
��� ���� �� ��� � � �� ��� ���. � ��
SELECT�� �� ������. SQLD � ��� ���.
���� ����� ��� DESCRIBE� �� SQLVAR� ��� ���
�. SELECT ���� � �� ��� WORKDEPT��. SQLTYPE ���,
DESCRIBE� ���� �� �� �� � �(null) �� �� ��(293
��� � 29 ��).
� ��, SQL� SQLTYPE SQLVAR �� 1 �� 453�� ���. ��
� WORKDEPT� �� � �� ��� ��� � �(null)� ���� �� �
��.
SQL� � �� SQLLEN ���. WORKDEPT� �� ��� CHAR��
�, SQL� SQLLEN �� �� �� �� �� ���. WORKDEPT� �
�, � �� 3��. ���� SELECT�� � �� � CHAR(3) ���� �
�" �� � ����� ���.
WORKDEPT� �� ��� CHAR FOR SBCS DATA��� SQLDATA� � �
� 4���� �� �� CCSID� ������.
SQLVAR ��� � ��� SQLNAME��� �� � �� �����.
SQLNAME� �� 2���� �� ��� �� �� ���. �� �� ��
� �� SELECT� ��� � ����(� �� WORKDEPT). �������
�(�: SUM(SALARY)), ���(�: A+B-C), � ���� �� �� ���
��� ���. � �� SQLNAME� � �����. �� SQLNAME� �
� �� ��� �� � ���. PREPARE� DESCRIBE�� ��� ��
� � �� USING���. ��� �� �� ��� ���.
298 iSeries� DB2 UDB SQL ����� �� V5R2
EXEC SQLDESCRIBE S1 INTO:SQLDA
USING LABELS;
�� ��� ����.
NAMES(�� USING �� �� �)
� ���� SQLNAME �� ����.
SYSTEM NAMES
��� � ���� SQLNAME �� ����.
LABELS
SQL� ��� �� ��� ���� � ����.
ANY ��� ��� �� �� � �� SQLNAME �� ����. ��
� ���, � ��� ����.
BOTH
�� � ��� �� �� �� �� �� ����. �� � �
� ��� ����, SQLVAR �� ��� � � �� � ���
��.
ALL � ��, �� � ��� � ��� �� �� �� �� ����.
SQLVAR �� ��� � � �� � �����.
USING �� �� ��� ��� SQL ���� DESCRIBE� � SQLDA �
�����.
� ��, � �� SQLVAR ��� PHONENO �� ��� 2� � �� �
�� �� ���. SQLTYPE� 453 ��� PHONENO� CHAR �� ��
�. SQLLEN� 4� ����.
�� SELECT� ��� � SQLDA� �� � ���� �.
DESCRIBE� �� �� � SELECT�� �� �� �� � �� ���
�� ��� ���. WORKDEPT� � 3� �� ��� �����
�. PHONENO� � 4� �� ��� ����� �. � � �� �(null)
� � ���� ����� �� � ���� ����� �.
����� ��� � ��� ���� �� ���� �� SQLDATA � SQLIND
� ���� �. SQLVAR �� � �� �� SQLDATA� � � ��
" ��� ����. SQLIND� �(null) ����� � ��" ��� ���
�. �� ��� �� ��� ���. � �$� ���� ��� ����.
� 14 � �� SQL ������ 299
� 33. SQLDA �
�� �
SQLAID ‘SQLDA’
SQLDABC 1616
SQLN 20
SQLD 2
� 34. SQLVAR �� 1
�� �
SQLTYPE 453
SQLLEN 3
SQLDATA CHAR(3) � �� �� ���
SQLIND � � �� 2��� � ����� �� �
��
� 35. SQLVAR �� 2
�� �
SQLTYPE 453
SQLLEN 4
SQLDATA CHAR(4) � �� �� ���
SQLIND � � �� 2��� � ����� �� �
��
�� SELECT� �� �� ��� ����. ���� ��� SELECT��
INTO�� ��� �. ���� ���� ��� �� SELECT�� ��� �
��� �. DECLARE, OPEN � FETCH� �� �� ���� ���
SELECT� ���.
DECLARE�� �� ��� ���.
EXEC SQL DECLARE C1 CURSOR FOR S1;
�� � ��� �� ���� ��� SELECT�(SI)� ��� � ���
SELECT� �� ���� ���. � �� �� �� ��� �� ���.
EXEC SQLOPEN C1;
EXEC SQLFETCH C1 USING DESCRIPTOR :SQLDA;
DO WHILE (SQLCODE = 0);/*Process the results pointed to by SQLDATA*/EXEC SQL
FETCH C1 USING DESCRIPTOR :SQLDA;END;EXEC SQL
CLOSE C1;
300 iSeries� DB2 UDB SQL ����� �� V5R2
��� ���. SELECT�� � �� FETCH� �� � � �� �
��. � �� FETCH� �� ��� �� ���� �� ��, FETCH��
SQL� SQLDA �� ���� ���� �� � �. �� SQLVAR
��� SQLDATA� SQLIND �� �� ���� ����� ���. FETCH
�� ��� � WORKDEPT �� SQLDATA ���� ��� ‘E11’� �
��. �� �� � ���� � ��� ����� � 0��.
PHONENO �� SQLDATA ���� ��� ‘4502’ ���. �� �
� � ���� � ��� ����� 0��.
��� ��
���� ��, ���� ��� SELECT�� WHERE�� � � ���.
�� �� ��� ���.
WHERE LASTNAME = ’PARKER’
�� SELECT� � � ��� ��, LASTNAME �� � ��
��� �� SQL� ��� ���.
SELECT WORKDEPT, PHONENOFROM CORPDATA.EMPLOYEEWHERE LASTNAME = ?
���� ��� ��� ������� � �� � ���� � ��
� ���. ������ ��� � ��� � �� USING
DESCRIPTOR� OPEN� �� SELECT�� WHERE� ��� ���
��� �� ��� � ��� ��� ���.
�� �� ���� ��� ���� USING DESCRIPTOR�� �� OPEN�
��� ��� ���. � SQL�� ��� ��� �� ���� ��� �
� �� ��� ��� ��� ���� ����. � �� ��� �
���� ��� ��� � �� ��� ��� �� �� SQLDA� ����
�. � SQLDA� �� ��� ��� �� SELECT ���� �� �� ��
�� ��� ��� ���� ���. �, ��� DESCRIBE�� ����
���� �� �� OPEN� �� ���� ����. SQLDA� SELECT�
� WHERE� �� ��� ��� ���� ���� ��� � �� ��
� ���. SQLDA� ���������� � ��� ��� �������
SQLDA� ��� �� ��� ���� ����� �. �� �
SQLDA� ��� ��� ��� � ��� ��� ��� SQL �� ��
� ���� ��� ��� ��.
SQLDA� USING DESCRIPTOR�� �� OPEN CURSOR�� ����� ��
� � �� ��� ��� ��� ���. � SQLDAID, SQLRES � SQLNAME
� 14 � �� SQL ������ 301
� ���� � ���.(�� CCSID� ��� ��� SQLNAME� ���
���.) ���� � �� �� ��� ��� ��� � �� ��
� � �� ��� �.
v ��� ���
v ��� ��� �� �� � �(SQLTYPE, SQLLEN � SQLNAME)
v ����� �� �� �
�� ��� SELECT�� �SELECT� ��� ��, ���� ��� �� ���
���� ���� ���(�� SELECT ���� � ��� �� ��
�).
������� ��� ��� ��� ��, ����� �� ����� �.
1. �� DSTRING �� �� �� ��� ��� �� ���� �.
2. ��� ��� � ���� �.
3. �� ��� SQLDA� ���� �.
�� REXX�� ���� ���.
4. ��� ��� �� SQLN� SQLD�
SQLN� REXX�� ���� ���.
5. SQLDABC� SQLN*LENGTH(SQLVAR) + 16� �� ���� �.
�� REXX�� ���� ���.
6. � ��� ��� ��, ��� ���.
a. �� ��, � � ������ ��� �.
b. SQLTYPE� SQLLEN ���� �.
c. �� (?) ��� �� ���� ���� �.
d. �� ���� �.
e. � ��� �� �� SQLDATA � SQLIND(�� ��� ��)� ��
�� �.
f. �� �� ���� �� �� � ��� CCSID ��� CCSID �
��, SQLNAME(REXX�� SQLCCSID) ���� �.
g. ��� �� ���� � CCSID �� ��� DBCS CCSID ���
CCSID� �� ��, SQLNAME(REXX�� SQLCCSID) � CCSID�
���� �.
h. ��� �� � ��� ��� ��� � ��� �� USING
DESCRIPTOR� �� OPEN� ���� �.
�� �� ��� ����� ��� ���.
302 iSeries� DB2 UDB SQL ����� �� V5R2
� 15 � ���� ������ � � SQL ��
��� ����� ����� �� iSeries� DB2 UDB �� ��� �
��. �� ��� �� ��� ���� �� ���.
v �Java� �� ���
v �Domino� �� ���
v �ODBC(Open Database Connectivity)� �� �� ���
v 304 ��� �PASE(Portable Application Solutions Environment)� �� �
� ���
Java� �� ��
JDBC(Developer Kit for Java Database Connectivity) ����� Java �����
iSeries� DB2 UDB �� ��� ���. ����� �� ��� ��
�� ��.
v ������ � ��
v Java� �� ��� �� ��(SQL)� JDBC ������ �� ��
v fQL� �� � � ��
JDBC ����� ��� �� �� ��� ��� iSeries Information Center
� ″IBM Developer Kit for Java JDBC ����� ��� �� ��″ ���
�����.
Domino� �� ��
iSeries� Domino� iSeries� DB2 UDB ������� Domino ������� �
�� ���� ���� Domino �� ����. � � �� ���� �
��� � ��� ������ ��� �� �� ��� ���� �.
��� ��� iSeries Information Center� iSeries� Domino ��� �����.
ODBC(Open Database Connectivity)� ���� ��� ��
Windows� iSeries Access ODBC ����� ��� ODBC ����� ���
����� ���� ���� �� ��� ����� ��� ���. iSeries
Information Center� Windows� iSeries Access ��� ″ODBC ��″� ��
���.
© Copyright IBM Corp. 1998, 2002 303
Linux� iSeries ODBC ���� ��� Linux� �� �� � �� �
� ��� ���. � ���� iSeries ���� Linux� ���
Linux� iSeries ODBC ����� �� � �� iSeries ������ ��
� � � ���.
PASE(Portable Application Solutions Environment)� ���� ���
��
PASE(Portable Application Solutions Environment)� iSeries ���� ����
�� AIX(�� � UNIX� ���) ������ �� � ��� ����.
��� ��� iSeries Information Center� � �� �� ��� ″OS/400 PASE″
� �����.
304 iSeries� DB2 UDB SQL ����� �� V5R2
� 16 � iSeries Navigator� ��� �� ������ ��
� ��� iSeries Navigator� �� �� �� ������ �� �
�� �� ���. �� ��� �� ��� ����. 37 ��� � 3 �
�iSeries Navigator ������ ��� � �� ��� �� ���. �
��� ��� ��� ���.
v �Database Navigator� �� ������ ��
v 309 ��� �SQL ���� �� �� ������ ���
v 312 ��� �SQL �� ��� SQL� ����
v 313 ��� �iSeries Navigator� ��� �� � ���
v 319 ��� �iSeries Navigator� ��� SQL ���� ���
v 321 ��� �SQL ��� ��
SQL ��� �� iSeries Navigator� �� �� � ��� �����
� ������ ��� ��� �����.
v �, �� � �� �� ��
v � ���
v �� � ��
�� �� ���� ������ �� � �� ���� �����.
Database Navigator� ���� ������ �
Database Navigator� �� ���� ������ ����� �� ��� �
���� ��� ���. ������ �� �� ��� �� Database
Navigator ��� �. �� Database Navigator � ������� ����
� � �� ����� � �� ����.
Database Navigator� ���, ������� �, �� �� �� � � ���
��� ���� ��� ��� ��� �� ������ ����� ���
��� ��� ���. ��� �� � Database Navigator� �� �
� �� ���.
v Database Navigator �
v ��� ���� ��
v ���� ���� ��
v ��� �� �� �
© Copyright IBM Corp. 1998, 2002 305
Database Navigator� �� � ��� � �� �� ���� �� ���.
��� ��� �� ���� ����� �, � �� ��� ���,
��, �� �� �� ����� �� �� ���. ���
Database Navigator �� �� �� �� �� ���.
�� ��� � �
Database Navigator �� � �� �� ��� � �� ��� ��
���� ����� �� � � �� ����� � � ����. �
� �� ��� � �� ������ ����� ��, �� � ����
�� ��� � ��� �� �� ����. ��� �� ����� �
� � ����� � � �� �� � �� ��� � � ����.
�� ��� �� �� ����, �� ����� ��� �� �� ��
� ��� ���� ����� � � �� ����� ��
� ���. �� ��, � ��� � ���� � �� �
� ����� ���� � ���.
� � �
Database Navigator �� �� �� � �� ������ �����
� �� �� ��� ����� ���. � �� �� �� �
��.
v ��� ��� �� � �� ��� ���� ��� �� �� �
�
v � ���� ��
v ���� �� ��
v ����� �� � �
v � ���� ��
v � �� ���� �� SQL ��
� ��
���� � ��
Database Navigator �� � � ��� ���� � ���� �
� ��� ��� �� ����� � ���.
�� � ��
Database Navigator �� � �� ��� �� � ���� � �
�� �� �� �� �� �� � �� ��� �� ���.
�� � ��
� � ���� �� ������ �� ������� ����.
Database Navigator �� � ��
v �� � � ��� ����, � �� ��( ��)� ������.
306 iSeries� DB2 UDB SQL ����� �� V5R2
v �� �� �� ��� ����� ��� �� ���� �����. �
�� �� �� �� ���� ��� �� �� ��� ���
�.
v ������ � �� � ����� ����, ������ � � ��
���.
v � � Database Navigator � ����, �� �� � �����.
Database Navigator � �
������ �� �� ��� �� Database Navigator ��� �.
��� �� ���� ��� � � ��� ������ ��
� �����. ��� ������� ���� ��� �� �� ��� ��
����� ��� ��� ������� �� ������� ��� ���
���� ����� ��� �� ��� �� ���. Database Navigator
���, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ →
Database Navigator� �����.
2. Database Navigator� ��� �� �� ��� ��� �����.
3. Database Navigator �� ��� � �� ����� �� � ��� ��
�� � ���� �, �� �� ��� �� �� ������ ��
���.
4. ���� ��(�, �� �� ��) �����.
5. ��� ����� ��� �� �� ��� �� �� ��
�� ����� � � �����.
�: iSeries Navigator �� � �� ��� ��� ������ �� �
��� �� �� ���.
�� ��� �� �� � ��� ���. �� ��, ��� ��
�� ��, ��� �� �� �� ��� �� �����. � � �� �
� � ���.
������ �� � � �� �� �� ���.
v ��� ���� ��
v ���� ���� ��
v ��� �� �� �
�� ��� ��� ��
Database Navigator� ��� ��� ��� SQL ����� �� ��
�. �� �� ����� ��� ���.
� 16 � iSeries Navigator� ��� �� ������ �� 307
v �
v ��
v ��
��� ��� SQL ����� ���, ��� �� ���.
1. Database Navigator ��� ���.
2. � � �� ��� �� �� ��� �� �����.
3. ��� ����� �� �����.
�� �� ��� ��
���� Database Navigator� � �� ����� ��� �����. ���
� ����� � ��� �� ��� ���� ��� ���.
���� ����� ����, ��� �� ����.
1. Database Navigator ��� ���.
2. �� ��� ��� � �� �����.
3. ��� � �� �� ��� �� ���� � � ��� �� ���� ��
�� ��� ������ ����� ���� ����� ���� ����
� �� �����.
4. � �����.
5. ��� ������ ������, �� ��� �� �����.
��� �� �� �
���� �� ��� ��� ��� ���, ��� ��� Database
Navigator� ��� �� ��� �� ���. � �� �� �����
� � �� ��� ��� ����� �� ��� �� ��� �� �
��.
��� �� ��� ����, �� ����.
1. Database Navigator ��� ���.
2. � ��� �� �� ��� �� �����.
3. ��� �� ��� �����.
4. ��� �� �� �� ��� �� �����. ��� ���� � iSeries
Navigator ��� ��, ��� �� �� �� ���� �� ��� ��
���. ��� ��� �� ��� ���� �� ��� �� �� �
��� ����.
5. ���� ���� �� �� ������ ����� �����.
6. ���� �� �� � � �� �����.
308 iSeries� DB2 UDB SQL ����� �� V5R2
SQL ��� �� ���� ������ ��
iSeries Navigator� SQL ��� �� � �� SQL�� ����� �, �
�, �� � ��� �� ���. ���� �� � �� �� PC �
�� ���. SQL ���� �� ��� ��� �� ���.
v SQL ���� �
v SQL ���� ��
v �� ����� �� � ��
v � � � ��
v SQL ���� �� �� �� ��
v ������ ���� �� SQL ��
SQL ��� �� �� � �� � ��� ���.
��
SQL ��� �� �� �� � � �� � ���. � ��� ����
SQL� �� ��� � ����. �� ��� ��� � �
��� ��� ���. SQL � �� �� �� �� ��� �
�� SQL ��� ���.
� � ��� ��� SQL�� �� ��(CL) �� �� ���. �� �
�� �� �� �� � �� �� �� �� �� ����.
�: � ��� ��� �� ��� �.
��
SQL ��� �� �� � � � �� � ��� ��� �� ���� SQL
�� �� ��� �� ��� ���� ���. ��� �� ���� SQL
�� �� �� ��� ���.
SQL ��� ��� �� � �� �
v iSeries Navigator� �� �� SQL ���� �� ��� ���. �
��� � �� �� ���� � � � �� iSeries Navigator� �
� �� �� ��� ���.
v ��� (;) �� ��� ����.
v � �� ��(--)� �� �� ��� � ���� �����.
v �� � �� ���, ″/*″� �� �� ″*/″� �� �����. �
�� ���� �� ��� � �����.
v �� ��� ��� �� � � ��� ���� ����.
v �� ��(CL) �� ��� � � CL: � ��� ���.
��� �� ��� �� ��� CL ���� ��� ���.
� 16 � iSeries Navigator� ��� �� ������ �� 309
SQL �� � �
SQL ����� ���, ��� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������� �
����.
2. ��� ������� ��� �� �� ��� SQL ��� ��
�����.
3. SQL ��� �� �� ��� �����.
4. �� ��� ��� � ���� �� ���� SQL �� ��
�� �� ���� �� SQL ����.
5. �� � ��� � �� ��� �� ��� �� ��� ��
�� ���.
�� �� ����, �� ��� �� �� ����� ��� ���.
����� ��� �� �� ���� ����.
����� � ��, ��� �� ���.
v SQL ���� ��
v � � � ��
v SQL ���� �� �� �� ��
v ������ ���� �� SQL ��
SQL �� � ��
SQL ����� ����, �� ��� ��� �� � �� �����.
v �� - SQL ����� ���� � � ���. ��� ��� � �
� ��� ��� ��, ����� ���� ��� ��� ��� � ��
�� ���.
v � ��� - ��� � �� ���� �� �� ��� SQL ����� �
� ����� � � ��.
v � - ��� �� ���.
�� ��� �� � ����. �� ��� ��� ��� ��� ���
� �� ��, ��� ���� � SQL��� ����.
SQL �� � ��� �� � ��
SQL ���� �� �� �� ����, �� ��� ��� �� � ��
�����.
310 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
� � �
�� � �� ����� � �����. � ��� ���� � ���
��� ��, SQL ����� �� ��� ��� ���� ��� � �
��� ���.
��� ���
��� �� �� ����� � �����. � ��� ����, ��
��� � �� ���� � ����� �� ��� ���� ���
�. � ��� ���� ���, � �� ����� ���� � SQL�
�� ���. ��, ��� ��� ��� � ��� ��� �
���� ������� �� ��� ����.
� � �� �� ��
SELECT�� �� �� � � �� �� � ����.
�� ���� ��� ��� ��
SQL ��� �� �� ���� �� �� ��� ����� �
�����. � �� ���� �� ��� �� ��� � ���
� �� Optimizer� �� ������ ��� ���� � ���.
�� ������ �� � �� ��
CALL� SQL��� �� SQL �� ����� ��� ����� ��
� ��� � ���. �� � ���� �� � �� � ���.
� ��� � � �� �� �� � ��� �� ��� ���. ���, �
�� �� �� ���� � ���. CALL �� �� ��� ��� SQL
��� �� CALL ����.
� �� ��
�� ���� �� ��� ���� ���. �� Optimizer� �� �����
� ��� ���� ���, �� ��� �� ���� ��� ��� �� ��
� �� �� �����. � � �� � �� ��� �� ��� ��
���, ��� ���� �� �� ��� �������. � � �� ���, �
�� �� ���.
�� ��� �� ���� �����.
�: �� �� ��� ��� �� � � �� ���� ���� � � ��
�� �� � � �� �� ���� � ���.
���� SQL ����� ���� ����, �� ��� ��� �� �
�� �����.
� �� �
�� �� �� ��� �� � SQL ���� �� ���.
� 16 � iSeries Navigator� ��� �� ������ �� 311
|
|
|
|
|
|
�� ��
���� �� SQL� �� ���. ���, �� SQL� ���
�� �� ��� � ��� ��� � SQL�� � ��� ���.
�� ��� �� � �� ��� ��� ��� SQL� ��� ���
�. �� ��, �� ��� �� �� �� �� ����� �� ��
�� SELECT�� �� ��� ���.
SQL �� ��� SQL� ���
SQL �� �� �� ������ ����� �� � ���� SQL ��
�� ���. � ����� ������ �. ���, �, ��, ��,
�����, ��, �� � �� �� SQL ��� ���. ���, ����
�� ���� ��� � �� SQL ��� ��, �� �� SQL ���
�. � � � �� � �� ���� �� SQL ��� ���. ��
�� �� �� SQL ���� �� � ��� SQL ��� �� ��� �
�� SQL ������� PC � � � � ���.
SQL �� �� ��� ��� ��� ��� �����.
v ������ ���� �� SQL ��
v ���� ��� ��
������ ���� �� SQL �
�� ������ ����� �� � ���� SQL ����, ��� �
� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. ����� �� SQL ����, ������ ��� �� �� ��
� SQL � �����.
3. ����� � ��� ���� �� SQL ����, SQL ���� �
� ����� ��� ������ �����.
4. SQL ���� �� ����� ��� �� �� ��� SQL �
�����.
�� �� SQL �� �� ��� �� ��� ���. �� ��
��� SQL �� ���� ��� ���. ��� SQL SQL ��� �
��� ���� �, PC �� ��� � ��� ���. �� �� �
�� SQL� ��� � �� ��� ��� ��� ��� ���� ����
�, � ���� �����, �� ���, �� ��� �� �% �
�� ���. � �� �% �� ��� ���. ��� ���� �
� �� ��� �.
312 iSeries� DB2 UDB SQL ����� �� V5R2
SQL� � �� ��� ��� ��
SQL ��� �� ���� ���� ��� ���. ����� ����, �
�� �� ���.
1. �� �����.
2. ���� ��� �� �� ��� ������ ����� ��� �� �
����.
3. �� SQL �� �� ��� ���� � �����.
���� ����� ����, ��� �� ���.
1. SQL� � � ����� ���� ����� �����.
2. �� �����.
iSeries Navigator� ��� �� � ��
37 ��� � 3 � �iSeries Navigator ������ ���� �� ��
�� � ��� �� ���. ���, iSeries Navigator� �� ���
� ���.
v �� �
v �� ��
v � ���� ��
v � ���� ��
v �� ���� ��
v ��� ��
v ��� � � � ���
v ���� �� ��� ��
iSeries Navigator� ��� �� �
��� �� ��� �����. � �� ��� ��� �� �� �� �
� � �� ��� ��� ���. �� �� �� �� ��� �� ��
�� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. ��� �� ��� ������ ��� �� �� �����.
3. �� ��� ��� ��� �� �� �����.
4. � �� �� ��� �� �� �� ��� �� �����. � ���
�� �� �� ��, �, ��, � �� ��� �� ���.
� 16 � iSeries Navigator� ��� �� ������ �� 313
|
|
|
|
|
|
5. �� �� ��� ��� �� �����. � ��� �� �� 50�
� ���. � ��� �����.
6. �/�� �� ��� ���� �� �� ��� �����.
7. ����� �� ��� ���� �� �� ��� �� �� ������
�����.
8. �� �����.
9. �� �� ���, � �� �� �� �� ���, � �� ��� �
� �� �� �����. ��� ��� ����.
10. �� ��� �� �� �� ���, � �� ��� ��� �� �� �
� �����. �� ��� ��� ���� �� ��� ���� �
����.
11. � �� � �� �� ��� �������.
12. � �� �� ����.
�: �� ��� ��� �� �� ��� �� �� �� �� �
� ���.
�� �� ��� ��� 62 ��� �ALIAS �� � � ��� ����
�.
iSeries Navigator� ��� �� ��
�� �� ��� ��� ��� ���. ��, �� ��� ���
� �� ��� �� ��� ����.
�� ��� �� �� ���. ��� ��� ����� ���� ��
�� ��� ��� �� �� ��� ���� �� �� ���. �� �
�� �� �� ��� ��� ������ �� � �� ��� ��� SQL �
�� ���� �� �����.
� �� ��, ���� �� ��� ��� �� �� ����� �� �
��� ��� ��. ��� �� �� �� ��� �� � �
�� ��� iSeries� DB2 � ��� �����.
��� �� �� � �� �� �� ���. iSeries Navigator� ��
�� ��� �� �� �� ���.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� ���� �� �� �� ������ �����.
3. ���� � ��, �� ���� �� ��� �� ���� ���
����� �����.
314 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. � ���� �� � � �� ��� �� � �����.
5. � �� ��� �����.
6. � �� ��� ��� �� �����.
7. ����� ��� ��� ��� ������ �����.
8. �� ��� �� �� �����. � ����, �� � ����
�. � ��� ����. � ��� �� �� �� � ��� ��
�. ��� � ����, �� �� �����.
9. � ��� ��� ����� ������(�� ����� ������) �
���, � �� � �����.
10. � �� �����.
11. ��� �� �� �� ��, ��� � � �����.
12. � �� �� ����.
�: � � �� �� �� ��� ��� � �� ��� ���.
�� � �� �� � ��� ��� ���� �� ���. ���
� ��� �� � � �� ��� � ���� �� ��� � ���
��, ���� �� �� �� �� �� ���. ���� ��� �
���, ���� �� �� �� ������ �� ��� �.
�� � �� ��� ��� 65 ��� ��� ���� �����.
iSeries Navigator� ��� � ���� ��
����� ������ ��� �� ���� ����. iSeries� DB2 UDB�
� �� ��� � ���� ���.
v �� � ����� � � ��� ��� ���� ����. �� ���
�� INSERT � UPDATE�� ��� ����.
v 1� � ����� ��� ����� � ���. ���� 1� � � ��
�� ��� ��� ���.
� ���� ���, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. � ���� ���� �� ��� ������ � � �����.
3. �� ���� �� ��� �� �� ��� ����� �����.
4. � ���� �� ��� � ���� � �����.
5. � ���� �� ��� �����.
6. � � ���� �� ��� �� ��� �� �� �����. ���
���� �� ��, ���� ���� �� ���.
� 16 � iSeries Navigator� ��� �� ������ �� 315
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7. �� ���� � �����.
8. 1� �� ��� 1�� ��� �� �� ��� ��� �����.
9. � �� � ���� �� ��� �������.
10. � �� �� ����.
�: � � �� �� �� ��� ��� � � ���� ��� ��
�.
�� � �� �� � ��� ��� ���� �� ���. ���
� ��� �� � � �� ��� � ���� �� ��� � ���
��, ���� �� �� �� �� �� ���. ���� ��� �
���, ���� �� �� �� ������ �� ��� �.
� ���� �� �� ��� ��� 151 ��� � 10 � ��� �� �
����.
iSeries Navigator� ��� �� ���� ��
� ����� ��� � ��� ���� �� ��� �� � ��
� ��� ���.
� ���� ���, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. � ���� ���� �� ��� ������ �����.
3. � ���� ���� �� ��� �� �� ��� ����� �
����.
4. � ���� �� ��� �� ���� � �����.
5. �� ���� �� ��� �����.
6. �� ���� �� �� �� ��� �� ��� �� �� ����
�. ��� ���� �� ��, ���� ���� �� ���.
7. � ���� ���� ���� � � � �����. � �� ��
�� ����.
8. ���� ���� ���� �� ���� � � �����. ���� �
�� ����.
9. ���� �� ����, �� �� � � �����. � �� ��
�� �� �� �� ���� �� ���. �� � � ��
� � �� ����.
10. ���� ��� � � ����.
11. � �� � ���� �� ��� �������.
316 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12. � �� � ���� ����.
�: � � �� �� �� ��� ��� � � ���� ��� ��
�.
�� � �� �� � ��� ��� ���� �� ���. ���
� ��� �� � � �� ��� � ���� �� ��� � ���
��, ���� �� �� �� �� �� ���. ���� ��� �
���, ���� �� �� �� ������ �� ��� �.
� ���� �� ��� ��� 151 ��� ��� ���� �� � ���
�����.
iSeries Navigator� ��� �� ���� ��
�� �� � �� � ��� �� ��� ��� ������ � �� �
���. �� ���� �� ������� �� � ��� ��
�.
�� ���� ���, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� �� �� ������ � � �����.
3. �� ��� �� �� ��� ����� �����.
4. � ���� �� ��� �� ���� � �����.
5. �� ���� �� ��� �����.
6. � �� ���� �� ��� ����� �� �����. ��� ���
� �� ��, ���� ���� �� ���.
7. �� �� �� � ���� � �����.
8. �� �� �� �� ������ �����.
9. �� �� �� �� �� �����.
10. ��� �� �� �����.
11. �� ��� �����.
12. �� ��� �����(�� ��� ���).
13. � �� � ���� �� ��� �������.
14. � �� �� ���� ����.
�: � � �� �� �� ��� ��� � �� ���� ��� ��
�.
� 16 � iSeries Navigator� ��� �� ������ �� 317
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
�� � �� �� � ��� ��� ���� �� ���. ���
� ��� �� � � �� ��� � ���� �� ��� � ���
��, ���� �� �� �� �� �� ���. ���� ��� �
���, ���� �� �� �� ������ �� ��� �.
�� ���� �� ��� ��� 153 ��� ��� ���� �� �� ����
�����.
iSeries Navigator� ��� ��� ��
���� ��� �� �� ��� �� ������ � �� �� � ���
� ���� �� ����. � ��� �� �� ���. �� �� ���
��� ���� �� �� �� ��� ��, �� �� ���� SQL INSERT,
UPDATE �� DELETE� ���. ���� � �� ��, �� �� ��
� �� �� �� � � ���.
iSeries Navigator� ���, ��� ���� SQL ���� ��� ���. �
��, ���� ����� � ���� � ���.
���� ����, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. ���� ���� �� ��� ������ �����.
3. ���� ���� �� ��� �� �� ��� ����� ���
��. � ���� �� ��� �� � �����.
4. ��� ���� ���� ��� �� �� �����.
5. SQL ���� ���� SQL �� �� �����.
��� ��� �� ��� ��� ������ ����� �� ������
� �� ��� ���� �����.
SQL ��� �� ��� ��� 166 ��� �SQL ����� �����.
��� � � � ���
���� ���� ���� �. ���, ���� � ���� � ��
�� ��� �� � �� �� ���.
���� ����� � ���� ��, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. ���� ����� � ���� �� �� ��� ������ ��
���.
318 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. �� ��� �� �� ��� ����� �����.
4. � ���� �� ��� �� � �����.
5. ����� � ���� �� ���� ��� ���� ����� �
� ��� ���� � ���� �� �� �� �����.
CHGPFTRG CL � ��� ��� � � � ��� �� ��� ����
�� ����� �� ��� � � � ��� �����.
���� � ��� ��
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. ������ ���� ���� �� ��� ������ �����.
3. ������ ���� ���� �� ��� �� �� ��� ���
�� �����.
4. � ���� �� ��� ���� ������ ���� �� �� � �
����.
5. ���� ���� ��� ��� �����.
iSeries Navigator� ��� SQL ���� ��
iSeries Navigator� ���� � SQL ����� ��� ��� �� ��
�. �� ��, �� ��� ���.
v �����: �����( �� ������� �)� ��� �� ��� SQL
�� � ��� �� � �� �� ��� �� ������.
SQL� ������ ��� ��� ������ ��� �� ���. � �
�� �� � � � �� � �� ����� � ����� ��� �
��. ����� �� ��� ��� 177 ��� � 11 � ��� ����
��� �����.
v ��� �� ��: ��� �� ��(UDF)� ��, �� � SQL� 3�� ����
���� ���. �� �� UDF� � �� �� � �� ��
�. SQL� �� �� UDF� ���� �� ��� � ���� �.
���, � � � �� �� ���. �� �� ��� ��� 221 �
�� ���� �� ��(UDF)� �����.
v ��� �� ��: ��� �� �� ��� DB2 �� �� �� ��� ���
�� ��� �� ��� �� � �����. ��� ��� ��� ��
��� �� ���� ��� �� �� ��� �� �� ���
� ��� �� �� ��� �� ��� �� �� ���� ���
� �� DB2 �� ��� �� �� ��� ���. ��� �� �
� 16 � iSeries Navigator� ��� �� ������ �� 319
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
� ��� ��� ������ �� �� 1� 1� ��� � ���.
�� �� ��� ��� 240 ��� ���� ��� ��� ��(UDT)� �
����.
iSeries Navigator� ��� ��� ���� �� �� ��� ��� ��� ��
� �����.
v �iSeries Navigator� ��� �� ����� ���
v �iSeries Navigator� ��� ��� �� �� ���
v 321 ��� �iSeries Navigator� ��� ��� �� �� ���
iSeries Navigator� ��� �� ����� ��
SQL ����� ������ ���� ����, �� �� ������ ��
�� ���� �. ������ ���� ����� ����� �� �
�� ��� ���.
������ ���� ����, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� ���� ������ ��� �� �� ��� ��� ��
���.
3. ������ �����.
4. �� �� ������ ��� ��� �����.
5. SQL �� ������ ��� SQL �����.
�� �� ����� � � �� �� ��� ��� 178 ��� ��� ���
�� ���� �����.
SQL �� ����� � � �� �� ��� ��� 179 ��� �SQL ��
��� ���� �����.
iSeries Navigator� ��� ��� �� �� ��
��� �� ���� ���� ����, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� ���� ������ ��� �� �� ��� ��� ��
���.
3. �� �����.
4. �� ��� �� �� ��� ��� �����.
5. SQL ��� �� �� ��� SQL �����.
320 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. � �� �� �� ��� ��� �����.
�� �� � � �� �� ��� ��� 221 ��� ���� �� ��(UDF)�
�����.
iSeries Navigator� ��� ��� �� �� ��
�� �� �� �� ��� ��� �� �� �� �� ���� �
�� �� � ��� �� ��.
��� �� �� ���, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� ���� ������ ��� �� �� ��� ��� ��
���.
3. �� �����.
4. � �� �� ��� �� �� ��� �� ��� �� ����
�.
5. �� ��� �� �� �� �� ��� ��� ��� �� �� �� ��
���.
6. � �����.
��� �� �� � � �� �� ��� ��� 240 ��� ���� ���
��� ��(UDT)� �����.
SQL ��� ��
SQL ���� ��� SQL�� ��� ��� ��� � ���� �� �����
�. SQL ���� ��� ��� ″�� ��″ ��� ��� ODBC �� �
� ����.
SQL ���� ��� �� ����.
1. iSeries Navigator ��, �� → ������� �����.
2. ��� �� ���� ���� ������� ��� � SQL ���� �
����.
3. SQL ��� �� �� ���, �� �� ���� �����.
4. � �����.
���� �� ���� 417 ��� �CRTSQLPKG(��� �� �� ���
�) �� �����.
� 16 � iSeries Navigator� ��� �� ������ �� 321
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
� 17 � ��� SQL ��
� ��� SQL� �� �� ��� SQL ��� �� � ��� ��
��� �� �� ���. ��� SQL �� �� ��� �� ���
�. SQL ��� �� ��� � 2 � �SQL �� �����. ��� ��
��� SQL ��� �� ��� ����� 334 ��� ���� SQL� ��
� ������ ���� �����.
��� ��� ���� SQL� �� ��� �����.
�:
1. �� ���� ���� ���� ����.
2. �� � �� ��� x ��� ��� ���� ���� �����.
��� SQL� � ��
��� SQL� ������ ������ ���� ��, ��� � � ����
�� ���� �� ��� �� ��� ��, �, �� �� ��� �
��. ��� SQL ��� ������ � � ��� ��� ����
�� ����� ��� � SQL� ��� ���. ������ ��
�� ��� SQL �� � ��� ��� ���, ���, � ��
��� ��� ��� �� ��� ���� �� ��� ��� ��
�.
��� SQL�� ���� �� �� ���� �� ���� ����. �� ��
� ��� ��� ��� � ���� ����.
��� ��� ����� F1(� ) �� �� ����� � � �
��.
��� SQL� ��� �� ��� ��� ���.
v ��� �� ���� �� �� �� ��� ���.
– ��� SQL�� �� � �
– ��� � � ��
– SQL� �� ���
– �� ��� ���� �� �
– �� ��� ��
– ��� �� �� ��
© Copyright IBM Corp. 1998, 2002 323
– ��� SQL ��
v ��� ���� ��� SQL� �� � �� SQL� ��� �� F4=���
� � ��� ��� �� �� �� ���� ����. �� F4 ��
�� �� SQL�� ��� �� ���. � ���� �� ���
��� �� �� ��� �����.
v ��� �� ��� �� �� ��� ������, ���, �, ��,
�, ���� �� SQL ���� ���� ��� ���.
������� ��� �� ��� SQL� ��� ���.
v �� ��� ���� �� �� �� ��� ���.
– �� � ��
– �� �� �
– �� ��� �� �� ��
– �� � �� ��
��� ��� ��� � �����.
v ���� SQL ��
v 326 ��� ��� �� �� ���
v 326 ��� �����
v 329 ��� ���� �� �� ���
v 332 ��� ��� ��� ���
v 333 ��� ���� SQL ����
v 334 ��� �� SQL �� ���
v 334 ��� �SQL �� ���
v 334 ��� ���� SQL� ��� ������ ���
��� SQL �
OS/400 �� STRSQL �� ��� SQL �� �� ���. �
� ��� �� ��� �� ��� � B �iSeries� DB2 UDB CL � �
�� �����
SQL �� ��� ����. �� �� ��� SQL ����. � ���, SQL
� ��� �� ��� ���.
v F4=���
v F13=�� ���
v F16=��� ��
v F17=� ��
v F18=� ��
324 iSeries� DB2 UDB SQL ����� �� V5R2
SQL� ��
SQL�� ��� � Enter �� �����.�� ��� ������ rdjacque� ���� ����.
===>___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
� ��F3=�� F4=��� F6=� �� F9=�� F10=� ��F12=�� F13=��� F24=�� �
��� �� �� ��� F24(��) �� ����.
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
� ��
F14=� �� F15=� �� F16=���(���) ��F17=� �� F18=� �� F24=�� �
(�) (��)
�: ��� �� �� ��� ��, � ��� �� �� ��� �� ��� �
��.
��� ��� ��� �� ���� ���.
v STRSQL � ��� ����
v � SQL� ��� �� ���� �� �� ��� SQL�
v �� ��� �� �� ��� �� ����
v ���� �� ��� ��
��� SQL� ��� ID� �� ��� �� ID� ���� �� �� ID� ��
�. � �� ID ���� �� ��� ID� �� � ���� �� � �
��� ��� ��� ��� SQL ��� ���. �� ��� ���
SQL ��� �� ��� ID� �� �� ��� ��� �� ���.
SQL ��� �� ����� � ��, STRSQL � ��� �� ���
� ���. � SQL ��� ���� ����.
� 17 � ��� SQL �� 325
�� � �� ��
�� �� ��� ���� ��� SQL ��� � �� ��" � �
����. ���� � ��� SQL� ��� � �� �� ���� �
�.
�� �� ��� ���� �� SQL� ���� ���� Enter �� �
� SQL� ���.
�� ��
� � ��� ��� � � ��� � � � � ���. ��
� SQL� SQL� �� �� ��� � ���. ��� ���� � �
��� � ���� ��� �� ���. �� � � �� ���
���.
��� SQL �� ������ �� ��� �� ��� ��� � ��� �
��(�� ��)� �� ���� ���. ����� �� �� ��� ���
���� ��� ����. �� �� ��� ��� ��� ����� F1(
� ) �� ����.
�� ��, � � ���� �� ��� ���. ���� �� ���
�� ������ �� �� ��� �� F9( �) �� ����. ����
SQL� �� �� ��� ��� ��, ��� ��� ��� ��� ��.
���
��� ��� ���� ��� �� �� ��� ��� ���� � �
�. ��� ��� *RUN, *VLD, *SYN� � �� �� �� ��� ���
���.
���� ��� �� ��� � �� ��� ���.
v F4(���) �� �� � ��� ��� ���.
��� ��� ��� �� ��� �� ����.
SELECT� ��� F4=���� �� �� ��� ����.
326 iSeries� DB2 UDB SQL ����� �� V5R2
SELECT� ��
SELECT� ��� ��� � ���� ��� F4� �����.
FROM � . . . . . . . . . . _____________________________________________SELECT � . . . . . . . . . _____________________________________________WHERE �. . . . . . . . . _____________________________________________GROUP BY � . . . . . . . . _____________________________________________HAVING � . . . . . . . . _____________________________________________ORDER BY � . . . . . . . . _____________________________________________FOR UPDATE OF � . . . . . _____________________________________________
� ������� ��� � Enter �� �����.
� �� DISTINCT � . . . . . . . . . . . . . N Y=�, N=���� SELECT UNION . . . . . . . . . . . . . . N Y=�, N=����� �� �� . . . . . . . . . . . . . . . . . N Y=�, N=���
F3=�� F4=��� F5=���� F6=� �� F9=�� �� ��F10=� �� F12=�� F14=� �� F15=� �� F24=�� �
v SQL �� �� �� �� ��� � F4(���) �� ��. ���
���� ����. ��� ���� � � ��� ��� SQL�� �� �
� �� ����. *NONE ��� �� �� �� �� ��� ��, ���
� �� SQL� ���. �� � ��� � ��� ��, ��� SQL�
�� �� ���� ����. ���� ���� ��� ��� ��
� ���. ���� ���� ��� �� �� ����.
� � ��� �� F4=���� �� �� ��� ����.
SQL� ��
� � �� �����.
1. ALTER TABLE2. CALL3. COMMENT ON4. COMMIT5. CONNECT6. CREATE ALIAS7. CREATE COLLECTION8. CREATE INDEX9. CREATE PROCEDURE10. CREATE TABLE11. CREATE VIEW12. DELETE13. DISCONNECT14. DROP ALIAS
��...��
__
F3=�� F12=��
��� ��� F21(�� ��) �� �� ���� � ��� ��� �� �
��� SQL� ���.
� 17 � ��� SQL �� 327
��� �� Enter �� �� ��� �� �� �� ��� ���� ��
��. �� �� ��� *RUN ��� ��� ���. ��� ���
���� �� � �� ��.
�� ��
��� ��� ���� SQL�� ��� ����. ���� ����� � �
�� ����� ���. ���� �� ���� ��� � � ��
�� �. ��� ��� ���� ���� ���.
�� �� ��
�� �� ��� �� � �� ��� ��� ���. *RUN(��) ��
*VLD(��� �) ���� ��� SQL� ��� ��� ���� ���
� ���. *SYN(�� ��) ���� �� SQL�� ����. � ��
� ��� *SYN �� *VLD ��� ���� ���. ��� ����� �
��� ����.
�� ��
� ��� WHERE �� HAVING� �� �� ��� ��� ���. �
�� �� ��� ��� WHERE �� HAVING �� � � � F9(�
�� ��) �� ����. ��� � �� ��� ��� �� ��� ���
�. F9 �� � � � ��� ��� ��� ��� � �� ��� ��
�� ����. ��� � �� �� � ��� �� ��� ����. �
�� �� ��� ��� 117 ��� �SELECT ��� � ���� ���
��.
CREATE TABLE ���
CREATE TABLE �� ���� ���� � �� �� �� ��� ��
�. ��� ��� � �� �� �� F4(���) �� ����. �� � ��
�� �� ��� ��� �� �� ��� ��� ����.
18��� � � �� ���� F20(��� ��) �� ����. 30�� ��
��� �� � � ��� �� �� ����.
�� �, F6(� ��) �, F10(� ��) � � F14(� ��) �� � �� ����
�� ��� ���� ��� ���.
DBCS �� ��
� � � DBCS ��� ��� ��� SQL �� ���� SQL ����
� ��. � �� �� � SI ��� SO ��� �� ��� �. ��
�� � ��� � ��� � DBCS �� ��� ��� � � SI �
� � SO ��� ����. �� ��� � SI� �� �� �� �� � ��
� SO� �� � ��, SI � SO ��� � �� � � ��� �� ��
328 iSeries� DB2 UDB SQL ����� �� V5R2
��. �� ��� � �� 1��� �� � SI� �� �� �� � �� �
SO� � ��, SI, ��, SO ��� � �� � � ����. ��� �� DBCS
��� �� � �� ����� ���� ��.
� ��, ��� WHERE ��� ����� ���. ��� ��� � � ���
��� �� � ����.
SELECT� ��
SELECT� ��� ��� � ���� ��� F4� �����.
FROM � . . . . . . . . . . TABLE1_______________________________________SELECT � . . . . . . . . . *____________________________________________WHERE � . . . . . . . . COL1 = ’<AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQ>
<RRSS>’______________________________________GROUP BY � . . . . . . . . _____________________________________________HAVING � . . . . . . . . _____________________________________________ORDER BY � . . . . . . . . _____________________________________________FOR UPDATE OF � . . . . . _____________________________________________
Enter �� �� � ��� ��(SO/SI)� ���� �� ���� �� ��
��. ��� SQL �� ��� ��� �� ����.
SELECT * FROM TABLE1 WHERE COL1 = ’<AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSS>’
��� �� �� ��
�� ��� ��� F4 �� ��� SQL �� ��� F16, F17 �� F18 �
� �� ��� �� �� ��� ���. �� �� �� ���� � �
� �� ��� ������, ���, �, ��, ��, �, ����, �����, ��
� �� ���� ���� ����. �� ���� �� �� �� ����
��� ����, ���� �� �� ����.
��� ���� ��� ��� �� ���� � ��� �� ���
���. ��� ��� �" � ��� �� ��� ��� �� �� ���
�.
�� �� � �� ���� �����. �� �� �� ���� ��� ��
�� �� ���� �� � ��� ��� ��, F18(� ��) �� ����. �
� � F17 �� �� �� �����. � ���� �� ��� ��, � ��� �
� ����. ����� � �� �� ����� ���.
SQL �� ��� SQL� ��� �� ��� ���� ��� ���. �
��� ��� �� SQL �� �� ����. ��� ��� ��� �� �
�� ��� ���� �� � ���� ����. ��� ��� ��� ����
� ��� ���� ���� �.
� 17 � ��� SQL �� 329
��� ��� ���, � � SQL ��� ��� �� ���. ��� ��
��� ��� SQL�� �� ��� � � ���. SQL� �� �
�� �, � � SQL ���� �� ������ ��� ��� ���.
�: ��� �� �� ��
�� �� SELECT� ��� �� ��� �� ��� ���.
��� �� � ��� ���.
v OS/400 �� STRSQL �� ��� SQL �� �� ��.
v �� ��� ���� �� ��� ����.
v �� �� �� *SQL �� ��.
�: ��� �� �� ���� ���. �� ���� ����.
SQL� �� �� ����.
1. � �� �� �� � SELECT� �����.
2. � �� �� �� � FROM �����.
3. ��� FROM � ����.
SQL� ��
SQL�� ��� � Enter �� �����.===> SELECT
FROM _
4. � ��� FROM � �� �� F17(� ��) �� �� �� ���� ��
���.
���� ���� � ��� �� ��� ���� ����(��� �� � �
��� ��). �� SQL �� ��#�� �� ���� ��� ���
�.
5. YOURCOLL2 ��� � Seq � 1 �����.
���� �� � �� ��
���� ���� ��(1-999)� ��� Enter �� �����.
Seq ��� �� ���YOURCOLL1 SYS �� �
1 YOURCOLL2 SYS �� �� �YOURCOLL3 SYS �� ��/����YOURCOLL4 SYS �� ��
6. Enter �� ����.
330 iSeries� DB2 UDB SQL ����� �� V5R2
�� �� � ���� � ��� ���� YOURCOLL2 ��� �� ��
���.
7. 1 PEOPLE �� �� Seq � �����.
�� �� � �� ��
�� ���� �� ��(1-999)� ��� � Enter �� �����.
Seq � ��� �� ���EMPLCO YOURCOLL2 TAB �� �� �
1 PEOPLE YOURCOLL2 TAB �� �� �EMPLEXP YOURCOLL2 TAB �� ��EMPLEVL YOURCOLL2 TAB �� �� ���EMPLBEN YOURCOLL2 TAB �� � ���EMPLMED YOURCOLL2 TAB �� �� ���EMPLINVST YOURCOLL2 TAB �� � ���
8. Enter �� ����.
SQL �� ��� FROM �� ��� � �� YOURCOLL2.PEOPLE� �� �
� ����. � ��� *SQL �� ��� ���� �� ����.
SQL� ��
SQL�� ��� � Enter �� �����.===> SELECT
FROM YOURCOLL2.PEOPLE _
9. ��� SELECT � ����.
10. � ��� SELECT � �� �� F18(� ��) �� �� �� ����
�����.
PEOPLE �� � ��� � �� � �� �� ��� ����.
11. 2� NAME � �� Seq � �����.
12. 1 SOCSEC � �� Seq � �����.
� �� � �� ��
�� ���� �� ��(1-999)� ��� � Enter �� �����.
Seq � � �� ��2 NAME PEOPLE CHARACTER 6
EMPLNO PEOPLE CHARACTER 301 SOCSEC PEOPLE CHARACTER 11
STRADDR PEOPLE CHARACTER 30CITY PEOPLE CHARACTER 20ZIP PEOPLE CHARACTER 9PHONE PEOPLE CHARACTER 20
13. Enter �� ����.
SQL �� ��� SELECT �� ���� SOCSEC, NAME� �� �� ���
�.
� 17 � ��� SQL �� 331
SQL� ��
SQL�� ��� � Enter �� �����.===> SELECT SOCSEC, NAME
FROM YOURCOLL2.PEOPLE
14. Enter �� ����.
�� �� ��� ���.
� ��� �� ��� �� � �� ��� ��� ���� ���
� � �� ���� ���� ��� � � �� ���.
� ��� �
SQL� �� ��� F13 �� �� ��� SQL �� ��� ��� ����.
� ���� �� � ��� ��� � , �� �� �� ��� ��
�� ���.
�� 1(�� � ��)� �� � �� �� ��� �� ��� SQL ��
���� ��� ��� �� ���. � ��� ��� ��� ��� �
� �� �� �� ����.
�� �� � ��� ���.
v �� �� �
v �� �� ��
v SELECT �� ��
v ���� ���
v �� ���� SQL ���� �� SQL ����� ��� �� ��� ��
v ��� ��� �� ���� ��
v �� �� �� ��
v �� ��
v ���� � ��
v �� ��
v �� ��
v �� � ��
v �� ��
v �� ��
v SQL ��� ���
332 iSeries� DB2 UDB SQL ����� �� V5R2
v �� ��
v �� ���
�� 2(�� �� � )� �� �� �� � � �� � �� �� �
� �� �� ���. �� ��� �� ���� ����. ���
�� SQL�� ��� �� ���� SQL �� �� �� �� � ��.
�� 3(�� ��� �� �� ��) �� SQL� �� ��� �� ���
�� SQL�� ���� ��� ���. ��� ������ ��� �� �
��� ���� ����.
�� 4(�� � �� ��)� ���� �� � �� ��� �� ��
� �� �� ���. �� �� �� ���� ����. � �
��� ���� �� �� ����(SEU)� �� ��� �� ���� �� �
��� ���.
�: �� 4� SQL ��� �� ��(HLL) ����� �� SQL� ���
���. �� 4 �� �� �� �� RUNSQLSTM(SQL� ��) �
� �� �� �� ���� ��� ���.
��� SQL ���
SQL �� ��� F3(��) �� ��� SQL ��� �� �� � ��
�� ���.
1. �� �� � ��. ��� SQL� ���. ��� ��� ���� �� �
�� SQL �� � ����.
2. �� ��� �� ��. �� ��� �� ��� SQL� ���.
3. �� ��. ��� SQL ���� SQL �� ���� ��. ��� ��
���� � ����.
4. �� � �� ��. �� � ��� �� ���. �� ��� �
�� ��� � ‘�� � ��’ ��� ����. ��� SQL�� �
�� ��� ��� �� � �� �� �� ���.
�:
1. �� 4�� SQL ��� �� ��(HLL) ���� �� SQL� ���
���. ���� �� ���� �� �� ����(SEU)� ����
�. �� �� ���� RUNSQLSTM(SQL� ��) � �� �� �� �
� ��� ���.
2. �� ���� �� � � �� �� ��� ��� �� ��� SQL
���� � �� ���� ����.
� 17 � ��� SQL �� 333
�� SQL � ��
��� SQL �� ��� �� 1(�� �� � ��) �� �� ��� SQL
��� ��� ��, �� ��� ��� �� �� ��� ���. �
�� �� 1 �� � ��� �� ��� �� ��� ��, ���
SQL� �� ��� ��� �� �� ��� �. �� �� ��
� �� ��, ��� SQL� �� ��� ���� ��� ID � �� ��
�����. ��� ID �� �� ��� �� ��, ���� ��� ID
� �� ��� �� �� ��� �� ��.
�� �� � �� ��� �� 1 ��� � � �� ��� �� 2 �
� �� �� ��� �� 1� ��� ��� ��� ���. ��� SQL
� �� ��� �� 1 �� ��� �� ��� �. �� ��� �� �
����� ��� SQL� ��� �� 2 �� ��� �� ��� �. �
� �� ������ ���� ��� �� 1 �� � �� �� ��.
��� ��� �� 3� ���� ��� �� 2� ��� ISQL �� ��
� ��� ���. � ��� �� ��� SQL �� ��� �� 2(�� �
�� �� ��)� ������ ��� �� 1� �� ���� � ��
�.
SQL � ��
�� ��� �� ����� ��� SQL� �� �� ��(�� STRSQL �
� ��� �) SQL �� �� �� ���. � ���, �� � �� �
� ���.
v �� 1(�� SQL �� �� �) ������ �� �� ���.
v �� 2(�� SQL �� �� � ��� �� �)� ������ �� ��
��� ��� �� ��.
� �� ��� ��� ���� � ��� STRSQL �� �
��� ���� ����. � �� ��� �� ���� �� ���
�� ���� ��� STRSQL ��� � ��� ���� ��� � ��
� ���� ����. ���� ��� � � �� �� �����
�� ���� ���.
��� SQL� ��� ������ ��
��� SQL� SQL CONNECT� ��� ��� ��� ������� ��
� ���. ��� SQL� CONNECT� �� CONNECT(�� 2) ��(
� � ��)� ���. ��� SQL� SQL �� �� � �� RDB �
�� � ��. CONNECT�� ��� � ���� ��� ��� ����
�� � ����. ��� ��� � � COMMIT(*NONE)� ���� ��
334 iSeries� DB2 UDB SQL ����� �� V5R2
�� ��� ��� ��� *NONE� �� ��� �� ��� �� �� *NONE
� �� �� �� ��� ��. ��� �� � � ��� �� ��
� ��� ������ �� � � �� � ���. ��� ��
� ��� 382 ��� �� �� ��� �����. ��� ��� �����
� �� ��� ����.
v � � ��� ��� �� ������ ��� �� �� ���� �
�� ��� �� � � RELEASE ALL � COMMIT� �
����.
v �iSeries� DB2 UDB ������ ��� �� �� ���� ��� �
�� ��� � � RELEASE ALL � COMMIT� ���
��� *CHG� �� �� �� �����.
�iSeries� DB2 UDB ������ ��� �� � �� �� �� �� ���
��� ��� ��� ��� ����. �� �� ���� � ���.
� 36. ��
�� �� � � �� �
�� �� *YMD
*DMY
*MDY
*JUL
*ISO
*EUR
*USA
*USA
�� �� �� : ��� �� *HMS�
��� �� *HMS
*JIS
*EUR
�� �� *CHG,
*NONE
*ALL
*CS �� �� ��
�� �� *SYS *SQL
�� �� �� *NO, *YES *OPTIMIZE
�� �� *ALWAYS *FORWARD
�� *SYSVAL *PERIOD
�� �� *HEX �� � *HEX
�:
1. �� 2 ��� 3 ��� ���� �� �� �� �� ��, �� ��
� *HEX� ����.
2. DB2/2 �� DB2/6000 ������ �� �� � ��� �� � �� ��
� �� ��� �.
�� ��� � �� �� ����� ��� ���� ����. ��� ��
�� �� ��� �� �� ��� ���. ��� SQL� ��� �
�� �� � ��� �� �� �� ���� ���.
� 17 � ��� SQL �� 335
��� SQL� ��� ��� �� � ����� � �� �� ��� ���
��� �� �� ��� �� ��� �� �� ��� �� ���. �
� ��� SQL ��� � ��� ��� �� ��� �� ���� ���
�� �� ���. ��� ��� ��� ���� ���. � ��� �
�� SQL �� ��� �� �� �� ��� ���� ��� �� ���
��� ���.
�� ��� ������ ��� ��� ���� �� ���� ��� ��
�. �� ���� DESCRIBE TABLE� ��� ��� ������ ���
���� ��� � ��� ��� ���.
�� ��� ��� ���� �� �� � �� ��� SQL �" ��
�� ��� ����. � �� �� � �� � ��, �� ��
COMMIT �� ROLLBACK �� ���. ��� SQL ��� �
RELEASE ALL � COMMIT� �� � ��� ���.
�iSeries� DB2 UDB ������ ��� ��� �� �� ��� SQL �
��� � �� ��� ���. ��� ��� � ������ ����� �
�����.
�: �� ��� ��� ‘CREATE TABLE XXX’� �� ��� � ��
�. ��� ���� �� ���� ���� ���� ��� ����
���� ���.
336 iSeries� DB2 UDB SQL ����� �� V5R2
� 18 � SQL� ��� ��
� ���� SQL� ����� ���. � ����� SQL� �
(RUNSQLSTM) � ��� ���.
SQL� ����� SQL�� �� ����� ��� �. �� ��� ��
� �� �� �� ���� ��� ��� ���. ��� ������ �
� �� ��� � � ��. SQL� ����� ��� �� ��
� ��� ���.
v ALTER TABLE
v CALL
v COMMENT ON
v COMMIT
v CREATE ALIAS
v CREATE DISTINCT TYPE
v CREATE FUNCTION
v CREATE INDEX
v CREATE PROCEDURE
v CREATE SCHEMA
v CREATE TABLE
v CREATE TRIGGER
v CREATE VIEW
v DECLARE GLOBAL TEMPORARY TABLE
v DELETE
v DROP
v GRANT(�� �� ����� �)
v GRANT(��� �)
v GRANT(� �)
v GRANT(��� �� �� �)
v INSERT
v LABEL ON
v LOCK TABLE
v RELEASE SAVEPOINT
© Copyright IBM Corp. 1998, 2002 337
|
|
v RENAME
v REVOKE(�� �� ����� �)
v REVOKE(��� �)
v REVOKE(� �)
v REVOKE(��� �� �� �)
v ROLLBACK
v SAVEPOINT
v SET PATH
v SET SCHEMA
v SET TRANSACTION
v UPDATE
�� ��� ��� ��� �� ��� EXEC SQL� ��� ���. ��
��� ��� �� 80 �� ��, �� 80��� � �. �� ��� ���
� �� �� �� ���. � ��� �� ��(--)�� ��� ��
�� ��. ��� /*� ��� ��� */ �� � � � �
� �� ���. ��� ��� ���. SQL�� ���� ��
�� ����. SQL� �� �� ��� � � ���� � �� ��
��. ��� � �� QSYSPRT��.
�� ��� �� ���� �� ���� RUNSQLSTM �
PROCESS(*SYN) ���� �����.
��� ��� ��� � �����.
v ��� �� � �� ���
v 339 ��� �SQL� ����� �� ���
v 339 ��� �SQL� ����� ����
v 340 ��� �SQL� ���� �� �� �� ����
� � � ��� ��
��� RUNSQLSTM �� �� ��(ERRLVL) ��� �� ��� ��
�� �� ��� �� ��, ��� ���. ��� ��� ��� ��
��� ��� � ��� ��� �� ��� ��� ���. ��
SQL ��� 30� �� ���. SQL� �� � ��� ���
RUNSQLSTM �� ERRLVL ���� 30 ���� �����.
338 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
SQL� ����� �� ��
�� �� ��� RUNSQLSTM � ����. *NONE ��� �� �� ��
� ����� SQL�� �� �� ��� ���. �� ��� ��� ��
���� COMMIT� SQL� �� ���� �� ���. ��� ���
ROLLBACK� ���. ��� � �� �� RUNSQLSTM ��
ERRLVL ��� ��� ��� ��� ��� �� ���.
SET TRANSACTION�� �� �� �� RUNSQLSTM �� ��� �� �
� �� ���� ��� ���.
�: �� ��� �� SQL� �� ���� ���� �� � �� ��
��� �.
SQL� ���� ���
SQL� ������� CREATE SCHEMA� ���. �� � �� ��� �
� �� � ����. � �� ��� ��� �� ��� ���. �
�� ��� ���� ����� ��� DDL�� ���.
� �� ��� �� � �� �� � �� �� ���.
v CREATE SCHEMA collection-name
�� ���� �� ���� ���.
v CREATE SCHEMA AUTHORZATION ��
�� ���� ������ �� ���. ��� ��, ���� ��
��� ��� ��� ��� �� � ��� �.
��� �� ��� �� ��� �� ����� �.
– CREATE COLLECTION� ��� �
– CREATE SCHEMA � �� � SQL� ��� �
CREATE SCHEMA�� � �� ��� � ���� �� �� ����
���.
v COMMENT ON
v CREATE ALIAS
v CREATE DISTINCT TYPE
v CREATE INDEX
v CREATE TABLE
v CREATE VIEW
v GRANT(� �)
� 18 � SQL� ���� �� 339
v GRANT(��� �� �� �)
v LABEL ON
�� ��� ��� � �� �� �� � ���. ��� ��� ���
�� ��� ���. � SQL�� � ��� �� � ��� ���� � �
�� ��� �� ��� �.
��� ��� � �� � � ���� ��� �� ����� ��� ��
�� ��� ��� �. ���� �� �� ��� ����� �� ���
�� ����� �. ��� �� ��� �� ��� �� �����
�.
SQL� ���� �� �� �� ���
�� � �� ��� x ��� ��� ���� ���� �����.
5722ST1 V5R2M0 020719 Run SQL Statements SCHEMA 08/06/02 15:35:18 Page 1Source file...............CORPDATA/SRCMember....................SCHEMACommit....................*NONENaming....................*SYSGeneration level..........10Date format...............*JOBDate separator............*JOBTime format...............*HMSTime separator ...........*JOBDefault Collection........*NONEIBM SQL flagging..........*NOFLAGANS flagging..............*NONEDecimal point.............*JOBSort Sequence.............*JOBLanguage ID...............*JOBPrinter file..............*LIBL/QSYSPRTSource file CCSID.........65535Job CCSID.................0Statement processing......*RUNAllow copy of data........*OPTIMIZEAllow blocking............*READSource member changed on 04/01/98 11:54:10
�� 8. SQL� ���� �� QSYSPRT ��� (1/3)
340 iSeries� DB2 UDB SQL ����� �� V5R2
5722ST1 V5R2M0 020719 Run SQL Statements SCHEMA 08/06/02 15:35:18 Page 2Record *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 SEQNBR Last change
12 DROP COLLECTION DEPT;3 DROP COLLECTION MANAGER;45 CREATE SCHEMA DEPT6 CREATE TABLE EMP (EMPNAME CHAR(50), EMPNBR INT)7 -- EMP will be created in collection DEPT8 CREATE INDEX EMPIND ON EMP(EMPNBR)9 -- EMPIND will be created in DEPT10 GRANT SELECT ON EMP TO PUBLIC; -- grant authority1112 INSERT INTO DEPT/EMP VALUES(’JOHN SMITH’, 1234);13 /* table must be qualified since no14 longer in the schema */1516 CREATE SCHEMA AUTHORIZATION MANAGER17 -- this schema will use MANAGER’s18 -- user profile19 CREATE TABLE EMP_SALARY (EMPNBR INT, SALARY DECIMAL(7,2),20 LEVEL CHAR(10))21 CREATE VIEW LEVEL AS SELECT EMPNBR, LEVEL22 FROM EMP_SALARY23 CREATE INDEX SALARYIND ON EMP_SALARY(EMPNBR,SALARY)2425 GRANT ALL ON LEVEL TO JONES GRANT SELECT ON EMP_SALARY TO CLERK26 -- Two statements can be on the same line
* * * * * E N D O F S O U R C E * * * * *
�� 8. SQL� ���� �� QSYSPRT ��� (2/3)
5722ST1 V5R2M0 020719 Run SQL Statements SCHEMA 08/06/02 15:35:18 Page 3Record *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 SEQNBR Last changeMSG ID SEV RECORD TEXTSQL7953 0 1 Position 1 Drop of DEPT in QSYS complete.SQL7953 0 3 Position 3 Drop of MANAGER in QSYS complete.SQL7952 0 5 Position 3 Collection DEPT created.SQL7950 0 6 Position 8 Table EMP created in DEPT.SQL7954 0 8 Position 8 Index EMPIND created in DEPT on table EMP in
DEPT.SQL7966 0 10 Position 8 GRANT of authority to EMP in DEPT completed.SQL7956 0 10 Position 40 1 rows inserted in EMP in DEPT.SQL7952 0 13 Position 28 Collection
MANAGER created.SQL7950 0 19 Position 9 Table EMP_SALARY created in collection
MANAGER.SQL7951 0 21 Position 9 View LEVEL created in MANAGER.SQL7954 0 23 Position 9 Index SALARYIND created in MANAGER on table
EMP_SALARY in MANAGER.SQL7966 0 25 Position 9 GRANT of authority to LEVEL in MANAGER
completed.SQL7966 0 25 Position 37 GRANT of authority to EMP_SALARY in MANAGER
completed.
Message SummaryTotal Info Warning Error Severe Terminal13 13 0 0 0 000 level severity errors found in source
* * * * * E N D O F L I S T I N G * * * * *
�� 8. SQL� ���� �� QSYSPRT ��� (3/3)
� 18 � SQL� ���� �� 341
� 19 � iSeries� DB2 UDB �� ��
� ��� �� �� ������ SQL ��� ��� �� �� ��
� ��� �� �� ���. ��� ��� ��� ��� �����.
v �SQL ���� �� ���
v 345 ��� �iSeries Navigator� ��� �� ���
v 347 ��� ��� ��
�� � �� ��� x ��� ��� ���� ���� �����.
SQL ����� �� ��
SQL ����� �� ��� �� ����� ��� �� ��� ���. �
��� SQL ���� �� SQL GRANT� REVOKE� �� CL �� ���
� � ��(EDTOBJAUT), ���� ��(GRTOBJAUT), ���� � ��
(RVKOBJAUT) ��� � �� ���. ��� ��� GRTOBJAUT
� RVKOBJAUT � �� �� ��� ��� iSeries �� ��� � ��
���.
SQL GRANT � REVOKE�� SQL ���, SQL �����, �, �� � �� �
�� ���� � �� ��. �� SQL GRANT� REVOKE�� ���
�� �� �� ��. �� ��� ���� � � ����� ��
� ���� �� � �� �� EDOBJAUT, GRTOBJAUT �
RVKOBJAUT� ���� �.
GRANT� � REVOKE� �� ��� ��� SQL ���� �����.
SQL� �� ���� �� ��� �� ��, �� ��, ��� ���� �
� ���.
�� SQL�� ��:
v USRPRF � *USER� ��, SQL� ��� �� �� ���� ��
� ��� ��� �� ��� ����. ���� SQL� ���
�� ������ ��� ��� ��� �� ����. *USER� �
��(*SYS)� �� �����.
v USRPRF � *OWNER� ��, SQL� ��� �� �� ���� �
�� ��� � ���� ���� ��� ��� �� ��� ���
�. ���� SQL� ��� �� ������ �� � � SQL ��� �
© Copyright IBM Corp. 1998, 2002 343
��� ��� ��� �� ����. ��� �� ����.
*OWNER� SQL(*SQL)� �� �����.
�� SQL�� ��:
v USRPRF � *USER� ��, SQL� ��� �� �� ���� ��
� ��� ��� �� ��� ����. ���� SQL� ���
�� ������ �� �� ��� ��� �� ����.
v USRPRF � *OWNER�� DYNUSRPRF� *USER� ��, SQL� �
� �� �� ���� ��� ���� ��� ��� �� ���
����. ���� SQL� ��� �� ������ �� �� ���
��� �� ����.
v USRPRF � *OWNER�� DYNUSRPRF� *OWNER� ��, SQL� ��
� �� �� ���� ��� ��� � ���� ���� ��� ���
�� ��� ����. ���� SQL� ��� �� �����
� �� � � SQL ��� ���� ��� ��� �� ����. �
�� �� ����. �� ��� DYNUSRPRF �� *OWNER ���
���� ���� �. � ��� ���� ��� ���� ����
���� �� � ��.
��� SQL�� ��, �� �� ��� ���� �� ���� ���
�. ��� �� ��� SQL� ���� ���� ���.
���� ID
�� ID� �� ���� ��� ���� ��� ��� ������.
�� ID� ��� CRTUSRPRF(��� ��� �) � �� ��
�.
��
��� �� �� ���� ��� �� ��� � ��� ���. �
����� ����� � �� ��� �� �� ��� �� ��� �� �
� ��� � �� ��� ���. ��� SELECT ���(�: �� �
)� ��� �� ��� ����� �� � �� ��� ��� ��
�. ��� WHERE� ������ �� �� � �� ��� ���
���(�� �� �� �� ��� ��� � �� ��� ���).
��(auditing)
iSeries� DB2 UDB� ���� C2 �� �� �� ������. � ��� �
� ��� ���� �� �� �� ����. iSeries� DB2 UDB�� ��
� �� �� �� ���� �� �� ���. ��� ���� ��, ���
�� ��� ��� �� ���. ��� QAUDCTL� ��� ����
344 iSeries� DB2 UDB SQL ����� �� V5R2
� ���� �� ��� ��� ����� ���. CHGUSRAUD(��
� �� ��) � � CHGOBJAUD(���� �� ��) �� �� ���� �
���� ��� ���� ���. ��� QAUDLVL� �� ��� ��� �
�� ���� ���(�� �� �� ��, �, ��, �, �� ). ��
�� ��� ��� iSeries �� ��� � �����.
iSeries� DB2 UDB�� iSeries� DB2 UDB �� �� �� � ����
��� ���.
�� �� ��� �� ��� �� �� �� ���. �� �� �� ��
� ��� �� �� ��� � �� �� ���� ��� �� ��
� ���. � �� �� ��� � � ��� � � ���. �� �
� ����� �� ����� ����. �� ��� ��� ����� ��
� �� � � �� �!� ��� ��� ���� �� ���. � ����
��� �����.
iSeries Navigator� ��� �� ��
iSeries Navigator� ��� ��� �� � ��� ��� ���.
v ����� �� �� � ���
v 346 ��� ���� ���� �� ��� �� � ���
v 346 ��� ����� �� ��� �� �� ���
���� �� �� �� ��
�� �� ���� �� �� �� �� �� ���� �� �� �
�� �� ���� �� ���� �� ����. �� � ����, ��
����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. � ���� ����� � � � �����.
3. � ���� ����� ��� �� �� ��� �� ���
��.
4. �� �� ��� �� ���� �� �����.
5. �� � ��� �� ���� �� �����.
6. �� �� � ��� ���� ���� �� � �����.
7. � �����.
� 19 � iSeries� DB2 UDB �� �� 345
��� ���� �� �� �� �� �
��� �� � �� �� ������ ��� ����� �� � ��� �
�� �� ���� ���� �� � �� ���. � ��� ��� �
�� �� ���� �� � ��� ���. ��� �� � ���
�, �� ����.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. �� � ���� ������ ��� �� �� ��� �� �
����.
3. �� �� ��� � ����� �����.
4. � ���� �� ��� ��� �� � �����. �� ����
����, �� ���� �� ���� ����� ���.
�� ��� ��� ���, ��� �����.
5. � �����.
���� �� ��� �� �� ����
� ����� �� �� ��� �� � � ���� �� ���
���. ���� �� ��� �� �� ����, �� ���
�.
1. iSeries Navigator �� �� → ������ → ��� ������ → �
����� �����.
2. � ���� ����� � � � �����.
3. � ���� ����� ��� �� �� ��� �� ���
��.
4. �� �� ��� �� �����.
5. � �� ��� � ��� ��� � �� ���� ��� �� ��
�� �� ��� �� ��� �� �����.
6. � �����.
���, ���� � � ��� �� ��� ����.
�: ��� �� ��� ���� �� ��� �� ���. ���� �
��� �� ��� �� � �� ���� � ��� ��� �
��.
����� ��� � ����, �� ����.
1. ���� ���� �� �����.
2. �� �����.
346 iSeries� DB2 UDB SQL ����� �� V5R2
�� ��
�� �� �� �� �� �� ��� ��� ��� ��(��� ��
� ��), ����� ��, �� ���� �� ��"�(�� ��� ��) �� �
� ��� ������� ��(�� �� �� )�� �� ���� �����
� ��� ���. �� �� �� �� ��� ����.
v �����
v 349 ��� �����
v 350 ��� ��� ���
v 356 ��� ���� ��
v 358 ��� ������
v 359 ��� ���/���
v 360 ��� ��� �� ���
v 360 ��� ��� ���
v 361 ��� ����� ��
v 362 ��� ���� �� ���� �(ASP)�
v 362 ��� ��� �� ���� �(IASP)�
�� ��, �� ��, ������ ����� � �� � �� � � ��
�� ��� ��� ��� ���.
���
���� � ���� �� �� �� �� �� �� �� ��� ��
��� ��� �� ����. ��� ��� iSeries� DB2 UDB �����
� ��� �� ���� ����. ��� ���� �� �� ��� ���
� ��� �� �� � ����� ��� ����.
���� iSeries� DB2 UDB� � ��� �� � �� �� ��
�. ��� �� ���� iSeries� DB2 UDB� � �� �� �� ��� �
�� ���� �. �� ��� 350 ��� ��� ���� �����.
�� �� �� � �� �� ���� � �� ��(��) ��� �� ���
�� � � �� �� ��� ���(�� DELETE� UPDATE�� ��
��� ���� ��). ��� � FETCH� �� � � � �� ��� ��
� ��� UPDATE� ��� DELETE� ���. �� �� �� ��� �
�� ��(��� ���) ��� �� ���� �� � � ��(�� DELETE�
UPDATE�)� �� � �� �� ��� � �� ���.
� 19 � iSeries� DB2 UDB �� �� 347
��� � ���� ��� �� �� �� �� � � ����. iSeries� DB2
UDB� ��� ��� �� ��(60�)� ��� � �� ��(*IMMED)�� �,
�� � �� ��. ��� �� �� ��� DML� ����. CL �
� CHGPF(�� � ��), CHGLF(� � ��) � OVRDBF(������ �
��)� �� � � ��� ���.
�� DDL�� LOCK TABLE� ���� �� �� ��� � ��� �� �
�(DFTWAIT)��. � � CL � � ��(CHGJOB) �� ��� ��
(CHGCLS) �� ��� ���.
�� �� ��� �� ��� ���� ��, � � �� ����. �� �
� �� �� � 1 �� �� �� ��� � � �� � 2 ��
�� �� ���� ���. � �� �� � 2� ���� ��, �� � �
� �� �� ������ ���. � �� �� � 1 ��� � ��,
iSeries� DB2 UDB� � �� �� � � �� ��� � �� ��
� ��� ����.
SQL LOCK TABLE� �� � ���� �� �� ��� ! �
���� ��� ��� SQL ��� ����. COMMIT(*RR) ���
� �� �� � ���� �� ��� ! � ���.
�� ����� �� iSeries� DB2 UDB� ODP(open data path)� �� ��
���(��� ��� ������ �� � �� ��� ��� �����). ��
� �� ��� ODP �� ���� � �� ��� ��� ��� � �� �
� ��� ��� �� ���. � �� �� ���� �� � � �� ��
� �� � �� �� �� �� ���. ��� �� � ��, iSeries�
DB2 UDB� � ��� �� ����� ���� ��� � ��� ��
���. � ���� �� iSeries� DB2 UDB� �� �� ���� �� ��
�� ��� �� �� �� �� ODP(� �� ��� ���)� ���. �� �
� �� �� ���� ���� � �� ODP� � �� � �� �
��� ��� ��� ���.
LOCK TABLE� �� � �� ��� ��� COMMIT(*ALL)�
COMMIT(*RR)� ��� ��� � � �� �� ��� ��� � �
�� �� ��� ���. �� SQL�� ��� � �� ��� �� ���
���(�� ��, FETCH�). ��� ��� �� �� ��� SQL�� �
��� � �� �� ��� �� ��� !� ���(�� ��, OPEN
��).
v ALWCPYDTA(*OPTIMIZE)� ���� ���� ��� ��� �� ���
�� ��� � ����� ���.
348 iSeries� DB2 UDB SQL ����� �� V5R2
v � ���� ������ ���� �� � �� �� � ���. �
� � � �� ��� ��� � � ��� ��� �� �� ���.
�� � �� �� �� ���.
– ORDER BY� ��� � �� ����� � �� 2000���� ��
� ��
– ORDER BY � GROUP BY�� � ��� � � ��� ��
– UNION �� DISTINCT�� ���� ��
– ORDER BY �� GROUP BY� ��� �� � �� � ��� �
�
– JOINDFT �� �� ��(DDS) ��� �� � � �� ����
� � � ��
– �� ������ � �� ��� � �� GROUP BY�
�� ��� ��
– �� � � �� �� GROUP BY�� ��� ���� � ��
�� ��
– �� GROUP BY�� ��� ��� ��� GROUP BY�� �� ��
��
v �� � ��� ��� �� � ���.
��
iSeries� DB2 UDB �� ��� �� �� � ���� ��� �� ���.
��� ��� �� ��� �� �� � � �� �� � ���� ��
� ���. ��� ��� �� �� � � �� �� ���� ���
���.
SQL ���� �� � ��� �� ���� ��� ���. SQL� �� �
�� ���� �� � ASP�� CREATE COLLECTION �� CREATE
SCHEMA�� ���� ���� ��� �� ���� ��� ���. ��
� �� ���� �� ASP �� ��� ��� ���� �� ��� ��
�� ��� �� �� ���� �� ASP ��� ���.
�� ��� ��� ��, ���� ���(QSQJRN) �� �� iSeries� DB2
UDB ����. ����� �� � �� QSQJRN�� ��� ��� ��
��� �� �� ���� ��� �. � �� �� ��, �� ��� �
�� �� �� ��� ��� �� �� �� ��� �� ���� ��
��. �� ��, �� ���� ���� ��� � �� �� ��� ���
���. �� ���� ��� �� ��� ����. �, �� ��� ����
�� ��� �� �� ���� ��� ���� ���� ��� ���
� ���.
� 19 � iSeries� DB2 UDB �� �� 349
SQL ���� �� ��� �� �� ���� SQL � � �� ���
� ����. ��� ��� �� �� �� SQL �� � �� ���
���. �� � ���� �� � ���� � �� � �� �� ���
���. ��� iSeries� DB2 UDB� ���� ��� �� � �� �
��� � �� ���� �� �� �� �� �� ��� ��� ��
� ����.
���� �� �� �� �� ���� ��� ��� ��� ���
� �� ��� ������ ��� ��� ���. ���� NO ACTION,
CASCADE, SET NULL �� SET DEFAULT� �� ��� �� �� ����
� �� �� ��� ��, �� ��� �� �� ��� ���. ��� ��
���� COMMIT(*NONE)� ��� ��� ������� � �� �
� ���. ��� � ��, ��� � �� ��� ��� �� ��� �
� ��� ���.
��� �� ��� ��� ��� ��� �����.
�� ��
iSeries� DB2 UDB �� �� ��� ������ �� ��(��, ��, DDL �
�� ��) � � ��(�� �)� ��� � ���. �� �
� � ��� ��� ���. �� �� � ��� ��� ���. ��
� �� �� � ��� �� � ��� �� ���. �� �
� � �� � ����� �� ��� ���. �� �� ��� ��
�.
v SQL COMMIT�
v CL COMMIT �
v �� ���(RPG COMMIT�� ��)
�� �� � �� � ����� �� ��� ���. �� �� ���
���.
v SQL ROLLBACK�
v A CL ROLLBACK �
v �� ���(RPG ROLBK�� ��)
���� ��� �� SQL��� ��� ���.
v DROP COLLECTION
v � ���� ��� ���� �� �� GRANT �� REVOKE
�� ��� �� SQL�� COMMIT(*NONE) �� RELEASE�� �� � �
�� �� � ��� ���� iSeries� DB2 UDB� ����� CL � ��
�� �(STRCMTCTL) � �� �� �� �� ���. iSeries� DB2
350 iSeries� DB2 UDB SQL ����� �� V5R2
UDB� NFYOBJ(*NONE), CMTSCOPE(*ACTGRP) ���� LCKLVL� ��
STRCMTCTL � ���. ��� LCKLVL� CRTSQLxxx, STRSQL ��
RUNSQLSTM �� COMMIT ���� �� ����. REXX�, ���
LCKLVL� SET OPTION�� �� ����. � CMTSCOPE, NFYOBJ �
� LCKLVL ��� ���� STRCMTCTL � ��� ���.
CMTSCOPE(*JOB) �� � �� �� ��� �� ��, iSeries� DB2
UDB� �� �� � ���� �� � �� �� ��� ���.
�:
1. �� �� ��� �� �� �� �� ������ ����� ��� �
� ����� �.
2. ��� LCKLVL� �� ��� �� ��� �����. �� ��� ��
� SET TRANSACTION SQL� � CRTSQLxxx, STRSQL �� RUNSQLSTM
�� COMMIT ��� ��� �� ��� ��� �� �� ��� �
��.
�� ��� ��� GROUP BY �� HAVING � �� ��� ���
��, ROLLBACK HOLD� ��� �� �� �� ���. ��� �� ��
� �� ��� ���.
v COMMIT(*CHG) � (ALWBLK(*NO) �� (ALWBLK(*READ))� �� �
� �� ��� ��, COMMIT(*CHG)� ������ ���� �� ���
���(CPI430B)� ����.
v COMMIT(*ALL), COMMIT(*RR) �� COMMIT(*CS)� KEEP LOCKS��
�� �� � � �� ��� ��, iSeries� DB2 UDB� �� ��� ��
� �� �� ���(*SHRNUP). ��� ������� �� ��� ��� �
� �� �� � ��� �� � �� ! �. KEEP
LOCKS�� �� COMMIT(*ALL), COMMIT(*RR) �� COMMIT(*CS)� �
����� ���� �� �� � � �� ����� ��� ���(SQL7902
�� CPI430A)� ����. ��� SQL0595 �� ����.
COMMIT(*ALL), COMMIT(*RR) �� COMMIT(*CS)� KEEP LOCKS�� �
� ���� ���� �� ������ �� � �� ��� ��� ��, iSeries�
DB2 UDB� �� ��� �� ��� �� ���(*SHRNUP). �� �� ��
��� � �� �� �� ��� �� � �� � �.
COMMIT(*ALL)� ������ ���� ��� ���� ���(SQL7902 ��
CPI430A)� ����. ��� SQL0595 �� ����.
����� ������ � ALWBLK(*ALLREAD) � COMMIT(*CHG)� �
��� �� �� �� ��� �� �� ��� ROLLBACK HOLD�� �
� ��� ����� ���.
� 19 � iSeries� DB2 UDB �� �� 351
COMMIT(*RR)� ���� ��� �� � � �� ���. ��� �� ����
�� ���(*SHRNUP). ��� �� �� ��� �� ���(*EXCLRD). �
���� �� ��� �� �� ��� ���� �� �� �� ���
���.
COMMIT(*NONE) ��� �� ��� ���� ������� ROLLBACK �
��� �� ��� ����� �� ��(� �� ��� *JOB� �� ��),
� �� �� ���� �� ��, ��, �� � DDL �� ����. ����
��� COMMIT� ���� �� ��� �� �� ��, � �� �� �
��� �� ��, ��, �� � DDL �� ����.
iSeries� DB2 UDB� � �� �� �� � �� �� � ��� ��
� � �� ��� ! �. COMMIT(*ALL)� ���� �� �
�� �� �� � ��� ���� � �� ��� � �� ���
� ���� ����. �� �� � �� ���� �� � �� �� �
���� ���. �� �� � ��� � �� � ��, �� �� ��
�. �� ���� �� � �� �� � �� �� ����� ��
�.
�� ��� �� � ��� �� 4���� ��� � �� ���.
COMMIT(*ALL) �� COMMIT(*RR)� ���� �� �� � 32,768 �� �
���(�� � ��� � � �� ����� ��, ��� 32,768 �� �
�� ����). �� �� ��� ��� �� ���� �� ���
� ��� � � �� ���� � ��� �� � ��� �� ��.
� ��� ���� �� � �� ��� �� ���� �� � ���.
�� ��� �� ��� ���� � ��� ���� ��� �� �� �
� �� �� 512� � ���.
COMMIT HOLD � ROLLBACK HOLD� ��� �� � �� ��� OPEN
�� ��� �� � � ��� � ���. iSeries ��� �
� ��� ������ ��� �� ��, HOLD ��� ���. ��
� DECLARE CURSOR� WITH HOLD ��� COMMIT �� ��� �
�� ���� ��� ���. � �� ��� iSeries ��� �� ���
������ ��� �� �� ����. ��� ��� ��� � �.
� 37. ��� �� ��
SQL�
COMMIT �
�(� 6 ��) � �� �� �� ��
SELECT INTO
SET �
VALUES INTO
*NONE
*CHG
*CS(� 8 ��)
*ALL(� 2 ��)
�� ��
�� ��
�� � ��� �� �
���� ROLLBACK �� COMMIT �
READ
READ
352 iSeries� DB2 UDB SQL ����� �� V5R2
� 37. ��� �� �� (�)
SQL�
COMMIT �
�(� 6 ��) � �� �� �� ��
FETCH(�� �� ��) *NONE
*CHG
*CS(� 8 ��)
*ALL(� 2 ��)
�� ��
�� ��
���� �� FETCH �
���� ROLLBACK �� COMMIT �
READ
READ
FETCH(�� �� ��
��� ��)(� 1 ��)
*NONE
*CHG
*CS
*ALL
�� ����� ���� �� ��
��� �� FETCH � ����� ���� �� ��
�� ����� ���� ��
��� UPDATE �� DELETE � �� �� ��� ��
�� ����� ���� �� ��
��� �� FETCH � ����� ���� �� ��
�� ����� ���� ��
��� COMMIT �� ROLLBACK � �� �� ��� ��
�� ����� ���� �� ��
��� �� FETCH � ����� ���� �� ��
�� ����� ���� ��
��� COMMIT �� ROLLBACK � �� �� ��� ��
���� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE
UPDATE3
INSERT(�� �) *NONE
*CHG
*CS
*ALL
�� ��
��� ROLLBACK �� COMMIT �
��� ROLLBACK �� COMMIT �
��� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE4
INSERT(� �� ��
�)
*NONE
*CHG
*CS
*ALL
�� ��
�� ��
� � �� �� ��
���� ROLLBACK �� COMMIT �
READ
READ
UPDATE(���) *NONE
*CHG
*CS
*ALL
� � ��� �� ��
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE
UPDATE
DELETE(���) *NONE
*CHG
*CS
*ALL
� � ��� �� ��
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE
UPDATE
UPDATE(���) *NONE
*CHG
*CS
*ALL
��� � ��� ���
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE
UPDATE
DELETE(���) *NONE
*CHG
*CS
*ALL
��� � ��� ���
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
���� ROLLBACK �� COMMIT �
UPDATE
UPDATE
UPDATE
UPDATE
� ��(�� �� ��
��� �� ��
UPDATE �� DELETE
���)
*NONE
*CHG
*CS
*ALL(� 2 ��)
��� �� FETCH �
��� �� FETCH �
��� �� FETCH �
���� ROLLBACK �� COMMIT �
READ
READ
READ
READ
� 19 � iSeries� DB2 UDB �� �� 353
� 37. ��� �� �� (�)
SQL�
COMMIT �
�(� 6 ��) � �� �� �� ��
� ��(�� �� ��
�� SELECT INTO)
*NONE
*CHG
*CS
*ALL
�� ��
�� ��
� � �� �� ��
���� ROLLBACK �� COMMIT �
READ
READ
�:
1. � �� �� ��� ��(SQL ���� DECLARE CURSOR �� ��) �� � � ��� �� ��� UPDATE
�� DELETE ���� ���.
v ��� FOR UPDATE�� ����.
v ��� FOR UPDATE, FOR READ ONLY �� ORDER BY� �� ���� ����� �� � ��� �� ��
��.
– �� ��� ��� �� UPDATE
– �� ��� ��� �� DELETE
– CRTSQLxxx � ��� EXECUTE �� EXECUTE IMMEDIATE�� ALWBLK(*READ) �� ALWBLK(*NONE)
2. �� ��� COMMIT(*ALL)� ����� �� ���� � ���. UNION ��� � ��� ����� �
� ��� �� � �� ��� � ��, ���� �� �� � � �� ��� ����.
3. �� �� �� ���� ��� ��� *READ� ���.
4. UPDATE� �� �� � ��� READ� � �� �� � ���.
5. �� ��� �� �� �� ����� �� ���� � ���. � ��� �� �� ��� � ���.
��� ���� � ��� *ALL� ��.
6. �� �� ��(*RR) � ��� *ALL �� ��� ��� ��.
7. � �� � �� �� ��� ��� SQL ���� � �� �����.
8. KEEP LOCKS�� *CS� ���� ��, �� �� ��� ��� ��� COMMIT �� ROLLBACK� �� � �
����. � �� ��� ��� �� ��, ��� SQL�� ���� � ����.
��� ��� �� �� �� �����.
��
���� �� � �� ���� �� �. �� �� ���� �� �� �
��� �� ��� ��� � ��� �� ���� ����. ����
SAVEPOINT SQL� �� ����. � ��, STOP_HERE ���
��.
SAVEPOINT STOP_HEREON ROLLBACK RETAIN CURSORS
������� ���� �� ������� ��� �� ��� �� ��
��� ��� �� �� ������ ��� ������� ��� ���� ���
� ��� �� ��� ����.
354 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
||
|
|
|
���� �� SAVEPOINT� �� ���� ��� � �� ���� �
�� ��, UNIQUE ���� �����. ��� SAVEPOIN� �� ��
� �� ��� ��� ������ �� ��� �� �� �� ��
� � ��� � ���. ��� SAVEPOINT�� �� ����,
UNIQUE ���� ��� ��� �. �� SQL�� START_OVER �� �
�� ���.
SAVEPOINT START_OVER UNIQUEON ROLLBACK RETAIN CURSORS
��� ����, TO SAVEPOINT�� �� ROLLBACK� �����. �
� ��� SAVEPOINT � ROLLBACK TO SAVEPOINT� �� ���.
� ������ ��� �� �� ��� �� � �� ���.�
� ��� ��� ��� �� ��� � � �� ����� ���.
�� �� � ���.
got_reservations =0;EXEC SQL SAVEPOINT START_OVER UNIQUE ON ROLLBACK RETAIN CURSORS;
if (SQLCODE != 0) return;
for (i=0; i<3 & got_reservations == 0; ++i){Book_Air(dates(i), ok);if (ok){Book_Hotel(dates(i), ok);if (ok) got_reservations = 1;
else{EXEC SQL ROLLBACK TO SAVEPOINT START_OVER;if (SQLCODE != 0) return;
}}
}
EXEC SQL RELEASE SAVEPOINT START_OVER;
���� RELEASE SAVEPOINT� �� ����. RELEASE SAVEPOINT
� �� ����� ��� ��� �� �� ��� ��� �� �� �
���� �� � �� ����. �� ��� START_OVER ��� ��
�.
RELEASE SAVEPOINT START_OVER
�� �� ����� ��� � ���� ����. � ��� ��� ����
��� �� �� ��� �� ����. COMMIT �� ROLLBACK��
�� � � ��� �� ��� �� ���. �� ��� ��� �� � �
� �������, �� ��� ��� �� �� �� �� ���� ��
�.
� 19 � iSeries� DB2 UDB �� �� 355
|
|
|
|
|
|
||
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
�� �
� ��� ��� �� ��, ��� �� ��� ����� ����� �
� ����� ��� ���. ��� � �� ��� ���. � ��,
��� � ��� ��� ��� ��� �� ���. ��� ��� ��
� � �� ���� ���� ��� ������ ������ �� �
�.
���� ���� ��� �� ��� ��(�� ��) ��� ��� ��
�. A ROLLBACK TO SAVEPOINT �� �� ��� �� ��� ��� ��
��� ��� � ��� ���. ����� RELEASE SAVEPOINT �
�� ��� �� ��� ��� ��� ��� � ��� ���. �� �
� ��� ��� ��� ��� ��� ��� ���.
�� ��� �� �� �� ����. � ��� � �� �� ����.
� ��� ���. COMMIT �� ROLLBACK� ����.
���� ����. ���� ���.
��� �� ��� ����. ��� �� �� ���� ��.
�� ������ ����, �� �� �����
� NEW SAVEPOINT LEVEL� ��
���.
�� ������ ���� ��.
ATOMIC � SQL� � BEGIN� ��
�.
ATOMIC �� � END� ���.
��� �� ��� ���� � ���� �� � ����� ����.
�� ������ �� �� ��� �� ���
���� ��� � �� ����. � ���� ���� ������� �
�� �� �� ��� ������� �� ���. ���� ���� ��
� � ������� ��� �� ��� ������� ����.
��� �
COMMIT(*CHG), COMMIT(*CS) �� COMMIT(*ALL)� �� � �� �
� ����� ���� ����. �, ����� ��� �� ��� ��
�. �� ��� ���� ��"���(�� ��, ����� � � ��
� �� ) ��� �� ���� ���� ���.
��� COMMIT(*NONE)� ��� ��, � �� ������ �� �� ���
���� ���. �� SQL �� ���� ����� ���� ���.
ALTER TABLE(� 1 ��)
COMMENT ON(� 2 ��)
LABEL ON(� 2 ��)
GRANT(� 3 ��)
356 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
|
|||
||
||
||
|||
|
|||
||
|
|
|
|
REVOKE(� 3 ��)
DROP TABLE(� 4 ��)
DROP VIEW(� 4 ��)
DROP INDEX
DROP PACKAGE
�:
1. � �� ���� �� ����� ����� ����� � ��� ���
�� �� ����� �� SQL�� ���� ���. � ��� ���
���.
v ���� ��
v RESTRICT ��� ��� �� �
v �� �� � �� ����(DROP COLUMN CASCADE, ALTER COLUMN,
ADD COLUMN)
v ����� ��
2. COMMENT ON �� LABEL ON� �� � �� ��� ��, �� ��
�� ����� �� SQL�� ���� ��� ��� �� ��� ��
�� �� COMMENT ON �� LABEL ON� �����.
3. � �� �, SQL ��� �� ���� GRANT �� REVOKE� ����
�� �� �� ����. ��� �� SQL�� ���� ��� � ��
� �� GRANT �� REVOKE�� �����.
4. DROP TABLE �� DROP VIEW� �� �� ��� �����
� ��, � ��� �� �� ����� �� SQL�� ���� �
��.
��� �� �� ��� ��� iSeries� DB2 UDB ������ � ��
�� ���� ���.
CREATE ALIAS
CREATE DISTINCT TYPE
CREATE FUNCTION
CREATE INDEX
CREATE PROCEDURE
CREATE SCHEMA
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
� 19 � iSeries� DB2 UDB �� �� 357
DROP ALIAS
DROP DISTINCT TYPE
DROP FUNCTION
DROP PROCEDURE
DROP SCHEMA
DROP TRIGGER
RENAME(� 1 ��)
�:
1. RENAME� �� �� ��� ��� ��� ��� �����. �� �
�� �� RENAME� ���� ���.
�� �� CREATE TABLE� iSeries� DB2 UDB �� �(PF) � � ���
�� �� � ��"�� ���. ���� CREATE�� ��, �� ��
��� ����� ��� � �� ��� � ���. DROP COLLECTION
�� ��, ��� �� ���� CL � ����� ��(DLTLIB)� ��
���� ��� � ��� ���.
����
iSeries� DB2 UDB� ��, �� ���� � �� ���� ���. �� �
���� �� � �� ��� ����. �� ����� � � �
� �� �� �� �� � �� �� �� �� �� � ��� ��
��. �� ����� �� � �� ��� ��� ���� ��� �
���.
iSeries� DB2 UDB� DML(�� � ��) �� � ����� ��� ��
���. ��� �� �( �� ��� ��)� ����� ���� ����
� �. � �� DML ��� iSeries� DB2 UDB� ����� ���
��� � � ��� ���.
v �� ����� ��� �� ���. �� ���� �� ��� ��
� � ��, �� ���� ��� �� ��� �� EDTRBDAP(��
��� ��� ��) �� ��� ���.
v iSeries� DB2 UDB� �� �� ���� �� �� ����� ���� ��
�� !� ��, � ����� �� ��� �� ����. �� ���� �
�� �� ��� ���� EDTCPCST(�� �� ���� ��) �� �
�� ���.
���� �� ��� ��� 151 ��� � 10 � ��� �� � �����
� ����� �����.
358 iSeries� DB2 UDB SQL ����� �� V5R2
��/��
OS/400 ��/�� ��� �, ��, ��, ��, �� ���, SQL ���, SQL ��
���, SQL ���, ��� �� ��, ��� �� �� � ��� ���(�� �
) �� �� ��( �� �� ��) ���� ����. ��� ��� �
� �� iSeries ��� ��� ���. ��/�� ��� �� ���, ��
� ���� �� �� �� ��� �� �� ��� ����� ���. �
� �� ����� ���� ��� �� ��� ����. � ��� �� �
� ���� �� ���� ��� �� ��� �� ���� ��� ��
�.
SQL �������� �� ������ SQL � �� �� ���� ��
��� ����� ���� ��, �� �� �� ��� ������ �� �
� �� � SYSROUTINES� SYSPARMS ���� ���� ����. QSYS
�� SQL ����� ��� SQL ������� ��� ���. ��,
CREATE PROCEDURE �� CREATE FUNCTION� ��� �� �����
� ��� ����� SYSROUTINES� �� �� ��� ��� ���
� ���. ��� �� � ��� ��� ��, � �� ������ �
�� � SYSROUTINES � SYSPARMS ����.
SQL �� ����, � � �� ��� SQL ��� ����. SQL ��� �
�� SYSTRIGGERS, SYSTRIGDEP, SYSTRIGCOL � SYSTRIGUPD ����
���� ����. SQL �� �� � ���� SQL CREATE TRIGGER�
� �� ���� ���� �� � ����. ���� ����� �� � �
�� ������ ��� �� ����� ���. SQL �� ��� �����
��� �� �� �� ��� �� ��� ��� �. SQL ����
CREATE TRIGGER� � �� ����� ��� �� ���� ����
�.
��� �� �� �� *SQLUDT ����� ��� ��, ��� �� ��� �
��� SYSTYPES ���� ����. ��� �� ��� �� �� �� �
���� ��� ��� ��� ���(�� � �� �� �� � �
�).
� SQL ������ �� ��� SQL ���� � ��� ��� ���
���. ��� � ��� �� SQL ����� �� ��� �� ���
��� ��� �� SQL ��� ��� ���. ��� �� � �
SQL ����� ��� SQL ���� ��(CRTSQLPKG ��� ��) ��
������ �� �� ���. SQL ���� � ������ ���
���.
� 19 � iSeries� DB2 UDB �� �� 359
��: ���� � ����� �� � ��� �� ���� ��� ��, �
� ��� �� IDDU ��(�� ��) ��� ���. ���� � ��
�� ���� ��� ��, � ���� ���� ��� � ���� ����
� ���. ��� QSYS2� ���� ��� �� ����� ��� ��
�.
�� � ��
��� ��� ��� �� �� ������ ��� �� � �� ��� �
��. �� �� �� ��, ��� � RAID ���� �� ��� ��� ��
� ���. iSeries� DB2 UDB ��� ��� �� �� ��� ���
�� �� �� � �� ���� ���.
DROP �� ���� ���� ����� ���. �� ��� ��� ��, �
��� �, ��, SQL ���, ��, �����, �� �� ��� ��� ����
����� �� �� �� �� � ���.
��� ��� � � �� � � � ��� ��� iSeries� DB2 UDB ���
��� ���� �� �� ��� ��� � � ���.
�� ��
iSeries� DB2 UDB� �� �� ��� � �� ���.
v ��� �� �� ��
EDTRCYAP CL ��� ���� iSeries� DB2 UDB� � ��� ��
�� ��� ����� �� �� ���� ��� ��� ��� �� �
� �� ��� � ��� ���. ���� ��� �� ��� �
� �� ���� ��� �� � � ��� ���.
v �� ���
iSeries� DB2 UDB� �� �� ��� ��� �� �� ��� ���� ��
� � � �� ��� �� ���. ��� ���� ��� ����
�� ��� ���� ��� ����� ����� �� � �� ��� ���
� �. SQL ��� ���� ���� ���. ��� ���� CL �
�� �� �� �(STRJRNAP) � �� iSeries� DB2 UDB�
�� �� ��� ���.
v �� ���
��� �� �� ��� ��� ���� � ��� ��� ��� ��
�. SQL ��� *IMMED ��� ��� ���.
�� �� �� �� �� ��� ��� ��, �� ���� ��� �� ���
��� ��� �� ������ ��� �� ���� ���. �
�� �� �� ��� ��� �� ��� ���� � ��� �� ���
360 iSeries� DB2 UDB SQL ����� �� V5R2
���. UNIQUE �� �� �� SQL ��� *IPL� �� ��� ��
�(�� OS/400� ��� � � ��� ���� ���). � ��
SQL ��� *AFTIPL �� ���� ���(�� ���� ���� ��
� ��� ������ ���� ���). IPL� ������ ������
� ��� � �� �� ��� �� � ���. ������ �� �
� ��� ���.
v ��� �� � ��
��/�� ���� CL � SAVOBJ(���� ��) �� SAVLIB(����� �
�)� ACCPTH(*YES)� �� �� ��� � �� ��� ���.
��� �� ��� �� ��� ��� �� ���� ��� ���.
�� �� � ���� �� ��� ����� �� ������ ������
��� �� �����.
���� �
����� ��� �� �, ��, SQL ���, ��, �����, ��, ��� �
��� �� ��� �� ���. ������ ���� ���� �� ��
� �� �� ���. �� � ���� ���� �� �� ��� �
���� ��� � ��� ���� ��� �, ��, SQL ���, ��, �
�, �����, ��, ��� � ��� ��� ��� � ���� �� ���
����� ������� �����.
����� �� ���� ����� SQL�, OS/400 CL �, System/38 ��
CL �, System/36 �� �� �� iSeries ��� �� � �� �� ����
�� ���� �����. �� ��, � ��� SQL DROP� ���
� OS/400 DLTF CL � ���� System/38 DLTF CL � ����
WRKF �� WRKOBJ �� �� 4� �� �� ���. �� ��
�� ��� ����� ���� ������ ���� ��� �� � ����
� �� �� ���. ��� ���� �� ��� ��� ���� ��
� �� �� �����.
� 38. � �� � ��� ��
�� ����� �� ��
�� ���� �� ���� ��� ���
���� ���� �� ����� �� ��� ���
���� ���� � ���� ��� ���
������ ���� �� ����� �� ��� ���
���� ���� �� ���� ��� ���
����� � �� �� ���� ��� ���
���� ��(���) �� ����� ��� ���
���� ��� �� ����� ���� ���
���� ���� �� ����� �� ��� ���
� 19 � iSeries� DB2 UDB �� �� 361
� 38. � �� � ��� �� (�)
�� ����� �� ��
���� ���� �� ���� ��� ���
���� �� �� ����� ������ ���
��� �� ���� �(ASP)
CREATE COLLECTION � CREATE SCHEMA�� ASP� �� ���
� ��� ASP� �� ���. ��� ASP� ������ �� �
� CRTLIB � ��� ���. � ������ SQL �, �� � ��
��� ��� ���. �� ���� � �� ��� ���
�� � �� �����.
� �� ���� �(IASP)
�� ��� �� iSeries ��� ��� ������� ��� � ����. �
� ��� �� � �� ��� 1�, 2� � ��� �� � ���(UDFS)��.
������� �� ��� � �� ����.
iSeries ��� ��, � ������ �� �� ���. iSeries ��� �
�� ������(SYSBAS) � � ��� ��� ������ � ��
�� �� ���. ��� ������� ��� ��� � �� iSeries
��� �����, ��� ��� �� iSeries Navigator� ��� �� ���
����.� ��� ��� �� ���� iSeries Navigator� ������ ��
�� � � ������� �� ��� ���.
362 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
|
|
|
|
|
� 20 � ������ ����� �� SQL� ���
� ��� ������ ���� �� SQL� �� �� �� ��� �
�� � ����� ��� ���� �� ���.
��� ��� ��� � �����.
v � �� �� ��
v 364 ��� �SQL ������ ���� ���
��� �� �
���� ���� ��� ��� ��� ���.
v ����. �� ��� �� SQL �� ��� ���� �� �
�� �� ��� �.
v ��� �� ��. ����� �� ��� ��� ��, �� �� ��� ��,
���� � ��� ���� �� ��� ���� �. ����� �
� ��� ��� �� � ��, ���� ��� � �� �� ��� �
� ��� ���. ��� CL �� ��� �(STRDBG)
UPDPROD(*NO)� �� �� �� ��� ���� � ���� �
�� � �� ����. ��� �� ��� ��� CL �����
� �� �� � �����.
v ��� �� ��. �� � ����� ���� �� ��� ��� �� ��
�� ��� ��� ��� �. ��� �� ��� ��� �� � �
� ��� ���� ��� ���.
����� �� ��� ��� ��� ��, ��� ��� ���� ���
�� ��� ����� � � ��� ��� ��� �� �� ���
�������.
� ��� ���� ��� ������ �.
���� �� ���� ���� ��� �� ��� ��� � �� ��
���. �� �� ��� ���.
v �� ��� �� ����� � ��� �� ���.
v �� �����. �� �� ����� � ��� �� ���� ����
�� � � � �����.
v ���� �� �� ��� �����. ��� ����� ��� �� �
� �� �� �� ��� �����.
© Copyright IBM Corp. 1998, 2002 363
v ����� ��� �� � ��� � �� �����. ����� ���
���� ��� ��� �� �� ��� �� ��� �� �� ���
� ������ �����.
��� ��� � �� �� �� ���� �����.
��� �� �� �
SQL �� ��� ������ ���� �� � � ��� ���
�.
v � �� ��� ��. ������� ��� ��� �� ��� � �� �
��� �� �� � ��, � �� ��� �� ��� ��
�. �� �� ��� ��� �� ���� � �� UPDPROD(*NO)� �
� STRDBG � ��� �� ����. ��� �� ��� ��� CL
����� � �� �� � �����.
v ��� �. ������� ��� �, �� �� ��� � �� ��� ��
�� �� �� ������ ��� ���. �� �� � ��
��� � 2 � �SQL �� �����.
��, CL �� CRTDUPOBJ(�� ���� �)� �� �� �, �� �
� �� �� ���.
����
�� �� � �� �� �� ��� ���� ��� ���� �� �
�� �. �� ���� ���� �� ��� �� ��� �.
� �� ��(���� �� �� �� �����)� ����, ���� �
� �� ��� �� �� ��� �.
��� ���, ���� ��� �� �� �� ��� � ��� �
�� � �� �� �� �� ��� �. �� SQL� ��� �� �
�� ��� ��� SQL ���� �����.
SQL ������ ���� ���
iSeries� DB2 UDB SQL ������ ��� � ��� ���, ���� �
�� ��� �� �� ����. ��� ��� 365 ��� ����� ��� �
��� 365 ��� ��� � �����.
364 iSeries� DB2 UDB SQL ����� �� V5R2
���� ��� ��
� �� ��� SQL ��� ���� ���� ����� �� �� ���
�� ��� ��� ���.
SQL�� �� ����� ��� �� �� SQL�� �� ���� ��
�� ��. ��� SQL�� ��� ��� �� �� � ������ �
��� � SQL�� ��� �� �� ���� � � � � �. � �
��� SQL� �� SQLCODE� ����. ��� ����� ���
SQLCODE � 0� �� �� ���� ����. �� SQLCODE� �� ��
�� ���. � SQLCODE� ��� ���� ���.
���� ��� SQL� �� 4�� �� �� SQ� �� 5�� ����. ��
��, SQLCODE -204� � SQL0204 ���� ��� SQLCODE 30000� �
SQ30000 ���� ���.
SQLCODE� ��� �� SQLSTATE��. SQLSTATE� � IBM ��� �
����� �� � �� �� �� ��� SQLCA ���� ��� � �
���. � ��� ������ ��� �� �� ��� �� SQLSTATE�
���. �� �� ��� �� SQLCODE� ���� ���. � � ��
� � �iSeries� DB2 UDB ���� ��� ��� ������ �� �
� ��� �� ��� � ���.
�ILE ���� ���� ��, ��� ��� � �� ��� �� �� ��� �
� �� ���� ����� �. ILE ���� ���� ��,
DBGVIEW(*SOURCE)� ��� ���� ����� � �� �� ����
�����.
SQL� �� ��� �� ���� �� ���� �� SQLCODE� +100� �
� � �� �� ���� � � � � �.
�� � ��
� �� ��� �� ��� �� ����� ������ ���� �� �� �
� � ��� �� �� ���� ��� ����� ���. SQL ��
����� ��� ���� �� � ���. �� �� ��� ��� ��
��� ��� �� ��� �� �� �� ���. ��� �� ��� ��
�� �� ������� �� �� ��� �� �� ��� �� �
� �� ��� �� ���.
�� ��� ��� � �� ��� ���� �. �� ���� �� ��
�� �� � ��� �� �� ��� �. �� �� � ��� ��
�� ��� ��� �. � � �� � � � ���� �.
� 20 � ������ ���� �� SQL� �� 365
�� �� �� ��� �� �� � �� ��� ������ �� �
�� ��� � �����.
366 iSeries� DB2 UDB SQL ����� �� V5R2
� 21 � �� ��� ������ ��
� ��� ������� ���� ��� ��� ��� �� SQL ����
� ��� ����. ��� ��� ������� �� ��(�� ��, iSeries�
DB2 UDB) �� � ��(OS/390� DB2 Universal Database, VSE � VM� DB2,
DB2 Universal Database(UDB) �� DRDA� ��� �� ������ �� �
��) ���. � ��� ������� � ��� �� ��� ���
������ ���� ���. ������ ��� � ���� ��� ����
�� �� SQL� �� �� ��� ������ ��� ��� ����
���� �� ��� �� ��.
������ ����� � ��� ������ � ���. ������ �
�� ������ ����� ��� �� ���� ��� ��������.
iSeries� DB2 UDB� ������ ����� ������ ��� ��� ��
� � ��� ������ ��(DRDA) �� �� ���. �� iSeries�
DB2 UDB� �� ���� �� DRDA� ��� �� � ������
�� ��� �� �� ��� � ���. � �� ���� ���
��� ���� ����(ARD) ������� �.
iSeries� DB2 UDB� � �� ��� � ��� ������� ���.
v ��� � ��(RUW)
��� � ���� �� � �� �� SQL � ���� ���
�� �� �� ������ ��� ���. iSeries� DB2 UDB� APPC
�� TCP/IP�� RUW� ���.
v �� � ��(DUW)
�� � ���� �� � �� �� SQL�� ��� ��� � ��
���� ��� ��� ���. ���, � SQL�� � ������
�� ��� ����� ��� ���. iSeries� DB2 UDB� APPC�
�� DUW� ��� V5R1��� TCP/IP� �� DUW �� �� �
��.
� ��� ������ �� ��� ��� � ������ ����� �
�����.
��� ��� �� �����.
v 368 ��� �iSeries� DB2 UDB � ��� ������ ���
v 369 ��� �iSeries� DB2 UDB � ��� ������ � �����
v 370 ��� �SQL ��� ���
© Copyright IBM Corp. 1998, 2002 367
v 374 ��� �SQL �� CCSID �����
v 375 ��� �� ��� �� ���
v 381 ��� � � ���
v 389 ��� � � � ���
v 392 ��� ������� ���� ���� �����
v 393 ��� ���� ���
v 394 ��� �DRDA �� ����� �����
iSeries� DB2 UDB �� ��� ������ �
DB2 UDB �� ��� � SQL �� � �� ����� �� SQL��� �
������ �� ��� ��� ���.
v CONNECT
v SET CONNECTION
v DISCONNECT
v RELEASE
v DROP PACKAGE
v GRANT PACKAGE
v REVOKE PACKAGE
��� �� �� ��� ��� SQL ���� �����.
�� ��� SQL ����� �� ���� �� �� ��� ����.
CRTSQLCI(SQL ILE C ���� �) �
CRTSQLCPPI(SQL ILE C++ ���� �) �
CRTSQLCBL(SQL COBOL ���� �) �
CRTSQLCBLI(SQL ILE COBOL ���� �) �
CRTSQLPLI(SQL PL/I ���� �) �
CRTSQLRPG(SQL RPG ���� �) �
CRTSQLRPGI(SQL ILE RPG ���� �) �
SQL ����� � �� ��� ��� ��� ��� ��� SQL �����
��� �� SQL� ��� ���� �� � �� �����. SQL ���
�(CRTSQLPKG) �� � ������ �� SQL �������� SQL �
��� �� � �. CRTSQLPKG � CRTSQLxxx � �� ��
� ��� ��� � B �iSeries� DB2 UDB CL � ��� ����.
�� � �� ��� x ��� ��� ���� ���� �����.
368 iSeries� DB2 UDB SQL ����� �� V5R2
iSeries� DB2 UDB �� ��� ������ ����
SQL ��� ��� � ��� ��� ������ � ����� �� ���
�. �� QSQL ����� � � iSeries� DB2 UDB � ���� �
� �� �� �� �� �� ��� � � ���.
�� �� ��� ���� � QSQL/QSQSAMP �� SETUP ���
� ��� �. SETUP ��� �� �� �� �� �� ��� �
�� � �.
v ���� �� ��� QSQSAMP ����� �
v ���� �� ��� ��� ������ ���� �� ��
v �� ��� ������ �� �
v � � ������ ���, �, �� � ��� �� �� ���� ���
�, �� � ��
v �� � ��� ��� �� �� ��
v ���� ���� � ��
v ��� ��� ������ ���� �� SQL ��� �
v �� �� �� � ��� �� ���� ����, ��, ��
SETUP � � QSQL/QSQSAMP �� SETUP ��� ��� ��� �
���. ��� ����� �� ��� ��. SETUP ����, ��� �
� ��� � �����.
========> SBMDBJOB QSQL/QSQSAMP SETUP
��� �� �� � � ������.
� ���� ���� � � �� � �����.
========> ADDLIBLE QSQSAMP
� ����� ��� �� ��� � �� �� ���� � � �� �
�����.
========> CALL QSQ8HC3
�� ��� ����. � ��� ������ � ���� ��� ���
���.
� 21 � � ��� ������ �� 369
DB2 for OS/400 �� � ����
��.............: _ A (��) E (��)D (��) U ( �)
���.........: __ DE (��) EM (���)DS (�� ��)
�� ��........: __ DI (�� ID) MN (���)DN (���) EI (�� ID)MI (�� ID) EN (���)
��.............: ________________ (��� ��)
�.............: _______________________________
� ��
F3=��(C) COPYRIGHT IBM CORP. 1982, 1991
SQL ��� �
OS/400 ����� SQL ����� ��� ����� ���(OS/400 ����
��� *SQLPKG��). SQL ���� � ���� ���� � �����
� ��� SQL� ����� �� �� ��� �� �� ���. ���
�� SQL ���� �� ���.
v RDB ���� CRTSQLxxx �� ���� ���� ����� �����
����� �. SQL ���� RDB ���� ��� ���� ��� �
��.
��� ����� ���� �� ����� ����� SQL ���� ����
���.
v CRTSQLPKG� ���� �. CRTSQLPKG� ����� ���� �
��� ���� �� ���� ����� ���� �� RDB� ��� �
�� ���� ��� � ����.
SQL �� �(DLTSQLPKG) �� ���� �� ���� SQL ���� ��
� ���.
SQL ���� �� ��� �� ID �� �� � ��� ���(��
���� ��) ��� � �� ��� �� �� � SQL ���� ��� �
��. ���� �� ���� �� ID SQL ���� EXECUTE �
� ��� �. iSeries ���� EXECUTE �� *OBJOPR �
*EXECUTE� ��� �� ����.
370 iSeries� DB2 UDB SQL ����� �� V5R2
CRTSQLPKG(SQL ��� �) �� ��� � B �iSeries� DB2 UDB CL
� ��� �����
SQL ���� ��� SQL�
� �� ��� ����� SET TRANSACTION� ��� SQL ���
���� �� �� SQL� � �� ��� ���. iSeries� DB2 UDB
� �� ��� ��� iSeries� DB2 UDB� �� ��� ����� �
�� ���� ��� �� ��� SQL� ��� ���. ������ �
�� �� �� �� �� ���� ��� ���. ��� ����
SQL���� ��� �� ��� ����� ����. ��� �� ����
�� ��� �� ��� �� �� �� SQLCODE 84 �� 525� ��
��. �� ��, � � FETCH, �� INSERT ��� �� �� �� ��
��� ������ ����� ������ �� �� �� 2 ��� 2 ���
OS/400� � ������ ����. ��� ��� SQL ���� � ��
� ������ �� �� ���� �����.
SQL ��� �� �� ���
SQL ���� �� �� � �� �� ���� �. ���� � � �
�� �� �����.
CRTSQLPKG ����
iSeries ���� SQL ���� �� � ��� �� ID� CRTSQLPKG
� �� *USE �� ��� �.
�iSeries� DB2 UDB� ��� �
�iSeries� DB2 UDB �� ����� SQL ��� �� ��� ������
��� SQL� ��� � �� CRTSQLxxx GENLVL ���� 30��
����� �. � �� 30� �� ���� ���� �� � �����
���. � �� 30 �� ���� ����, ��� ��� ������
�� ��� �� ��. �� ��, ���� ���� ��� �� �� �
� �� 30 ��� ���� ���.
11 ��� GENLVL� �� �� ��� !� ��� �� ����� ��
� ����� �. DB2 UDB �� ���� �����, GENLVL ��
�� 20 ��� �� ���� �.
RDB ���� iSeries� DB2 UDB ���� �� ��� ��� ��, ��
� ��� CRTSQLxxx � ������ ���.
v COMMIT(*NONE)
v OPTION(*SYS)
v DATFMT(*MDY)
� 21 � � ��� ������ �� 371
v DATFMT(*DMY)
v DATFMT(*JUL)
v DATFMT(*YMD)
v DATFMT(*JOB)
v DYNUSRPRF(*OWNER)
v TIMSEP(*BLANK) �� TIMSEP(‘,’)� ��� ��, TIMFMT(*HMS)
v SRTSEQ(*JOBRUN)
v SRTSEQ(*LANGIDUNQ)
v SRTSEQ(*LANGIDSHR)
v SRTSEQ(������/� ��)
�: DB2 Universal Database �� �� �, ��� �� ��� ����.
v ��� ��� �� ��� ��� ��� �.
v TEXT ���� ��� *BLANK ���� �.
v ��� ���(DFTRDBCOL)� ���� ���.
v ���� ��� �� �� ����� CCSID� 65535 ���, 65535�
��� � ���� ���.
� ���(TGTRLS)��� �� �� ���� �� �� ��� ��� ��� �� SQL��
����. � ���� ���� �� ��� ����. �� ��, � FORIGN
KEY ���� ��� CREATE TABLE�� ��� ���, ���� �� �
�� FOREIGN KEY ����� �� ��� ���� ���� �� 3 ��� 1
���. TGTRLS ���� TGTRLS ���� *CURRENT� �� ����
���.
SQL� ��
SQL ��� � ��� ������ ��� �� �� �� ��� SQL�
��� !� ���. SQL ����� ����� SQL�� ����� �
�� �� ��� ��. � �, � ��� ���� ���. �� RDB ���
� ���� ���� ��� �� ‘H’� ����. SQL ��� � ��� �
� �� ��� �� �� �� ������ ��� ���. �� ��
� �� ��� ��� � ��� ��� �� SQL�� ��� ��� ��
�(SQL0101 �� 5).
���� ��� �� ��
�� ��� SQL ���� � ��� SQL ���� ��� �� � �
���� � ���. � ��� ���� SQL ���� ���� ���
�� SQL�� � � ���. �� �� SQL� DESCRIBE TABLE� �
372 iSeries� DB2 UDB SQL ����� �� V5R2
�� ����� SQL ��� ��� ��� SQL5041 ��� ���. SQL �
��� ��� �� SQL�� ��� ���.
v COMMIT
v CONNECT
v DESCRIBE TABLE
v DISCONNECT
v RELEASE
v RELEASE SAVEPOINT
v ROLLBACK
v SAVEPOINT
v SET CONNECTION
��� ��� ��
SQL ���� �� �ILE ����� ��� ��� �� ��� ���.
ILE ����� ��� ����
ILE ����� SQL�� ��� � �� �� ���� ��� ����� �
�� �� �� SQL ���� ��� �.
��� �
��� � �� �� � ��� RDBCNNMTH ���� �� ���
� �� ���. RDBCNNMTH(*DUW)� ���� �� ��� ���� �
� �� �� �� �� ��. �� �� �� ���� ��� �� ��
�.
� ��
��� �� ����� �� �� �� ���, �� ��� ��� � �
�� � �� �� ��� �. � �� �� ��� � �� ��
���� �� ��� �� ����� �.
v SQL� � �� �� ��� �.
v �� ��� ��� �� �� DDM � ��� ���, �� ���� �� ��
�� �� DDM �� ��� �.
v � API ��� ��� �.
v DRDA� DDM� ���� �� LU 6.2 ��� ��� �.
� ��� �
RDB ��� ��� ��� �� ���� ���. ��� �� ����
�� SQL ���� �� ���� ���. SQL ���� � �� ��
(SAVOBJ �)� � ��(RSTOBJ �)� ���. �� ���� �� �
� 21 � � ��� ������ �� 373
|
|
|
|
|
|
|
|
|
��� �� �� SQL ���� ���� ���. *LOCAL RDB ���
��� ��, *SQLPKG ����� ��� ��� ��� ��� *PGM �
��� ����.
��
SQL ��� �� �� ��� �� LABEL ON� ��� ���.
�� �
����� � ��� SQL ���� SQL ��� �� ��� � � ���
� �� ��� �� ���. �� ��� ���� � ��� ��� ��
�� ��� ���. ����� SQL ���� ���� �� ��� ���
���. ����� iSeries ��� �� ������ ��� � iSeries �
�� ��� ���. ����� �� A� ��� �� B(SQL ��� ��
���� ��)� ����. � ��, �� A�� ���� �� �� �
�� �� �� ��� ��� ���. � ���� SQL ���� ����
� � �� SQL� � �� �� ��� SQL ��� �� �� ����
����. �� B� SQL ���� ���� �, � SQL ���� QRPLOBJ
������ ����. �� A� SQL ��� ��� � ���(� ���
����� ��� �� ��� ����� SQL ���� ��� ����
� �� � SQL ���� ��� ��� � ������ �� ��
�).
��� SQL ���� ���� ��� ����� � ��� �. ��
�� ��� �� �� �� ��� ��� SQL(STRSQL) � �� ��
� ��� � �� DISCONNECT �� �� � �� RELEASE�
COMMIT� ��� ��� ���. �� �� RCLDDMCNV� ��� �
� ���� �. ���� �� �����.
SQL � ��
����� ��� ���� SQL �� ��� ��� ��� �� �� ��
�.
CRTSQLxxx, CRTSQLPKG, STRSQL �� SQL ��� ��� ����� ��
�. ��� ��� ��� �� �� �� ���. � � �� ��
� �� (�� �� SQL��� ����� ��� �) �� ��� �
�� ��"��� � � SQL ��� ��� �� ��� ���.
SQL� �� CCSID ���
� ������ �� ��� ��� � �� iSeries ���� �� ��, iSeries
��� � CCSID 65535� ��� ���.
374 iSeries� DB2 UDB SQL ����� �� V5R2
��� ���� SQL ��� � ��� �, ������ ����� �� RDB
���, SQL ����, ������ � SQL ���� ���� �� CCSID
� CCSID 500�� ���. �� DRDA �� ����. ��� ��� ��
����� iSeries ��� � ��� CCSID 500� � CCSID� ���� �
��
� ID� �, ��, ��, ���, ����� �� SQL ��� �� ��� �
� �� ����. �� � CCSID� �� ������ �� ��� ��
� ���. ��� CCSID� 37� ���� ��� A� CCSID� 500�� ���
� ��� B �� ���.
v ��� A� ��� ″a¬b|c″� �� �� ���� ����.
v ��� A ���� ″a¬b|c″� ��� �� �� ��� B� �����.
v CCSID� ¬ �� ���� x’5F’� �� CCSID 500� ���� x’BA’�
�.
v ��� B� ��� ″a[b]c″� ����. ��� ″a¬b|c″� �� ��� ��
�� � ��, ����� �� �� ��� !�.
at ��(@), ��� ��(#) � �� ��($) ��� SQL ����� ��� �
��. ��� ���� ��� CCSID �� ���. �� ���� 3�� �
��� ��� �� �� � ��� � ���� ��� ���.
��� �� ��
��� ��� ��� ��� �����.
v �� � ���
v 376 ��� �PGM1 �� �� ��:�
v 377 ��� �PGM2 �� �� ��:�
v 377 ��� �PGM3 �� �� ��:�
v 379 ��� ��� ��� �������� � ��
v 380 ��� ���� �� �� �� ��� � ���
v 380 ��� ����� �� �� �� ��� � ���
� ��
TCP/IP� DRDA� ��� �, ‘�’��� ��� ��� ����. SQL
� ��� � ���!��. �, � �� �� �� �� RDB�
CONNECT TO �, DISCONNECT �� ���� ���� COMMIT� ��
� �� RELEASE ALL� �� ��. APPC ��� �� DDMCNV �
� iSeries �� � ��� ���� ��� ���� � �� ��� ��
���� � ���.
� 21 � � ��� ������ �� 375
TCP/IP ��� ‘��’�� ��� ���� ���. ��� ��� ��� �
�. DRDA� TCP/IP� ��� ��, �� ‘��’� APPC �� �� ��
���� �� � � �� ‘���’�� ��� ���. ���, �� ����
��� � � �� � ��� �� �� ��� ��� SQL �� �� ‘�
�’� ���� ‘���’ ���.
� �� ��� �� � ���� �� � �� �� ��� � ���
� ‘SQL’ �� ‘���’� �� ��.
SQL �� �� �� ��� ����. � � � �� ��� �� ���
��� � ��� � �� �� �� ��� ���� ���. ��� �
� ��� ��� ����� ��, �� 2 ��� 3 ���� � ����.
��� � �� ��� ���� ������� ���. � �� �� ��, �
�� � �� �� ��� ��� ��� � ����. ��� ��
� �� ��� ���.
PGM1� �� �� ��:
PGM1 �� ����� SQL ���� �� �� ��� ���.
CRTSQLCBL PGM(PGM1) COMMIT(*NONE) RDB(SYSB)
....EXEC SQL
CONNECT TO SYSBEND-EXEC.
EXEC SQLSELECT ....
END-EXEC.CALL PGM2.....
�� 9. PGM1 �� �� ��:
376 iSeries� DB2 UDB SQL ����� �� V5R2
PGM2� �� �� ��:
PGM2 �� ����� SQL ���� �� �� ��� ���.
CRTSQLCI OBJ(PGM2) COMMIT(*CHG) RDB(SYSC) OBJTYPE(*PGM)
PGM3� �� �� ��:
PGM3 �� ����� SQL ���� �� �� ��� ���.
CRTSQLCI OBJ(PGM3) COMMIT(*CHG) RDB(SYSD) OBJTYPE(*MODULE)CRTPGM PGM(PGM3) ACTGRP(APPGRP)CRTSQLPKG PGM(PGM3) RDB(SYSD)
...EXEC SQL
CONNECT TO SYSC;EXEC SQL
DECLARE C1 CURSOR FORSELECT ....;
EXEC SQLOPEN C1;
do {EXEC SQL
FETCH C1 INTO :st1;EXEC SQL
UPDATE ...SET COL1 = COL1+10WHERE CURRENT OF C1;
PGM3(st1);} while SQLCODE == 0;
EXEC SQLCLOSE C1;
EXEC SQL COMMIT;....
�� 10. PGM2 �� �� ��:
...EXEC SQLINSERT INTO TAB VALUES(:st1);
EXEC SQL COMMIT;....
�� 11. PGM3 �� �� ��
� 21 � � ��� ������ �� 377
� �� PGM1� CRTSQLCBL � ��� �� �ILE ������. �
����� ��� �� ��� ����. PGM2� CRTSQLCI � ���
���, ��� �� �� ��� ����. PGM3 �� CRTSQLCI � ��
����� �� APPGRP� ��� �� ��� ����. APPGRP�
ACTGRP ��� �� ��� � �� �� CRTPGM �� �����
����. CRTPGM �� SYSD ��� �������� SQL ���� �
� � � ��. � �� ���� � �� ��� ����� �� �
��. ����� SQL� �� ��� ��.
1. PGM1� ���� ��� �� ��� ����.
2. PGM1� ��� ������ SYSB ��� SELECT�� ����.
3. �� � PGM1� PGM2� ��� ��� �� �� ��� ����.
4. PGM2� ��� ������ SYSC ���. PGM1� PGM2� � ��
�� �� �� ��� �� �� ��� PGM2� ��� �� ���
�� ��� PGM1� �� �� ���� ���. � �� ��� �
��. PGM2� ��� �� � ��� ���. PGM2� �� ��
� ����, � ��� �� ��� � ��� �� ���.
5. PGM2� PGM3 ���, �� �� APPGRP� ����.
378 iSeries� DB2 UDB SQL ����� �� V5R2
6. INSERT�� �� ��� ��� � �� ���. � �� SQL�� ��
�� ��� ������ SYSD� �� �. �� ��� ������ SYSD
��� � TAB� ����. ��� ����. ��� �� �� ���
���� �� ��� �� ��� �� ��� �� ��� �� SQL� ���
��� �� ���� ���.
7. PGM3� ��� ��� PGM2� ���. PGM2� � � �� ��
�.
8. PGM3� � ��� �� �� ����. ��� �� PGM3� � ��
��� ���. �� ��� PGM3 �� ��� ��� ��� ��
� ��� ��� ���. ����� PGM2 �� �� �� ����, �
�� �� �� ��� ��� � ��� ����.
�� ��� �������� ��
� �� ��� �� ��� ������ ��� ��, ��� SQL �� �
�� ��� �� ������ �� � ���. �� ��� �� ��� �
���, �� �� ��� ��� ��� � �� �� ��� ���� �� �,
� �� ��� �� �� �� ���.
� 21 � � ��� ������ �� 379
�� �� ��� �� ��� ��
������ ����� ������ �� ����� �� ���. ���
SQL �� ������ ����� � �� SQL�� ��� �� �� �� �
��� ���� �� SQL ���� �� ����� �� ��� ��� � ��
���.
v ���� SQL�� ���� �� CONNECT�� ���.
v SQL� ��� �� ��� ��� ���.
� �����, ��� SQL �� RDB ��� ��� ��� ������
� �����. � � ������ ��� SQL �� �� ��� �����
�� �����.
SQL� ��� �� ��� ��� �� ��� �� �� � ����. �
�� �� SQL� ����� ���.
v ������ ����� ����� ��� ��� ��� ��� �� � �
�� ��� �� SQL ���� ��.
– ���� SQL ��� ���.
– ��� � ��� �� ���.
– SET TRANSACTION�� �� �� ���.
– CLOSQLCSR(*ENDJOB)� ����� ����� ���� ���.
���� ��, ��� � �� ���� SET TRANSACTION�� ���, SQL
� �� � ���. CLOSQLCSR(*ENDJOB)� ����� ����� �
�����, SQL� �� �� � � ��� �� �� �� �� �� �
� ���.
v SQL� �� � �� ��, � �� � ���. �� SQL ���� �
�� COMMIT� ROLLBACK � ��� � ���.
v � ��
��� �� ��� �� ��� ��
������ ����� ������ �� ����� �� ���. ���
SQL �� ������ ����� �� �� �� ��� � �� SQL�� �
��� �� CONNECT�� �� ��� �� ���.
� ����� ��, ��� SQL �� RDB ��� ��� ��� ����
��� �����. � � ����� ��, ��� SQL �� �� ��� ��
����� �����.
��� ��� ����� �� ��� ���.
380 iSeries� DB2 UDB SQL ����� �� V5R2
v �� ��� �� �, �� ��� �� �� ��� �� �� ��� ��
��� �� � ��� � �� �� ��� � �� �� � �.
� �� ��� �� � �� � �� �� �� � �, SQL� �
� ���.
v SQL� �� �� � �� �� ��� ����� ��� �
v � ��
�� �
iSeries� DB2 UDB� � �� ��� � ��� ������� ���.
v ��� � ��(RUW)
��� � ���� �� � �� �� SQL � ���� ���
�� �� �� ������ ��� ���. ������ ����� �
����� ����� �� �� ��� ������ ��� �� ��,
� ��� � ��� ��� � �� ������ ��� ����� ��
�, �� �� �� SQL� ��� ���. ��� � ��� DRDA �
� 1� ���� �.
v �� � ��(DUW)
�� � ���� �� � �� �� SQL�� ��� ��� � ��
���� ��� ��� ���. ���, � SQL�� � ������
�� ��� ����� ��� ���. �� � ��� DRDA ��
2� ���� �.
�� � ��� �� ���.
– �� �� � ��� � ������ �� �� �� ��
��
– �� �� � ��� � ������ �� �� �� ��� �
������ �� �� �� ��
� ������ ��� �� � ��� ��� ���� �� ���
��� ���� �� ��� ���� ��� �� � ��� ���� �
��, ������ ����� ������ ��� 2�� �� ���� ���
��� �� ���.
��� ��� ������ 2�� �� ���� ���� ��� �� �
�� ��� ����. �� �� ��� �, �� � ���� ���
���� ��� ���� �� �� � �. ��� ���� �
�� ����� ��� 2�� �� ����� ����.
2�� ��� ���� ��, �� �� ����, ��� �� �� �� ��
� ����.
� 21 � � ��� ������ �� 381
���� ��� �� �� ���� ��� ��� �� �� � ��
��. V5R1 ��� TCP/IP �� �� ���� ����� ��� ���
�� � � �� �� ����. V5R1�� TCP/IP� �� DUW
�� ��� ��� ������.
�� ��, ����� �� � �� �� TCP/IP� �� V5R1 ���� �
��� ��, � �� �� �� ��� � �� APPC� ��� �
� �� ��� ��.
��� SQL ���, � �� SQL �� �� ����� �����. ���,
V5R1 �� ��� TCP/IP� �� ��� ��� ���� RELEASE
ALL �� COMMIT� � CONNECT TO remote-tcp-system �
� � �� SQL � ��� �.
�� ��
��� �� ��� � ��� �� ��� �� �� ��� � ��
�. �� �� �� ��� � �� �� ��, �� �� �� �� ��� �
�� �� �� �� ���. �� �� ��� ��� ��, ��, �� ��
�� ��� ���� DDL���. �� �� ����, COMMIT(*NONE)
� ��� ��� ��� ���. CONNECT �� SET CONNECTION �
SQLCA� SQLERRD(4)� � �� ����. SQLERRD(4)� �� ���
�� �� ��� � � �� � ���� ����. �� �� ��
� ��� ���.
1. �� �� ��� � �� �� ���. �� �����. �� �
� ��� �� ��� ���.
v �� ��� � ��(RDBCNNMTH(*RUW))� �� ����. �
� �� �� �� ��� � ��� ��� ������ ���� �
���(ARD) �� ����.
v �� � � ��(RDBCNNMTH(*DUW))� �� ��� ��, ��
��� �� �����.
– �� ��� ���.
– ������ ��� �� � ��� ��� ���. �� ��,
iSeries� DB2 UDB ������ ��� �� 3 ��� 1 ��� OS/400
���� ���.
– � ��� ����� �� �� ��� *NONE� ���.
– �� �� �� �� ��(�� ���) � ������ ���
�� ���, �� �� � � ��� ��� �� ������ �
��� �� �� ���.
– �� ��� �� �� ��� � �� �� �� �� ���.
382 iSeries� DB2 UDB SQL ����� �� V5R2
– �� �� �� �� ��� � � ��� � �� ��
DDM �� ���.
– �� ��� �� API �� �� ��� ���.
– �� ��� �� � �� �� ���.
�� ��� ��� �, SQL� ��� � ���� 1�� �� ��
DRDA �� �, �� � ARD � ���� 2�� �� �� DRDA
�� �.
2. �� �� ��� �� ��� ���. �� �� ����. ���
�� �����.
�� ��� � �� � ��(*RUW)� ��� ������ ���� �
�� ��� ���.
� � �� ������� ��, �� � ��� �� �� ����� �
�� ���.
v �� ��� ���.
v ������ ��� � � ��� ��� ���.
v �� � ��� �� ���� �.
– � ��� ����� �� �� ��� *NONE��� �.
– � � ��� ��� �� ������ ���� � � ��
��� �, � ������ ��� �� �� �� �� ���
�.
– � � ��(�� ��)� ��� ������ ���� � � �
� ��� �.
– �� ��� �� �� ��� � �� �� �� �� ���
�.
– �� ��� �� �� ��� � � ��� � �� ��
DDM �� ���.
– �� ��� �� 1�� API �� �� ��� ���.
– �� ��� �� � �� �� ���.
�� ��� ��� �, SQL� 1�� �� �� �� � ���.
3. �� �� �� �� ��� �� � ���. �� ����.
�� ��� � �� � ��(*RUW)� ��� ������ ���� �
�� ��� ���.
� � ��� ��, �� � ��� ��� �� ���� ��� ��
�.
v �� ��� ���.
� 21 � � ��� ������ �� 383
v � ��� ����� �� �� ��� *NONE� ���.
v ������ ��� � � ��� 2�� �� ����(�� �) ��
�.
�� ��� ��� �, SQL� 2�� � �� �.
4. �� �� �� �� ��� �� � ���. �� ���� ��
�.
�� ��� � �� � ��(*RUW)� ��� ������ ���� �
�� ��� ���.
� � ��� ��, �� �� ��� �� ��� � �� �� �� �
���� ��� ���.
v �� ��� ���.
v ������ ��� � � ��� ���.
v ������ ��� 2�� �� ����(�� �) ��� ��� �
���� ����� �� �� ��� *NONE��.
�� ��� ��� �, SQL� 1�� DRDA � �� �.
5. �� ��� ��� �� ��� �� � ��� �� � � ��
� ��� �� ���� � � ��� ��� ARD ���.
�� ��� ��� �, SQL� 2�� DRDA � �� �.
1�� � 2�� �� �� ��� ��� �� � �� � �� �� ��� �
����.
�� �� � ��� � �� � ����� � �� ��� ���.
SQLERRD(4)� ���� CONNECT�� SET CONNECTION� ����.
� 39. � �� ��
� ���� ��
������ ��
� 2�� � �
��
������ ��
� �� �� ��
� ��
�� �� � 1
�� � �� �
� SQLERRD(4)
�� �� �� �� 2
�� �� �� � 2
�� �� � �� 4
�� �� � � 4
�� � �� �� 2
�� � �� � 2
�� � � �� 4
�� � � � 4
� �� �� �� 1
� �� �� � 2
384 iSeries� DB2 UDB SQL ����� �� V5R2
� 39. � �� �� (�)
� ���� ��
������ ��
� 2�� � �
��
������ ��
� �� �� ��
� ��
�� �� � 1
�� � �� �
� SQLERRD(4)
� �� � �� 4
� �� � � 4
� � �� �� N/A *
� � �� � N/A *
� � � �� 3
� � � � 3
*DRDA� ��� � ��(DRDA1)� ��� ������ ���� �� � ��� ��
�. �� �� iSeries� DB2 TCP/IP �� ����.
� �� �� ����
�� ��� �� �� �� �� ���� � �� ����� ���.
��� ����� �� COMMIT(*NONE)� �� ������ �� ���
�� �� ��� �� ����.
2�� � �� �� �� ��� ��� ���� 1�� �� �� ���
� ��, � � �� �� �� � ���.
����, �� �� ��� ��� DDMCNV � �� *KEEP��, ��
�� �� DDM �� RUW � ���� �� ��� �����
CONNECT� ��� ���.
RUW � ���� �� ���� � �� �� ��� ��� ��� ��
� ��� ���.
v � �� �� ��� � ��� �� ��� ����, �� RUW �� �
�� �� ��� ������ �� ���� �.
v �� �����, � �� �� ���� RUW � �� � �� �� �
�� ��� ���.
�� ��
���� �� CONNECT� ��� ��� �� �� ���� �� ��
� �� �� �� ����� ��� ���. �� SQLERRD(3)� 1
�� 2� ���. SQLERRD(3)� � ��� �� ����.
1. �� �� ��� � �� �� �� �� ���.
�� �� � �� ����� �� ���.
v SQLERRD(4)� 1 ���.
v �� �� �� �����.
� 21 � � ��� ������ �� 385
– SQLERRD(4)� 3 �� 5� ���.
– �� �� ��� ��� � � ��� ��� �� ������ �
��� �� �� ���.
– �� �� � �� �����.
- � �� �� �� ��� �� � ��� � �� ���, �
� ������ �� ���� ARD ������ � �� �
��.
- �� ��� �� �� �� �� �� ���.
- �� � ��� � �� �� DDM �� ���.
- 2�� API �� �� ��� ���.
- �� �� ��� ��� ����.
v �� �� �� �����.
– SQLERRD(4)� 4� ���.
– �� �� ��� ��� � � ��� ��� �� ������ �
��� � �� �� ���.
– � �� �� �� ��� � �� ���� �� �� ��� ��
� �� ���.
– �� � ��� � �� �� DDM �� ���.
– �� ��� �� �� � �� �� �� ���.
– 2�� API �� �� ��� ���.
2. �� �� ��� � � ��� �� �� ���.
�� �� � �� ����� �� ���.
v SQLERRD(4)� 2� ���.
v SQLERRD(4)� 3 �� 5� ��� �� � �� �����.
– ��� � ��� ��� �� �� ������ ���� ��
��.
– � �� �� �� ��� ��� � ��� � �� ���.
v SQLERRD(4)� 4� �� �� � �� �����.
– ��� � ��� ��� �� �� ������ ���� ��
��.
– � �� �� �� ��� � �� ��� ���.
– �� � ��� � �� �� DDM �� ���.
– �� ��� �� �� �� �� ���.
– 2�� API �� �� ��� ���.
386 iSeries� DB2 UDB SQL ����� �� V5R2
�� �� ��� � ��� ��� ������ �� �� �� �� �
� �� � �� �� �� ��� ��� �, SQLERRD(4) ����
SQLERRD(3) � ���� �� ��� ���.
� 40. SQLERRD(3) �� ��
SQLERRD(4)
�� � ��� ��
�� ������ ��
�� �� � ��
� � � � ��
� ��� * SQLERRD(3)
1 -- -- 1
2 -- -- 2
3 � -- 2
3 �� �� �� 1
3 �� 1 �� 2
3 �� � � 1
3 �� 2 �� 1
4 � -- 2
4 �� �� �� 1
4 �� 1 �� 2
4 �� � � 1
4 �� 2 �� 2
5 � -- 2
5 �� �� �� 1
5 �� 1 �� 2
5 �� � � 1
5 �� 2 �� 1
* � �� ���� ��� �� ����.
v �� ��� �� �� ��� ��� ���, �� � ��� �� �� � DDM �
� ����, �� �� � �� �� ��, �� �� API� �� ��� ����.
v 1��� � �� �� �� ��� ��� � ���� ����� ��� � ��� ��
�� DDM �� �!� ����.
v 2��� �� �� ��� 2�� � � �� ������ ��� ����, DDM �� �
� � �� ��� �� �!��, �� �� API� ���� �� ��� ���
� �� �� �!� ����.
SQLERRD(4)� 3, 4 �� 5(ARD ���� ��)�� SQLERRD(3) � 2 �, � �� �� �� �� �� �� ���, � ��� �� �
� �� ���� ��. � ��� �� �� � ���, ROLLBACK�
�� ����. � ��� �� SQLCODE -918 �����.
�� � �� ���
� � �� ������� �� �� � �� ���� �. � �
��� � �� ���� ��� ���.
� 21 � � ��� ������ �� 387
v � ��� � ��� ������ ��� �� � ��, �� ��
� ���� ��� �� �� �� �� ��� �� ���. �� ��
��� �� ����� �� � �� �� ��� ���, �� � ��
�� �� �� �� ��� ���.
v �� �, DDM � � �� �� API ��� �� � �SQL �� ���
�� �� ���� �� �� � �� ��.
v �� ��� �� � � ��� ��� �� ������ �� �
� ��(�� ��, TCP/IP� ��� V4R5 iSeries), � �� �� ����
�� ����. �� �� ��� ��, �� ��� ��� ���.
��
��� �� �� ����, ��� ���� � �� ��� � � �
��� �. �� ��� �� ����� �� ���. �� �� ��
��� ����� 380 ��� ���� �� �� �� ��� � ���� 380
��� ����� �� �� �� ��� � ���� �����.
DISCONNECT� ���� ���� COMMIT� �� RELEASE� ���
� � ����� ��� ���. DISCONNECT�� ��� � �� �
� � ��� �� �� ��� ��� ���. DISCONNECT��
���� �� ���. RELEASE�� �� �� ��� �� ��� ��
�. RELEASE�� ��� � �� ��� �� �� � ��� ��. �
� �� � � ��� ���. �� �� COMMIT�� �����
����� ���. ��� �� �� ROLLBACK�� ��� COMMIT�
��� ��� ���.
��� SQL �� ����, DDM ��� �(APPC �� �� TCP/IP �)
� ����. SQL � ��, ��� �� ��� � ��� ����
���. ��� �� ���� �� ��� � ��� DDMCNV
� � �� ����. � � � *KEEP�� �� � iSeries ��
�� �����, �� ���� ���. � � � *DROP�� �� �
iSeries �� �� �����, �� ����. �� iSeries� �� �� �
� �����, �� �� ����. �� ���� *DROP� ����.
v ��� � ���� ��� � �� �� ����� � ���� �
� ��.
v � ���� �� ���� �, �� ����� RUW � ��� ����
� ����� DUW � ��� ���� ��. ��� �� �� RUW �
��� ��� ���� �� �� �� �� �� � ���.
v DDM �� DRDA� �� �� ��� �� ��. ��� �� �� ��
�� � ��� �� ����� �� ���.
388 iSeries� DB2 UDB SQL ����� �� V5R2
RCLDDMCNV(DDM � ��) � �� �� �� �� ���� ��
�� � �� ���.
�� �� ��
� � ��(DUW)� ��� �� � �� �� � ������ ��
��� ���. � SQL�� � �� ������ �� ��� ��
�. � � ��� ���, � � �� �� � ������ ���
��� ����� ��� ���.
�� � �� ��
CONNECT, SET CONNECTION, DISCONNECT � RELEASE�� DUW ��
� � ���� ����. � � �� CONNECT� ����� ���
� RDBCNNMTH(*DUW)� ������ � ����. � ��� CONNECT
�� � � ������ ��� �� ��� � �� � ���
�. CONNECT�� ��� ��� ������� �� �� ��. CONNECT
�� ��� � � ���� ��� ���. � ��� �� ���
� SET CONNECTION� ���� �. �� ��� �� ���� �
��� � �� ���� �. RELEASE� DISCONNECT��� �
��� ���. � ����� ���� �� �� RELEASE�
� �� �.
��� �� ��� ��� DUW ��� ���� C ����� ���.
....EXEC SQL WHENEVER SQLERROR GO TO done;EXEC SQL WHENEVER NOT FOUND GO TO done;....EXEC SQLDECLARE C1 CURSOR WITH HOLD FOR
SELECT PARTNO, PRICEFROM PARTSWHERE SITES_UPDATED = ’N’FOR UPDATE OF SITES_UPDATED;
/* Connect to the systems */EXEC SQL CONNECT TO LOCALSYS;EXEC SQL CONNECT TO SYSB;EXEC SQL CONNECT TO SYSC;/* Make the local system the current connection */
EXEC SQL SET CONNECTION LOCALSYS;/* Open the cursor */EXEC SQL OPEN C1;
�� 12. � � �� ����� � (1/4)
� 21 � � ��� ������ �� 389
while (SQLCODE==0){/* Fetch the first row */EXEC SQL FETCH C1 INTO :partnumber,:price;/* Update the row which indicates that the updates have been
propagated to the other sites */EXEC SQL UPDATE PARTS SET SITES_UPDATED=’Y’
WHERE CURRENT OF C1;/* Check if the part data is on SYSB */if ((partnumber > 10) && (partnumber < 100))
{/* Make SYSB the current connection and update the price */EXEC SQL SET CONNECTION SYSB;EXEC SQL UPDATE PARTS
SET PRICE=:priceWHERE PARTNO=:partnumber;
}
�� 12. � � �� ����� � (2/4)
/* Check if the part data is on SYSC */if ((partnumber > 50) && (partnumber < 200))
{/* Make SYSC the current connection and update the price */EXEC SQL SET CONNECTION SYSC;EXEC SQL UPDATE PARTS
SET PRICE=:priceWHERE PARTNO=:partnumber;
}/* Commit the changes made at all 3 sites */
EXEC SQL COMMIT;/* Set the current connection to local so the next row
can be fetched */EXEC SQL SET CONNECTION LOCALSYS;}
done:
�� 12. � � �� ����� � (3/4)
EXEC SQL WHENEVER SQLERROR CONTINUE;/* Release the connections that are no longer being used */EXEC SQL RELEASE SYSB;EXEC SQL RELEASE SYSC;/* Close the cursor */EXEC SQL CLOSE C1;/* Do another commit which will end the released connections.
The local connection is still active because it was notreleased. */
EXEC SQL COMMIT;...
�� 12. � � �� ����� � (4/4)
390 iSeries� DB2 UDB SQL ����� �� V5R2
� ����� 3�� ���� ������ ��(�� ���� LOCALSYS� 2
�� ��� ��� SYSB� SYSC)� ���. SYSB� SYSC � � ��
� 2�� �� ���. �� � ������ ��� �� � �����
CONNECT� �� �� �� �� �� ��. DUW� ��� �,
CONNECT�� �� � ���� ��� �� �� � �� � �
�� �. �� ������ ��� ��� �� SET CONNECTION� �
� �� �� �� �� ��. �� �, ��� ��� ��� � �� ��
�(fetch)��. �� �� �� ������ ��� ��� ��� ����
���. SYSB� ����� � ��, SET CONNECTION� �� SYSB� �
� �� � � ��� ����. SYSC ��� �� �� ���. ��
� ��� ����. 2�� ��� ����� �� ���� � ��� ����
��� ����. ��� WITH HOLD� ������� �� �� � �
� �� ��. ��� �� �� �� ��� �� ��� ���� �� ��
�� ���. ��� �� �, ��, ��� ��� �� ��� � � �
���. �� ��� ��� �� � ��� ��� �� �� ����.
��� �� � ���� ��� ���. �� ��� �� ��� �
��� �� ���. �� ���� � �� �� ��� ��.
�� ��
�� �� � �� �� ��� ��� �� �� �� �� ��
� � �� ���� �. ��� � ��� �� �� �� ���� �
� ���. ��� COBOL� �� ��� � �� ��� �� ��
�.
...EXEC SQL
SET CONNECTION SYS5END-EXEC.
...* Check if the connection is updateable.
EXEC SQL CONNECT END-EXEC.* If connection is updateable, update sales information otherwise* inform the user.
IF SQLERRD(3) = 1 THENEXEC SQL
INSERT INTO SALES_TABLEVALUES(:SALES-DATA)
END-EXECELSEDISPLAY ’Unable to update sales information at this time’.
...
�� 13. � � ��� �
� 21 � � ��� ������ �� 391
�� � ��� ��
��� ��� ��� �� ��� � �� ��� ����. �� ���
��� ���� �� ��� ����� ��� ����� �� �� �� ��
�� �� ���� ��� �� ��� ���. �� ��� ���� �
��� �� � �� �� ��� �� �� ��� �� �� ���� ��
�.
��� � � ��� ��� �� ���� �� � �� � �� �
�� � � �� C1� � ���� ���� ���.
������ ���� ���� ����
DRDA� ��� �� �� ���� ������ ��� �� iSeries� DB2
UDB� SQL ��� ��� iSeries� DB2 UDB ������ ���� �� �
��� �� �� ����� ���. ��� �� ���� �����
� ��� ������ �. ��� ��� � � ARD ���� ��
�.
.....EXEC SQL DECLARE C1 CURSOR FOR
SELECT * FROM CORPDATA.EMPLOYEE;/* Connect to local and open C1 */EXEC SQL CONNECT TO LOCALSYS;EXEC SQL OPEN C1;/* Connect to the remote system and open C1 */EXEC SQL CONNECT TO SYSA;EXEC SQL OPEN C1;/* Keep processing until done */while (NOT_DONE) {
/* Fetch a row of data from the local system */EXEC SQL SET CONNECTION LOCALSYS;
EXEC SQL FETCH C1 INTO :local_emp_struct;/* Fetch a row of data from the remote system */EXEC SQL SET CONNECTION SYSA;EXEC SQL FETCH C1 INTO :rmt_emp_struct;/* Process the data */.....
}/* Close the cursor on the remote system */EXEC SQL CLOSE C1;/* Close the cursor on the local system */EXEC SQL SET CONNECTION LOCALSYS;EXEC SQL CLOSE C1;.....
�� 14. DUW ���� ��� �
392 iSeries� DB2 UDB SQL ����� �� V5R2
v ��� ������(RDB) ���� ARD ����� �� RDB� �� �
CRTSQLPKG� CRTSQLxxx � �� ��� �� ��� ��
v �� �� ARD ���� ��� RDB� �� � � SQL� ��
� ��
��� ��� ARD ����� ��� ��� ������ SQL�� �� ��
�� ��� ��� �� �� ����� ����. ���� �����
��� ���� �� ����. ARD ���� �� ���� ��� �
������� ��� ���� ��� DRDA ������ �� ���
�� ��� ���. ���, �� DRDA ��� ARD ��� ���� ��
���. ���� �� ��� �� �� ����(LOB)� � ��(�� ��)�
�.
������ ���� ���� ���� �� ��� ��� OS/400 � API�
�����.
�� ��
� ������ �� �� �� ��� ��� ��� �� �� ��
FFDC(first failure data capture)�� �. FFDC ��� ���
APAR(Authorized Program Analysis Report)� �� �� OS/400 ����
DDM �� ��� ��� �� �� ��� ��� ��� ���. � ��
��, � ��� DDM �� ���� ����� �� � ����. �
� ��� �� 1024��� ��� �� � � � ��. � �� �� ��
�� �� ��� ��� �� ��� ���� �� ��� �� �� ���
���� � ���. FFDC� OS/400 DDM ����� ������ ���
�� ������ �� �� ��� ���. ���, � � FFDC �� ��
��� QSFWERRLOG� *LOG� ����.
�: � SQLCODE� �� ���� �� ���. APAR ��� ���
�� ��� ����. � ��� ������ �� ��� �� �� �
�� ��� Distributed Database Problem Determination Guide� ����
�.
SQL ��� ��� �� SQLSTATE� �� SQLCODE� SQLCA ���.
��� �� �� ��� ��� iSeries Information Center� SQL ��� � �
� ��� �����.
� 21 � � ��� ������ �� 393
DRDA �� ����� ���
iSeries DRDA ��� �� �������� � ��� � �� � ��
�. ���, V5R1�� � ��� �� ����� � ��� ��� iSeries
� �� ������� ��� � ���� ���.
V5R2� iSeries ������ ��� SQL� CLI ����� ��� ����
�� ������. ��� V5R1 iSeries ��� ��� ����� � ���
V5R2 iSeries ������ � �� PTF� ���� �. ���, ��
�� � ���� ��� ��� � ���� PTF Cover Letter Database
� �����.
� ��� SQL SELECT�� ��� � ��� SQL ��� ��� �� ���
�� ��� ���. � � �� �� �� ���� � �� ��
���. � ��� �� �� ����� � �� ��� ��� SQL
���� SET RESULT SETS, CREATE PROCEDURE(SQL) � CREATE
PROCEDURE(External)�� �� �����. DRDA� �� ����� ��
�� � ��� � ������ ����� �����.
394 iSeries� DB2 UDB SQL ����� �� V5R2
|
|
|
|
|
� A. iSeries� DB2 UDB � �
� � � � ���� SQL ���� ���� ��� � �� �� ���.
� � �� �� SQL� ���. � � �� ��� 18 ��� ��
� � ��� �����.
�����, �� ��, ��, ���� � �� ��� ��� ����. � �
�� DB2 UDB �� ��� � SQL �� � �� ����� �� � �� �
�� � �������� ����. �� �� �� ��� CORPDATA(��
���)� ��� �� ��� ���.
�� ������ ��� �� �� �� �� DDL�� �� � INSERT
�� �� �� ���� �� ����. ������ ����� �� ��
��� ���� ��. ��� SQL �� �� �������� ��� SQL �
iSeries Navigator� ��� �� SQL ������ ��� ���. ���
��� ���� (SAMPLE� ��� ����) �� �� �����.
CALL QSYS.CREATE_SQL_SAMPLE (’SAMPLE’)
����� ���� ����� �. ���� �� �� ��� �.
�� ��� ���.
v 396 ��� ��� �(DEPARTMENT)�
v 397 ��� ��� �(EMPLOYEE)�
v 399 ��� ��� �� �(EMP_PHOTO)�
v 400 ��� ��� ��� �(EMP_RESUME)�
v 401 ��� ����� �� �� �� �(EMPPROJACT)�
v 404 ��� ����� �(PROJECT)�
v 406 ��� ����� �� �(PROJACT)�
v 409 ��� ��� �(ACT)�
v 410 ��� ���� ��� �(CL_SCHED)�
v 410 ��� �� ��� �(IN_TRAY)�
��, �� � ��� ��� � � �� ���. �� ��� � ����
����.
� �� �� ���� �� 3�� � � ���.
v 412 ��� ��� �(ORG)�
v 413 ��� ��� �(STAFF)�
© Copyright IBM Corp. 1998, 2002 395
v 414 ��� ��� �(SALES)�
�:
1. � � �� ���(?)� �(null) ����.
�� �(DEPARTMENT)�� �� ��� � ��� ��� � ���� � ��� ��� �� �� ���
���. �� �� ��� CREATE TABLE�� ALTER TABLE� ��
���.
CREATE TABLE DEPARTMENT(DEPTNO CHAR(3) NOT NULL,DEPTNAME VARCHAR(36) NOT NULL,MGRNO CHAR(6),ADMRDEPT CHAR(3) NOT NULLLOCATION CHAR(16),PRIMARY KEY (DEPTNO))
ALTER TABLE DEPARTMENTADD FOREIGN KEY ROD (ADMRDEPT)
REFERENCES DEPARTMENTON DELETE CASCADE
��� �� �� �� ����.
ALTER TABLE DEPARTMENTADD FOREIGN KEY RDE (MGRNO)
REFERENCES EMPLOYEEON DELETE SET NULL
��� ��� ���.
CREATE UNIQUE INDEX XDEPT1ON DEPARTMENT (DEPTNO)
CREATE INDEX XDEPT2ON DEPARTMENT (MGRNO)
CREATE INDEX XDEPT3ON DEPARTMENT (ADMRDEPT)
��� ��� � �� ���.
CREATE ALIAS DEPT FOR DEPARTMENT
�� � �� ��� �� ���.
� 41. �� �� �
� �� ��
DEPTNO �� �� �� ID
DEPTNAME ��� � �� ��� ��
MGRNO ���� �� ��(EMPNO)
396 iSeries� DB2 UDB SQL ����� �� V5R2
� 41. �� �� � (�)
� �� ��
ADMRDEPT �� ��� ��� �� ��(DEPTNO). ��� ��� �� ��� ��
�.
LOCATION ��� ��.
DEPARTMENT� �� ���� �DEPARTMENT�� �����.
DEPARTMENT
DEPTNO DEPTNAME MGRNO ADMRDEPT LOCATION
A00 SPIFFY COMPUTER
SERVICE DIV.
000010 A00 ?
B01 PLANNING 000020 A00 ?
C01 INFORMATION CENTER 000030 A00 ?
D01 DEVELOPMENT CENTER ? A00 ?
D11 MANUFACTURING
SYSTEMS
000060 D01 ?
D21 ADMINISTRATION
SYSTEMS
000070 D01 ?
E01 SUPPORT SERVICES 000050 A00 ?
E11 OPERATIONS 000090 E01 ?
E21 SOFTWARE SUPPORT 000100 E01 ?
F22 BRANCH OFFICE F2 ? E01 ?
G22 BRANCH OFFICE G2 ? E01 ?
H22 BRANCH OFFICE H2 ? E01 ?
I22 BRANCH OFFICE I2 ? E01 ?
J22 BRANCH OFFICE J2 ? E01 ?
� �(EMPLOYEE)�� �� �� ��� �� ��� ���� ���� �� ��� ����. �
� �� ��� CREATE TABLE�� ALTER TABLE� �� ���.
CREATE TABLE EMPLOYEE(EMPNO CHAR(6) NOT NULL,
FIRSTNME VARCHAR(12) NOT NULL,MIDINIT CHAR(1) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHAR(3) ,PHONENO CHAR(4) ,HIREDATE DATE ,JOB CHAR(8) ,EDLEVEL SMALLINT NOT NULL,SEX CHAR(1) ,BIRTHDATE DATE ,SALARY DECIMAL(9,2) ,
� A. iSeries� DB2 UDB � � 397
BONUS DECIMAL(9,2) ,COMM DECIMAL(9,2)PRIMARY KEY (EMPNO))
ALTER TABLE EMPLOYEEADD FOREIGN KEY RED (WORKDEPT)REFERENCES DEPARTMENTON DELETE SET NULL
ALTER TABLE EMPLOYEEADD CONSTRAINT NUMBERCHECK (PHONENO >= ’0000’ AND PHONENO <= ’9999’)
��� ��� ���.
CREATE UNIQUE INDEX XEMP1ON EMPLOYEE (EMPNO)
CREATE INDEX XEMP2ON EMPLOYEE (WORKDEPT)
��� ��� � �� ���.
CREATE ALIAS EMP FOR EMPLOYEE
�� � �� ��� �� ���.
� �� ��
EMPNO �� ��
FIRSTNME �� ��
MIDINIT �� �� ��� �� ��
LASTNAME �� �� ��� �
WORKDEPT ��� � ��� ID
PHONENO �� ����
HIREDATE ��
JOB ��� "� �
EDLEVEL �� �� � ��(� )
SEX ��� ��(M �� F)
BIRTHDATE ���
SALARY ��(��)
BONUS �� ���(��)
COMM �� �(��)
EMPLOYEE� �� ���� 399 ��� �EMPLOYEE�� �����.
398 iSeries� DB2 UDB SQL ����� �� V5R2
EMPLOYEE
� � �(EMP_PHOTO)�� �� �� �� �� �� ��� ��� ��� �� ���. �� ��
�� ��� CREATE TABLE�� ALTER TABLE� �� ���.
CREATE TABLE EMP_PHOTO(EMPNO CHAR(6) NOT NULL,PHOTO_FORMAT VARCHAR(10) NOT NULL,PICTURE BLOB(100K),EMP_ROWID CHAR(40) NOT NULL DEFAULT ’’,PRIMARY KEY (EMPNO,PHOTO_FORMAT))
ALTER TABLE EMP_PHOTOADD COLUMN DL_PICTURE DATALINK(1000)
LINKTYPE URL NO LINK CONTROL
FIRST MID WORK PHONE ED SAL-EMP NO NAME INIT LASTNAME DEPT NO HIRE DATE JOB LEVEL SEX BIRTH DATE ARY BONUS COMM000010 CHRISTINE I HAAS A00 3978 1965-01-01 PRES 18 F 1933-08-24 52750 1000 4220000020 MICHAEL L THOMPSON B01 3476 1973-10-10 MANAGER 18 M 1948-02-02 41250 800 3300000030 SALLY A KWAN C01 4738 1975-04-05 MANAGER 20 F 1941-05-11 38250 800 3060000050 JOHN B GEYER E01 6789 1949-08-17 MANAGER 16 M 1925-09-15 40175 800 3214000060 IRVING F STERN D11 6423 1973-09-14 MANAGER 16 M 1945-07-07 32250 500 2580000070 EVA D PULASKI D21 7831 1980-09-30 MANAGER 16 F 1953-05-26 36170 700 2893000090 EILEEN W HENDERSON E11 5498 1970-08-15 MANAGER 16 F 1941-05-15 29750 600 2380000100 THEODORE Q SPENSER E21 0972 1980-06-19 MANAGER 14 M 1956-12-18 26150 500 2092000110 VINCENZO G LUCCHESSI A00 3490 1958-05-16 SALESREP 19 M 1929-11-05 46500 900 3720000120 SEAN O’CONNELL A00 2167 1963-12-05 CLERK 14 M 1942-10-18 29250 600 2340000130 DOLORES M QUINTANA C01 4578 1971-07-28 ANALYST 16 F 1925-09-15 23800 500 1904000140 HEATHER A NICHOLLS C01 1793 1976-12-15 ANALYST 18 F 1946-01-19 28420 600 2274000150 BRUCE ADAMSON D11 4510 1972-02-12 DESIGNER 16 M 1947-05-17 25280 500 2022000160 ELIZABETH R PIANKA D11 3782 1977-10-11 DESIGNER 17 F 1955-04-12 22250 400 1780000170 MASATOSHI J YOSHIMURA D11 2890 1978-09-15 DESIGNER 16 M 1951-01-05 24680 500 1974000180 MARILYN S SCOUTTEN D11 1682 1973-07-07 DESIGNER 17 F 1949-02-21 21340 500 1707000190 JAMES H WALKER D11 2986 1974-07-26 DESIGNER 16 M 1952-06-25 20450 400 1636000200 DAVID BROWN D11 4501 1966-03-03 DESIGNER 16 M 1941-05-29 27740 600 2217000210 WILLIAM T JONES D11 0942 1979-04-11 DESIGNER 17 M 1953-02-23 18270 400 1462000220 JENNIFER K LUTZ D11 0672 1968-08-29 DESIGNER 18 F 1948-03-19 29840 600 2387000230 JAMES J JEFFERSON D21 2094 1966-11-21 CLERK 14 M 1935-05-30 22180 400 1774000240 SALVATORE M MARINO D21 3780 1979-12-05 CLERK 17 M 1954-03-31 28760 600 2301000250 DANIEL S SMITH D21 0961 1969-10-30 CLERK 15 M 1939-11-12 19180 400 1534000260 SYBIL P JOHNSON D21 8953 1975-09-11 CLERK 16 F 1936-10-05 17250 300 1380000270 MARIA L PEREZ D21 9001 1980-09-30 CLERK 15 F 1953-05-26 27380 500 2190000280 ETHEL R SCHNEIDER E11 8997 1967-03-24 OPERATOR 17 F 1936-03-28 26250 500 2100000290 JOHN R PARKER E11 4502 1980-05-30 OPERATOR 12 M 1946-07-09 15340 300 1227000300 PHILIP X SMITH E11 2095 1972-06-19 OPERATOR 14 M 1936-10-27 17750 400 1420000310 MAUDE F SETRIGHT E11 3332 1964-09-12 OPERATOR 12 F 1931-04-21 15900 300 1272000320 RAMLAL V MEHTA E21 9990 1965-07-07 FILEREP 16 M 1932-08-11 19950 400 1596000330 WING LEE E21 2103 1976-02-23 FILEREP 14 M 1941-07-18 25370 500 2030000340 JASON R GOUNOT E21 5698 1947-05-05 FILEREP 16 M 1926-05-17 23840 500 1907200010 DIAN J HEMMINGER A00 3978 1965-01-01 SALESREP 18 F 1933-08-14 46500 1000 4220200120 GREG ORLANDO A00 2167 1972-05-05 CLERK 14 M 1942-10-18 29250 600 2340200140 KIM N NATZ C01 1793 1976-12-15 ANALYST 18 F 1946-01-19 28420 600 2274200170 KIYOSHI YAMAMOTO D11 2890 1978-09-15 DESIGNER 16 M 1951-01-05 24680 500 1974200220 REBA K JOHN D11 0672 1968-08-29 DESIGNER 18 F 1948-03-19 29840 600 2387200240 ROBERT M MONTEVERDE D21 3780 1979-12-05 CLERK 17 M 1954-03-31 28760 600 2301200280 EILEEN R SCHWARTZ E11 8997 1967-03-24 OPERATOR 17 F 1936-03-28 26250 500 2100200310 MICHELLE F SPRINGER E11 3332 1964-09-12 OPERATOR 12 F 1931-04-21 15900 300 1272200330 HELENA WONG E21 2103 1976-02-23 FIELDREP 14 F 1941-07-18 25370 500 2030200340 ROY R ALONZO E21 5698 1947-05-05 FIELDREP 16 M 1926-05-17 23840 500 1907
� A. iSeries� DB2 UDB � � 399
ALTER TABLE EMP_PHOTOADD FOREIGN KEY (EMPNO)REFERENCES EMPLOYEEON DELETE RESTRICT
��� ��� ���.
CREATE UNIQUE INDEX XEMP_PHOTOON EMP_PHOTO (EMPNO,PHOTO_FORMAT)
�� � �� ��� �� ���.
� �� ��
EMPNO �� ��
PHOTO_FORMAT PICTURE ��� ���� ��
PICTURE �� ���
EMP_ROWID �� ���� �� �� � ID
EMP_PHOTO� �� ���� �EMP_PHOTO�� �����.
EMP_PHOTO
EMPNO PHOTO_FORMAT PICTURE EMP_ROWID
000130 bitmap ?
000130 gif ?
000140 bitmap ?
000140 gif ?
000150 bitmap ?
000150 gif ?
000190 bitmap ?
000190 gif ?
� ��� �(EMP_RESUME)�� ��� �� �� �� �� ��� ��� ���� �� ���. �� �
�� �� ��� CREATE TABLE�� ALTER TABLE� �� ���.
CREATE TABLE EMP_RESUME(EMPNO CHAR(6) NOT NULL,RESUME_FORMAT VARCHAR(10) NOT NULL,RESUME CLOB(5K),EMP_ROWID CHAR(40) NOT NULL DEFAULT ’’,PRIMARY KEY (EMPNO,RESUME_FORMAT))
ALTER TABLE EMP_RESUMEADD COLUMN DL_RESUME DATALINK(1000)
LINKTYPE URL NO LINK CONTROL
400 iSeries� DB2 UDB SQL ����� �� V5R2
ALTER TABLE EMP_RESUMEADD FOREIGN KEY (EMPNO)REFERENCES EMPLOYEEON DELETE RESTRICT
��� ��� ���.
CREATE UNIQUE INDEX XEMP_RESUMEON EMP_RESUME (EMPNO,RESUME_FORMAT)
�� � �� ��� �� ���.
� �� ��
EMPNO �� ��
RESUME_FORMAT RESUME ��� ���� ��
RESUME ���
EMP_ROWID �� ���� �� �� � ID
EMP_RESUME� �� ���� �EMP_RESUME�� �����.
EMP_RESUME
EMPNO RESUME_FORMAT RESUME EMP_ROWID
000130 ascii ?
000130 html ?
000140 ascii ?
000140 html ?
000150 ascii ?
000150 html ?
000190 ascii ?
000190 html ?
����� �� � �� �(EMPPROJACT)���� �� �� �� �� � ���� ��� � �� �� ���
����. �� �(��� �� ����) �� �� ��� ��� �� �
���. ���� �� �� �� �� ��� CREATE TABLE�� ALTER
TABLE� �� ���.
CREATE TABLE EMPPROJACT(EMPNO CHAR(6) NOT NULL,PROJNO CHAR(6) NOT NULL,ACTNO SMALLINT NOT NULL,EMPTIME DECIMAL(5,2) ,EMSTDATE DATE ,EMENDATE DATE )
� A. iSeries� DB2 UDB � � 401
ALTER TABLE EMPPROJACTADD FOREIGN KEY REPAPA (PROJNO, ACTNO, EMSTDATE)REFERENCES PROJACTON DELETE RESTRICT
��� ��� � �� ���.
CREATE ALIAS EMPACT FOR EMPPROJACT
CREATE ALIAS EMP_ACT FOR EMPPROJACT
�� � �� ��� �� ���.
� 42. ���� �� �� �� �� �
� �� ��
EMPNO �� ID ��
PROJNO ��� ��� ����� PROJNO
ACTNO ��� ��� ���� �� ��
EMPTIME EMSTDATE� EMENDATE � ���� ���� ��� ��
� ��(0.00� 1.00��)
EMSTDATE �� � ��
EMENDATE �� �� ��
EMPPROJACT� �� ���� �EMPPROJACT�� �����.
EMPPROJACT
EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
000010 AD3100 10 .50 1982-01-01 1982-07-01
000070 AD3110 10 1.00 1982-01-01 1983-02-01
000230 AD3111 60 1.00 1982-01-01 1982-03-15
000230 AD3111 60 .50 1982-03-15 1982-04-15
000230 AD3111 70 .50 1982-03-15 1982-10-15
000230 AD3111 80 .50 1982-04-15 1982-10-15
000230 AD3111 180 .50 1982-10-15 1983-01-01
000240 AD3111 70 1.00 1982-02-15 1982-09-15
000240 AD3111 80 1.00 1982-09-15 1983-01-01
000250 AD3112 60 1.00 1982-01-01 1982-02-01
000250 AD3112 60 .50 1982-02-01 1982-03-15
000250 AD3112 60 1.00 1983-01-01 1983-02-01
000250 AD3112 70 .50 1982-02-01 1982-03-15
000250 AD3112 70 1.00 1982-03-15 1982-08-15
000250 AD3112 70 .25 1982-08-15 1982-10-15
000250 AD3112 80 .25 1982-08-15 1982-10-15
000250 AD3112 80 .50 1982-10-15 1982-12-01
000250 AD3112 180 .50 1982-08-15 1983-01-01
402 iSeries� DB2 UDB SQL ����� �� V5R2
EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
000260 AD3113 70 .50 1982-06-15 1982-07-01
000260 AD3113 70 1.00 1982-07-01 1983-02-01
000260 AD3113 80 1.00 1982-01-01 1982-03-01
000260 AD3113 80 .50 1982-03-01 1982-04-15
000260 AD3113 180 .50 1982-03-01 1982-04-15
000260 AD3113 180 1.00 1982-04-15 1982-06-01
000260 AD3113 180 1.00 1982-06-01 1982-07-01
000270 AD3113 60 .50 1982-03-01 1982-04-01
000270 AD3113 60 1.00 1982-04-01 1982-09-01
000270 AD3113 60 .25 1982-09-01 1982-10-15
000270 AD3113 70 .75 1982-09-01 1982-10-15
000270 AD3113 70 1.00 1982-10-15 1983-02-01
000270 AD3113 80 1.00 1982-01-01 1982-03-01
000270 AD3113 80 .50 1982-03-01 1982-04-01
000030 IF1000 10 .50 1982-06-01 1983-01-01
000130 IF1000 90 1.00 1982-10-01 1983-01-01
000130 IF1000 100 .50 1982-10-01 1983-01-01
000140 IF1000 90 .50 1982-10-01 1983-01-01
000030 IF2000 10 .50 1982-01-01 1983-01-01
000140 IF2000 100 1.00 1982-01-01 1982-03-01
000140 IF2000 100 .50 1982-03-01 1982-07-01
000140 IF2000 110 .50 1982-03-01 1982-07-01
000140 IF2000 110 .50 1982-10-01 1983-01-01
000010 MA2100 10 .50 1982-01-01 1982-11-01
000110 MA2100 20 1.00 1982-01-01 1983-03-01
000010 MA2110 10 1.00 1982-01-01 1983-02-01
000200 MA2111 50 1.00 1982-01-01 1982-06-15
000200 MA2111 60 1.00 1982-06-15 1983-02-01
000220 MA2111 40 1.00 1982-01-01 1983-02-01
000150 MA2112 60 1.00 1982-01-01 1982-07-15
000150 MA2112 180 1.00 1982-07-15 1983-02-01
000170 MA2112 60 1.00 1982-01-01 1983-06-01
000170 MA2112 70 1.00 1982-06-01 1983-02-01
000190 MA2112 70 1.00 1982-01-01 1982-10-01
000190 MA2112 80 1.00 1982-10-01 1983-10-01
000160 MA2113 60 1.00 1982-07-15 1983-02-01
000170 MA2113 80 1.00 1982-01-01 1983-02-01
000180 MA2113 70 1.00 1982-04-01 1982-06-15
000210 MA2113 80 .50 1982-10-01 1983-02-01
000210 MA2113 180 .50 1982-10-01 1983-02-01
000050 OP1000 10 .25 1982-01-01 1983-02-01
� A. iSeries� DB2 UDB � � 403
EMPNO PROJNO ACTNO EMPTIME EMSTDATE EMENDATE
000090 OP1010 10 1.00 1982-01-01 1983-02-01
000280 OP1010 130 1.00 1982-01-01 1983-02-01
000290 OP1010 130 1.00 1982-01-01 1983-02-01
000300 OP1010 130 1.00 1982-01-01 1983-02-01
000310 OP1010 130 1.00 1982-01-01 1983-02-01
000050 OP2010 10 .75 1982-01-01 1983-02-01
000100 OP2010 10 1.00 1982-01-01 1983-02-01
000320 OP2011 140 .75 1982-01-01 1983-02-01
000320 OP2011 150 .25 1982-01-01 1983-02-01
000330 OP2012 140 .25 1982-01-01 1983-02-01
000330 OP2012 160 .75 1982-01-01 1983-02-01
000340 OP2013 140 .50 1982-01-01 1983-02-01
000340 OP2013 170 .50 1982-01-01 1983-02-01
000020 PL2100 30 1.00 1982-01-01 1982-09-15
���� �(PROJECT)���� �� �� �� ���� �� � ����� ���. � � �� �
� ��� ���� ��, ��, ��� � � � ����. ���� �� �
�� CREATE TABLE�� ALTER TABLE� �� ���.
CREATE TABLE PROJECT(PROJNO CHAR(6) NOT NULL,PROJNAME VARCHAR(24) NOT NULL DEFAULT,DEPTNO CHAR(3) NOT NULL,RESPEMP CHAR(6) NOT NULL,PRSTAFF DECIMAL(5,2) ,PRSTDATE DATE ,PRENDATE DATE ,MAJPROJ CHAR(6) ,PRIMARY KEY (PROJNO))
ALTER TABLE PROJECTADD FOREIGN KEY (DEPTNO)REFERENCES DEPARTMENTON DELETE RESTRICT
ALTER TABLE PROJECTADD FOREIGN KEY (RESPEMP)REFERENCES EMPLOYEEON DELETE RESTRICT
ALTER TABLE PROJECTADD FOREIGN KEY RPP (MAJPROJ)REFERENCES PROJECTON DELETE CASCADE
��� ��� ���.
404 iSeries� DB2 UDB SQL ����� �� V5R2
CREATE UNIQUE INDEX XPROJ1ON PROJECT (PROJNO)
CREATE INDEX XPROJ2ON PROJECT (RESPEMP)
��� ��� � �� ���.
CREATE ALIAS PROJ FOR PROJECT
��� �� �� �� ���.
� �� ��
PROJNO ���� ��
PROJNAME �����
DEPTNO ����� ��� ��� �� ��
RESPEMP ����� ��� ��� �� ��
PRSTAFF �� � ��
PRSTDATE ����� �� �
PRENDATE ����� �� �
MAJPROJ �� ���� �� ���� �� ��
PROJECT� �� ���� �PROJECT�� �����.
PROJECT
PROJNO PROJNAME DEPTNO RESPEMP PRSTAFF PRSTDATE PRENDATE MAJPROJ
AD3100 ADMIN SERVICES D01 000010 6.5 1982-01-01 1983-02-01 ?
AD3110 GENERAL ADMIN
SYSTEMS
D21 000070 6 1982-01-01 1983-02-01 AD3100
AD3111 PAYROLL
PROGRAMMING
D21 000230 2 1982-01-01 1983-02-01 AD3110
AD3112 PERSONNEL
PROGRAMMING
D21 000250 1 1982-01-01 1983-02-01 AD3110
AD3113 ACCOUNT
PROGRAMMING
D21 000270 2 1982-01-01 1983-02-01 AD3110
IF1000 QUERY SERVICES C01 000030 2 1982-01-01 1983-02-01 ?
IF2000 USER
EDUCATION
C01 000030 1 1982-01-01 1983-02-01 ?
MA2100 WELD LINE
AUTOMATION
D01 000010 12 1982-01-01 1983-02-01 ?
MA2110 W L
PROGRAMMING
D11 000060 9 1982-01-01 1983-02-01 MA2100
MA2111 W L PROGRAM
DESIGN
D11 000220 2 1982-01-01 1982-12-01 MA2110
MA2112 W L ROBOT
DESIGN
D11 000150 3 1982-01-01 1982-12-01 MA2110
� A. iSeries� DB2 UDB � � 405
PROJNO PROJNAME DEPTNO RESPEMP PRSTAFF PRSTDATE PRENDATE MAJPROJ
MA2113 W L PROD CONT
PROGS
D11 000160 3 1982-02-15 1982-12-01 MA2110
OP1000 OPERATION
SUPPORT
E01 000050 6 1982-01-01 1983-02-01 ?
OP1010 OPERATION E11 000090 5 1982-01-01 1983-02-01 OP1000
OP2000 GEN SYSTEMS
SERVICES
E01 000050 5 1982-01-01 1983-02-01 ?
OP2010 SYSTEMS
SUPPORT
E21 000100 4 1982-01-01 1983-02-01 OP2000
OP2011 SCP SYSTEMS
SUPPORT
E21 000320 1 1982-01-01 1983-02-01 OP2010
OP2012 APPLICATIONS
SUPPORT
E21 000330 1 1982-01-01 1983-02-01 OP2010
OP2013 DB/DC SUPPORT E21 000340 1 1982-01-01 1983-02-01 OP2010
PL2100 WELD LINE
PLANNING
B01 000020 1 1982-01-01 1982-09-15 MA2100
���� �� �(PROJACT)���� �� �� �� �� ���� �� � ����� ���. � �
�� �� ��� ���� ��, �� �� � � � ����. ���� �
� �� ��� CREATE TABLE�� ALTER TABLE� �� ���.
CREATE TABLE PROJACT(PROJNO CHAR(6) NOT NULL,ACTNO SMALLINT NOT NULL,ACSTAFF DECIMAL(5,2),ACSTDATE DATE NOT NULL,ACENDATE DATE ,PRIMARY KEY (PROJNO, ACTNO, ACSTDATE))
ALTER TABLE PROJACTADD FOREIGN KEY RPAP (PROJNO)REFERENCES PROJECTON DELETE RESTRICT
��� �� �� �� ����.
ALTER TABLE PROJACTADD FOREIGN KEY RPAA (ACTNO)
REFERENCES ACTON DELETE RESTRICT
��� ��� ���.
CREATE UNIQUE INDEX XPROJAC1ON PROJACT (PROJNO, ACTNO, ACSTDATE)
406 iSeries� DB2 UDB SQL ����� �� V5R2
��� �� �� �� ���.
� �� ��
PROJNO ���� ��
ACTNO �� ��
ACSTAFF �� � ��
ACSTDATE �� � ��
ACENDATE �� � ��
PROJACT� �� ���� �PROJACT�� �����.
PROJACT
PROJNO ACTNO ACSTAFF ACSTDATE ACENDATE
AD3100 10 ? 1982-01-01 ?
AD3110 10 ? 1982-01-01 ?
AD3111 60 ? 1982-01-01 ?
AD3111 60 ? 1982-03-15 ?
AD3111 70 ? 1982-03-15 ?
AD3111 80 ? 1982-04-15 ?
AD3111 180 ? 1982-10-15 ?
AD3111 70 ? 1982-02-15 ?
AD3111 80 ? 1982-09-15 ?
AD3112 60 ? 1982-01-01 ?
AD3112 60 ? 1982-02-01 ?
AD3112 60 ? 1983-01-01 ?
AD3112 70 ? 1982-02-01 ?
AD3112 70 ? 1982-03-15 ?
AD3112 70 ? 1982-08-15 ?
AD3112 80 ? 1982-08-15 ?
AD3112 80 ? 1982-10-15 ?
AD3112 180 ? 1982-08-15 ?
AD3113 70 ? 1982-06-15 ?
AD3113 70 ? 1982-07-01 ?
AD3113 80 ? 1982-01-01 ?
AD3113 80 ? 1982-03-01 ?
AD3113 180 ? 1982-03-01 ?
AD3113 180 ? 1982-04-15 ?
AD3113 180 ? 1982-06-01 ?
AD3113 60 ? 1982-03-01 ?
AD3113 60 ? 1982-04-01 ?
AD3113 60 ? 1982-09-01 ?
� A. iSeries� DB2 UDB � � 407
PROJNO ACTNO ACSTAFF ACSTDATE ACENDATE
AD3113 70 ? 1982-09-01 ?
AD3113 70 ? 1982-10-15 ?
IF1000 10 ? 1982-06-01 ?
IF1000 90 ? 1982-10-01 ?
IF1000 100 ? 1982-10-01 ?
IF2000 10 ? 1982-01-01 ?
IF2000 100 ? 1982-01-01 ?
IF2000 100 ? 1982-03-01 ?
IF2000 110 ? 1982-03-01 ?
IF2000 110 ? 1982-10-01 ?
MA2100 10 ? 1982-01-01 ?
MA2100 20 ? 1982-01-01 ?
MA2110 10 ? 1982-01-01 ?
MA2111 50 ? 1982-01-01 ?
MA2111 60 ? 1982-06-15 ?
MA2111 40 ? 1982-01-01 ?
MA2112 60 ? 1982-01-01 ?
MA2112 180 ? 1982-07-15 ?
MA2112 70 ? 1982-06-01 ?
MA2112 70 ? 1982-01-01 ?
MA2112 80 ? 1982-10-01 ?
MA2113 60 ? 1982-07-15 ?
MA2113 80 ? 1982-01-01 ?
MA2113 70 ? 1982-04-01 ?
MA2113 80 ? 1982-10-01 ?
MA2113 180 ? 1982-10-01 ?
OP1000 10 ? 1982-01-01 ?
OP1010 10 ? 1982-01-01 ?
OP1010 130 ? 1982-01-01 ?
OP2010 10 ? 1982-01-01 ?
OP2011 140 ? 1982-01-01 ?
OP2011 150 ? 1982-01-01 ?
OP2012 140 ? 1982-01-01 ?
OP2012 160 ? 1982-01-01 ?
OP2013 140 ? 1982-01-01 ?
OP2013 170 ? 1982-01-01 ?
PL2100 30 ? 1982-01-01 ?
408 iSeries� DB2 UDB SQL ����� �� V5R2
�� �(ACT)�� �� � �� ���. �� �� ��� CREATE TABLE� ��
���.
CREATE TABLE ACT(ACTNO SMALLINT NOT NULL,ACTKWD CHAR(6) NOT NULL,ACTDESC VARCHAR(20) NOT NULL,PRIMARY KEY (ACTNO))
��� ��� ���.
CREATE UNIQUE INDEX XACT1ON ACT (ACTNO)
CREATE UNIQUE INDEX XACT2ON ACT (ACTKWD)
��� �� �� �� ���.
� �� ��
ACTNO �� ��
ACTKWD �� �� ���
ACTDESC ��� ��
ACT� �� ���� �ACT�� �����.
ACT
ACTNO ACTKWD ACTDESC
10 MANAGE MANAGE/ADVISE
20 ECOST ESTIMATE COST
30 DEFINE DEFINE SPECS
40 LEADPR LEAD PROGRAM/DESIGN
50 SPECS WRITE SPECS
60 LOGIC DESCRIBE LOGIC
70 CODE CODE PROGRAMS
80 TEST TEST PROGRAMS
90 ADMQS ADM QUERY SYSTEM
100 TEACH TEACH CLASSES
110 COURSE DEVELOP COURSES
120 STAFF PERS AND STAFFING
130 OPERAT OPER COMPUTER SYS
140 MAINT MAINT SOFTWARE SYS
150 ADMSYS ADM OPERATING SYS
160 ADMDB ADM DATA BASES
� A. iSeries� DB2 UDB � � 409
170 ADMDC ADM DATA COMM
180 DOC DOCUMENT
�� ��� �(CL_SCHED)��� ��� �� � ����, �� ���� � ��� � �� � �� ��
� ��� ���. ��� ��� �� ��� CREATE TABLE��� ��
�.
CREATE TABLE CL_SCHED(CLASS_CODE CHAR(7),"DAY" SMALLINT,STARTING TIME,ENDING TIME)
�� � �� ��� �� ���.
� �� ��
CLASS_CODE ��� ��(room:teacher)
DAY 4 � ��
STARTING ��� � ��
ENDING ��� � ��
CL_SCHED� �� ���� �CL_SCHED�� �����.
CL_SCHED
CLASS_CODE DAY STARTING ENDING
042:BF 4 12:10:00 14:00:00
553:MJA 1 10:30:00 11:00:00
543:CWM 3 09:10:00 10:30:00
778:RES 2 12:10:00 14:00:00
044:HD 3 17:12:30 18:00:00
� ��� �(IN_TRAY)� ��� �� �� ��� ��(���� �� ����, ���� ��� ��
� ��� ID, ��� ��) ���. � ��� �� ��� CREATE TABLE
��� ���.
CREATE TABLE IN_TRAY(RECEIVED TIMESTAMP,SOURCE CHAR(8),SUBJECT CHAR(64),NOTE_TEXT VARCHAR(3000))
410 iSeries� DB2 UDB SQL ����� �� V5R2
�� � �� ��� �� ���.
� �� ��
RECEIVED �� ��� ��
SOURCE ��� �� ��� ��� ID
SUBJECT �� �� ��� ��
NOTE_TEXT ��
IN_TRAY� �� ���� �IN_TRAY�� �����.
IN_TRAY
RECEIVED SOURCE SUBJECT NOTE_TEXT
1988-12-25-17.12.
30.000000
BADAMSON FWD: Fantastic year! 4th
Quarter Bonus.
T o : J W A L K E R C c :
QUINTANA, NICHOLLS
Jim, Looks like our hard
work has paid off. I have
some good beer in the fridge
if you want to come over to
celebrate a bit. Delores and
Heather, are you interested as
well? Bruce <Forwarding
from ISTERN> Subject:
FWD: Fantastic year! 4th
Q u a r t e r B o n u s . T o :
Dept_D11 Congratulations on
a job well done. Enjoy this
y e a r ’ s b o n u s . I r v
<Forwarding from CHAAS>
Subject: Fantastic year! 4th
Q u a r t e r B o n u s . T o :
All_Managers Our 4th quarter
results are in. We pulled
together as a team and
exceeded our plan! I am
pleased to announce a bonus
this year of 18%. Enjoy the
holidays. Christine Haas
� A. iSeries� DB2 UDB � � 411
RECEIVED SOURCE SUBJECT NOTE_TEXT
1988-12-23-08.53.
58.000000
ISTERN FWD: Fantastic year! 4th
Quarter Bonus.
T o : D e p t _ D 1 1
Congratulations on a job well
done. Enjoy this year’s
bonus. Irv <Forwarding from
CHAAS> Subject: Fantastic
year! 4th Quarter Bonus. To:
All_Managers Our 4th quarter
results are in. We pulled
together as a team and
exceeded our plan! I am
pleased to announce a bonus
this year of 18%. Enjoy the
holidays. Christine Haas
1988-12-22-14.07.
21.136421
CHAAS Fantastic year! 4th Quarter
Bonus.
To: All_Managers Our 4th
quarter results are in. We
pulled together as a team and
exceeded our plan! I am
pleased to announce a bonus
this year of 18%. Enjoy the
holidays. Christine Haas
�� �(ORG)�� �� ��� �� ���. �� �� ��� CREATE TABLE� ��
���.
CREATE TABLE ORG(DEPTNUMB SMALLINT NOT NULL,DEPTNAME VARCHAR(14),MANAGER SMALLINT,DIVISION VARCHAR(10),LOCATION VARCHAR(13))
�� � �� ��� �� ���.
� �� ��
DEPTNUMB �� ��
DEPTNAME ���
MANAGER ��� ���
DIVISION ��� �
LOCATION ��� ��
ORG� �� ���� 413 ��� �ORG�� �����.
412 iSeries� DB2 UDB SQL ����� �� V5R2
ORG
DEPTNUMB DEPTNAME MANAGER DIVISION LOCATION
10 �� 160 �� �"
15 �#��� 50 �� ��
20 ��� 10 �� �
38 ��� 30 �� ����
42 5�� 100 ��� ���
51 � 140 ��� ���
66 270 �� �����
84 �� 290 �� !�
� �(STAFF)�� �� ��� ���. �� �� ��� CREATE TABLE� ��
���.
CREATE TABLE STAFF(ID SMALLINT NOT NULL,NAME VARCHAR(9),DEPT SMALLINT,JOB CHAR(5),YEARS SMALLINT,SALARY DECIMAL(7,2),COMM DECIMAL(7,2))
��� �� �� �� ���.
� �� ��
ID �� ��
NAME ���
DEPT �� ��
JOB ��
YEARS ��� � �
SALARY ��� ��
COMM ��� ���
STAFF� �� ���� �STAFF�� �����.
STAFF
ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50 ?
20 Pernal 20 Sales 8 18171.25 612.45
30 Marenghi 38 Mgr 5 17506.75 ?
� A. iSeries� DB2 UDB � � 413
ID NAME DEPT JOB YEARS SALARY COMM
40 O’Brien 38 Sales 6 18006.00 846.55
50 Hanes 15 Mgr 10 20659.80 ?
60 Quigley 38 Sales 7 16508.30 650.25
70 Rothman 15 Sales 7 16502.83 1152.00
80 James 20 Clerk ? 13504.60 128.20
90 Koonitz 42 Sales 6 18001.75 1386.70
100 Plotz 42 Mgr 7 18352.80 ?
110 Ngan 15 Clerk 5 12508.20 206.60
120 Naughton 38 Clerk ? 12954.75 180.00
130 Yamaguchi 42 Clerk 6 10505.90 75.60
140 Fraye 51 Mgr 6 21150.00 ?
150 Williams 51 Sales 6 19456.50 637.65
160 Molinare 10 Mgr 7 22959.20 ?
170 Kermisch 15 Clerk 4 12258.50 110.10
180 Abrahams 38 Clerk 3 12009.75 236.50
190 Sneider 20 Clerk 8 14252.75 126.50
200 Scoutten 42 Clerk ? 11508.60 84.20
210 Lu 10 Mgr 10 20010.00 ?
220 Smith 51 Sales 7 17654.50 992.80
230 Lundquist 51 Clerk 3 13369.80 189.65
240 Daniels 10 Mgr 5 19260.25 ?
250 Wheeler 51 Clerk 6 14460.00 513.30
260 Jones 10 Mgr 12 21234.00 ?
270 Lea 66 Mgr 9 18555.50 ?
280 Wilson 66 Sales 9 18674.50 811.50
290 Quill 84 Mgr 10 19818.00 ?
300 Davis 84 Sales 5 15454.50 806.10
310 Graham 66 Sales 13 21000.00 200.30
320 Gonzales 66 Sales 4 16858.20 844.00
330 Burke 66 Clerk 1 10988.00 55.50
340 Edwards 84 Sales 7 17844.00 1285.00
3650 Gafney 84 Clerk 5 13030.50 188.00
�� �(SALES)�� �� � �� ��� �� � ��� ���. �� �� ��� CREATE
TABLE� �� ���.
414 iSeries� DB2 UDB SQL ����� �� V5R2
CREATE TABLE SALES(SALES_DATE DATE,SALES_PERSON VARCHAR(15),REGION VARCHAR(15),SALES INTEGER)
�� � �� ��� �� ���.
� �� ��
SALES_DATE ��� ��
SALES_PERSON ��� ���
REGION ��� ��
SALES ��
SALES� �� ���� �SALES�� �����.
SALES
SALES_DATE SALES_PERSON REGION SALES
12/31/1995 LUCCHESSI Ontario-South 1
12/31/1995 LEE Ontario-South 3
12/31/1995 LEE Quebec 1
12/31/1995 LEE Manitoba 2
12/31/1995 GOUNOT Quebec 1
03/29/1996 LUCCHESSI Ontario-South 3
03/29/1996 LUCCHESSI Quebec 1
03/29/1996 LEE Ontario-South 2
03/29/1996 LEE Ontario-North 2
03/29/1996 LEE Quebec 3
03/29/1996 LEE Manitoba 5
03/29/1996 GOUNOT Ontario-South 3
03/29/1996 GOUNOT Quebec 1
03/29/1996 GOUNOT Manitoba 7
03/30/1996 LUCCHESSI Ontario-South 1
03/30/1996 LUCCHESSI Quebec 2
03/30/1996 LUCCHESSI Manitoba 1
03/30/1996 LEE Ontario-South 7
03/30/1996 LEE Ontario-North 3
03/30/1996 LEE Quebec 7
03/30/1996 LEE Manitoba 4
03/30/1996 GOUNOT Ontario-South 2
03/30/1996 GOUNOT Quebec 18
03/30/1996 GOUNOT Manitoba 1
03/31/1996 LUCCHESSI Manitoba 1
� A. iSeries� DB2 UDB � � 415
SALES_DATE SALES_PERSON REGION SALES
03/31/1996 LEE Ontario-South 14
03/31/1996 LEE Ontario-North 3
03/31/1996 LEE Quebec 7
03/31/1996 LEE Manitoba 3
03/31/1996 GOUNOT Ontario-South 2
03/31/1996 GOUNOT Quebec 1
04/01/1996 LUCCHESSI Ontario-South 3
04/01/1996 LUCCHESSI Manitoba 1
04/01/1996 LEE Ontario-South 8
04/01/1996 LEE Ontario-North ?
04/01/1996 LEE Quebec 8
04/01/1996 LEE Manitoba 9
04/01/1996 GOUNOT Ontario-South 3
04/01/1996 GOUNOT Ontario-North 1
04/01/1996 GOUNOT Quebec 3
04/01/1996 GOUNOT Manitoba 7
416 iSeries� DB2 UDB SQL ����� �� V5R2
� B. iSeries� DB2 UDB CL �� ��
� � � � ���� SQL ���� ���� ��� �� ������ ��
���.
� ��� ��� ��� �����.
v �CRTSQLPKG(��� �� �� ��� �) ��
v 421 ��� �DLTSQLPKG(��� �� �� ��� ��) ��
v 423 ��� �PRTSQLINF(SQL(��� �� ��) �� � ) ��
v 424 ��� �RUNSQLSTM(��� �� ��� ��) ��
v 435 ��� �STRSQL(��� �� �� �) ��
CRTSQLPKG(��� �� �� ��� ��) ��
Job: B,I Pgm: B,I REXX: B,I Exec
�� CRTSQLPKG*LIBL/
PGM( program-name )*CURLIB/library-name/
�
�(1)
*PGMRDB( relational-database-name )
*CURRENTUSER( user-name )
�
�*NONE
PASSWORD( password )10
GENLVL( severity-level )
�
�*YES
REPLACE( *NO )*PGM
DFTRDBCOL( *NONE )collection-name
�
�*LIBL/ QSYSPRT
PRTFILE( printer-file-name )*CURLIB/library-name/
�
© Copyright IBM Corp. 1998, 2002 417
�*PGM
OBJTYPE( *SRVPGM )
�
*ALL
(2)MODULE( module-name )
�
�*PGMTXT
TEXT( *BLANK )'description'
��
�:
1 � � �� �� ���� �� �� �� ��� ���.
2 �� 256 ��� ��� ���.
�:
��� �� �� ��� �(CRTSQLPKG) �� �� � SQL ������
�� ��� ������� SQL ���� �(�� ��)� �� ��� �
��. � SQL ����� CRTSQLxxx(�� xxx=C, CI, CBL, CBLI, FTN,
PLI �� RPG �� RPGI) � RDB ���� �� �� �����
�.
��:
PGM
SQL ���� ��� ����� ���� ���. ����� � SQL
������� �.
����� ��� �� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �� �����.
program-name: ���� �� ����� �� �����.
RDB
SQL ���� �� ��� ������� ���.
*PGM: SQL ���� ��� ��� �������� ����. ��� �
������� � SQL ����� RDB ��� ����.
CRTSQLPKG
418 iSeries� DB2 UDB SQL ����� �� V5R2
relational-database-name: SQL ���� �� ��� ������� ��
���. � ��� ��� ��� ������� ��� WRKRDBDIRE(�
�� ������ ���� �� �� �) � �����.
USER
��� �� � ��� ����� ��� ���� ���.
*CURRENT: �� �� ��� ����� ����.
user-name: ������ �� � ���� ���� �����.
PASSWORD
��� ���� ��� ��� ���.
*NONE: ��� ���� ���. � � ���� USER(*CURRENT) ��
����� �.
password: USER ��� ��� ����� ��� �����.
GENLVL
SQL ��� �� ��� �� �� ��� �� � �� ���.
��� �� �� ��� ���, SQL ���� ��� ���.
10: ��� � ��� 10��.
severity-level: �� � �� �����. ��� � ��� 0-40 ��
��.
REPLACE
�� ���� ��� ���� ������ �� ���. � ���
�� ��� ��� CL ���� � A, ″�� ��� ��″ ���.
*YES: ��� �� �� SQL ���� ��� SQL ���� ����.
*NO: �� �� �� �� SQL ���� ��� SQL ���� ����
���, ���� �� ����� �� �� ��� �� SQL ���� �
�� ���.
DFTRDBCOL
���� �� �, ��, �� � SQL ���� �� ��� ���� ��
�. � ���� ��� �� �� SQL�� ����.
*PGM: SQL ���� ��� ����� ����. ��� ��� ����
�� ����� � SQL ����� DFTRDBCOL ��� ����.
*NONE: �, ��, �� � SQL ��� �� ���� �� ��� ����
� ���� CRTSQLxxx �� OPTION ��� ��� �� �� �
��.
collection-name: ���� �� �, ��, �� � SQL ��� ���� ��
�� �����.
CRTSQLPKG
� B. iSeries� DB2 UDB CL � �� 419
PRTFILE
SQL ��� �� � ���� ���� �� �� ���� ���.
SQL ��� �� ��� ��� �� ��� ���� ��� ���.
�� ��� ��� ����� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �� �����.
QSYSPRT: ��� ���� ���, SQL ��� � �� ���� IBM �
� �� � QSYSPRT� ����.
printer-file-name: SQL ��� � �� ���� ���� �� �� ��
�����.
OBJTYPE
SQL ���� �� ����� �� ���.
*PGM: PGM ��� ��� ����� SQL ���� ��
*SRVPGM: PGM ��� ��� ��� ����� SQL ���� �
�.
MODULE
��� ���� ��� ���� ���.
*ALL: ���� � � �� �� SQL ���� ���. ����� ��
SQL�� ��� ��� � ��� �� ��� �� ���� ����.
�: CRTSQLPKG� 1024 �� ��� �� ���� ��� ���.
module-name: SQL ���� �� ���� �� �� 256� ��� ��
��� . SQL ��� � ��� ��� 256 �� �� �� , �
CRTSQLPKG � ���� �.
�� ���� �� ���� ����. � � �� ����� � ��
� ���� *ALL �� ���� MODULE ��� ��� ��, SQL ��
�� �� ���� �� �� �� ��� ���. ��� SQL �
� ��� RDB ���� ���� � ��� ��, SQL ����
�� �� ���. SQL ���� ��� ����� ��� ����.
TEXT
SQL ���� � �� �� ��� ���� ���.
*PGMTXT: SQL ���� ��� ����� ���� ����.
CRTSQLPKG
420 iSeries� DB2 UDB SQL ����� �� V5R2
*BLANK: ���� ���� ���.
‘description’: 50� �� ���� ������� �� �����.
�:
CRTSQLPKG PAYROLL RDB(SYSTEMA)TEXT(’Payroll Program’)
� �� � SQL ����� SQL ���� ��� ������ SYSTEMA
��.
DLTSQLPKG(��� �� �� ��� ��) ��
Job: B,I Pgm: B,I REXX: B,I Exec�� DLTSQLPKG �
�*LIBL/ (1)
SQLPKG( SQL-package-name )*CURLIB/ generic*-SQL-package name*USRLIBL/*ALL/*ALLUSR/library-name/
��
�:
1 � � �� �� ���� �� �� �� ��� ���.
�:
��� �� �� ��� ��(DLTSQLPKG) �� � � ��� SQL ���� �
�� �� ����.
DLTSQLPKG� �� ��� ��� SQL ���� ��� iSeries ���� �
���� �.
�� iSeries ���� ��� ���� SQL ���� ����, ��� ����
DLTSQLPKG � ��� ��� � ��(SBMRMTCMD) � ����
�
iSeries ���� �� ��� ����� SQL ���� ��� � ��
�� ���.
v CONNECT � DROP PACKAGE � ��� �� ��� SQL ��
�.
v ��� ��� �� � � ��� �� � ���.
v DROP PACKAGE SQL�� �� SQL ���� �� ���.
CRTSQLPKG
� B. iSeries� DB2 UDB CL � �� 421
��:
SQLPKG
��� SQL ���� ���� ���. �� �� � SQL ����� �
�� ���.
SQL ����� ��� ����� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ��� �
� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� ���
��� ��� ������ ��� QGPL ������ ����.
*USRLIBL: � ����� ���� ��� � �� ������� ��
��.
*ALL: QSYS� ��� ���� �� ������ ����.
*ALLUSR: �� ��� ������ ����. �� ��� �� Q� �
�� �� ��� �� ������ ����.
#CGULIB #DFULIB #RPGLIB #SEULIB#COBLIB #DSULIB #SDALIB
IBM� ��� Qxxx ������ �� � �� ���� �� �
��� ��� ��� �� ��. ���, ��� ������� ��� ���
��� ���� ����.
QDSNX QRCL QUSRBRM QUSRSYSQGPL QS36F QUSRIJS QUSRVxRxMxQGPL38 QUSER38 QUSRINFSKRQPFRDATA QUSRADSM QUSRRDARS
�: QUSRVxRxMx �� � ������� IBM� ��� � ���
�� ��� �� ���. VxRxMx� ������ ��, ��� � ��
����.
library-name: ��� ������ �� �����.
SQL-package-name: ��� SQL ���� �� �����.
generic*-SQL-package-name: ��� SQL ���� � � �����. �
�� ��(*)� � �� � � ��� �� �����. �� ��, ABC*�
�� ����. � �� ��� ��, � ��� ��� �� SQL ����
� ���� �� ����. ��(*) � �(��)� ���, ���� �
�� ��� SQL ������ ���.
�:
DLTSQLPKG SQLPKG(JONES)
DLTSQLPKG
422 iSeries� DB2 UDB SQL ����� �� V5R2
� �� SQL ��� JONES� ���.
PRTSQLINF(SQL(��� �� ��) �� ��) ��
Job: B,I Pgm: B,I REXX: B,I Exec
�� PRTSQLINF*LIBL/
OBJ( ���� )*CURLIB/library-name/
*JOB
�
�(2)
(1) *PGMOBJTYPE( *SQLPKG )
*SRVPGM
��
�:
1 OBJTYPE ���� OBJ(*JOB)� ���� ���� ���.
2 � �� �� �� ���� �� ���� ��� ���.
�:
PRTSQLINF(SQL(��� �� ��) �� � ) �� ����, SQL ���, ��
� ���� �� � �� SQL� �� ��� � �. � ��� SQL�,
�� �� � ��� �� � � ���� �� �� �� ���� ���
SQL� �� � ��� � ���� ���� �� ���.
��:
OBJ
SQL ��� � �� ����� ���� �� SQL ��� � � ��
���� ‘*JOB’ �����. ��� ����� ����, SQL ��� ��
��� ����� � ���.
����� ��� ��� ����� � � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �� �����.
object-name: ��� � �� ����, SQL ��� �� ��� �����
�� �����.
v *JOB: �� � �� SQL ��� � � �� ����.
PRTSQLINF
� B. iSeries� DB2 UDB CL � �� 423
��
OBJTYPE
����� �� ���.
v *PGM: ����� ������.
v *SQLPKG: ����� SQL �����.
v *SRVPGM: ����� ��� ������.
�:
PRTSQLINF PAYROLL
� �� ���� PAYROLL �� �� SQL� �� ��� � �.
OBJTYPE� �� ����� OBJ ���� *JOB� ��� ���� ��
��� � �����.
RUNSQLSTM(��� �� ��� ��) ��
Job: B,I Pgm: B,I REXX: B,I Exec
�� RUNSQLSTM*LIBL/
SRCFILE( source-file-name )*CURLIB/library-name/
�
�(1)
SRCMBR( source-file-member-name )*UR*CHG
COMMIT( *ALL )*RS*CS*NONE*NC*RR
�
�*SYS
NAMING( *SQL )*RUN
PROCESS( *SYN )
�
�*OPTIMIZE
ALWCPYDTA( *YES )*NO
*ALLREADALWBLK( *NONE )
*READ
�
PRTSQLINF
424 iSeries� DB2 UDB SQL ����� �� V5R2
�10
ERRLVL( severity-level )*JOB
DATFMT( *USA )*ISO*EUR*JIS*MDY*DMY*YMD*JUL
�
�*JOB
DATSEP( '/' )'.'',''-'' '*BLANK
*HMSTIMFMT( *USA )
*ISO*EUR*JIS
�
�*JOB
TIMSEP( ':' )'.'','' '*BLANK
*SYSVAL*JOB
DECMPT( *PERIOD )*COMMA
�
�*JOB
SRTSEQ( *LANGIDUNQ )*LANGIDSHR*HEX
*LIBL/table-name
*CURLIB/library-name/
�
�*JOB
LANGID( language-identifier )
�
�*NONE
DFTRDBCOL( collection-name )*NONE
FLAGSTD( *ANS )
�
�*NOFLAG
SAAFLAG( *FLAG )
�
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 425
�*LIBL/ QSYSPRT
PRTFILE( printer-file-name )*CURLIB/library-name/
��
SQL � ��:
*CURRENTTGTRLS( VxRxMx )
*ENDACTGRPCLOSQLCSR( *ENDMOD )
�
�*NONE
OUTPUT( *PRINT )*NONE
DBGVIEW( *STMT )*LIST*SOURCE
�
�*NAMING
USRPRF( *OWNER )*USER
*USERDYNUSRPRF( *OWNER )
�
�*NO
DLYPRP( *YES )
�:
1 � � �� �� ���� �� �� �� ��� ���.
�:
RUNSQLSTM(��� �� ��� �) �� SQL� �� �� � ��
�.
��:
SRCFILE
��� SQL�� �� �� �� ���� ���.
�� ��� ��� ����� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �����.
source-file-name: ��� SQL�� �� �� �� �� �� �����.
�� �� ������ � �� ��� �� �� � ���.
RUNSQLSTM
426 iSeries� DB2 UDB SQL ����� �� V5R2
|
SRCMBR
��� SQL�� �� �� � ��� ���.
COMMIT
�� �� SQL�� �� �� ����� �� ���.
*CHG �� *UR: SQL ALTER, COMMENT ON, CREATE, DROP, GRANT,
LABEL ON � REVOKE�� ��� ����� ���, ��, �� � �
�� ��� � ��(�� �)� � � �! ���. � �� ����
�� �� �� � ���.
*ALL �� *RS: SQL ALTER, CALL, COMMENT ON, CREATE, DROP,
GRANT, LABEL ON, RENAME � REVOKE�� ���� ����� �
��, ��, ��, �� � ��� �� � ��(�� �)� � � ���.
� �� ���� �� �� �� � ���.
*CS: SQL ALTER, CALL, COMMENT ON, CREATE, DROP, GRANT,
LABEL ON, RENAME � REVOKE�� ���� ����� ��, �� �
��� �� � ��(�� �)� � � ���. ��� ���� ���� �
� �� �� �� ��� � � ���. � �� ���� �� �� ��
� ���.
*NONE �� *NC: �� ��� ���� �� ���. � �� ��
�� �� �� �� � ���. SQL DROP COLLECTION�� ���
� ���� ��� *NONE �� *NC� ��� ����� �. RDB
��� ��� ������� ���� �� ��� ������� AS/400
� �� ��� ���, *NONE �� *NC� ��� ���.
*RR: SQL ALTER, CALL, COMMENT ON, CREATE, DROP, GRANT,
LABEL ON, RENAME � REVOKE�� ���� ����� ���, �
�, ��, �� � ���� �� � ��(�� �)� � � ���. �
�� ���� �� �� �� � ���. SELECT, UPDATE, DELETE
� INSERT� ��� �� �� � ��(�� �)� � � ���� �!
���.
NAMING
SQL�� ����� ���� ���� �� �� ���.
*SYS: ��� �� ��(library-name/file-name)� ����.
*SQL: SQL �� ��(collection-name.table-name)� ����.
PROCESS
�� � ��� SQL� �� � �� �� � �� ���.
*RUN: ��� �� � � ����.
*SYN: ��� �� �� �����.
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 427
ALWCPYDTA
SELECT� ��� ��� ��� ���� ���.
*OPTIMIZE: ���� ������� � �� ��� ���� �� �
�� �� ����� ���. �� ��� �� ��� �� ��
�� �����. COMMIT� *CHG �� *CS��� ALWBLK�
*ALLREAD� ���, COMMIT� *ALL �� *RR��, �� �� ��
� ��� ��� ��� ����.
*YES: ��� �� ��� ��� ����.
*NO: ��� ��� ���� ���. ��� ��� ��� �� ���
��� �� ���� ����.
ALWBLK
������ ���� ��� �� ��� ��� �� �� �� �
� �� ���� ��� ���.
*ALLREAD: COMMIT ��� �� *NONE �� *CHG� ��� �� �
� �� �� �� �� ���. ����� ��� �� ���� �
� �� ���� EXECUTE �� EXECUTE IMMEDIATE�� ���� �
�� �� ���� ���.
*ALLREAD ��:
v *READ �� ��� � ��� �� �� �� *CHG� ����
�� ���.
v ����� �� �� �� �� ��� ��� ��� ��� ��� �
� ���� ��� ���.
– ��(ROLLBACK) �, ��� ��� ROLLBACK� �� ROLLBACK
HOLD SQL�� *ALLREAD� ��� �� �� �� ��� ��� �
��� ���.
– �� �� DECLARE� FOR UPDATE�� �� �, ��� UPDATE
�� DELETE�� �� ��(�� ��, EXECUTE IMMEDIATE ��)
� ��� � ���� ��� ���.
*NONE: �� �� ��� � �� �� ��� ���.
*NONE ��� ��:
v �� ��� ��� ��� ���.
v ��� ��� � �� � ��� ��� �� � ���.
v ��� �� � ��� �� � ��� �� �, ���� �� ���
� �� �� � � ����� ������ ���� �����.
v �� � �� ��� ���� ��� �� ���.
RUNSQLSTM
428 iSeries� DB2 UDB SQL ����� �� V5R2
*READ: ��� �� �� �� �� ��� �� ���� �� �� �
��� ���.
v *NONE� COMMIT ��� ���� �� ��� ���� �� ��
� ��
v FOR FETCH ONLY�� ��� ������ �� �� ��� UPDATE
�� DELETE� ��� �� �� ��� �� ��
*READ� ��� �� �� ��� ��� ���� ��� ���� ��
� ���� �� ���.
ERRLVL
SQL� �� �� ��� ���� � �� ��� ��� ����
� ���. ��� � ��� ��� �� � ��� ���, ���
�� ��� ��� ��� �� ��� ����� ��� ���
� ���.
10: �� ��� 10�� � � ��� �� ���� �� � ����.
severity-level: ��� � �� �����.
DATFMT
�� � � ��� � ��� �� ���. �� �� ���� ��
��� � ��� ��� ���� ������ ��� ����.
�: �� *USA, *ISO, *EUR �� *JIS� ��� �� �� ���� �� �
��.
*JOB: � ��� ��� ����. � ��(DSPJOB) � ��
� �� �� �� �� �����.
*USA: ��� �� ��(mm/dd/yyyy)� ����.
*ISO: �� ��� ��(ISO) �� ��(yyyy-mm-dd)� ����.
*EUR: �"� �� ��(dd.mm.yyyy)� ����.
*JIS: � �� �� �� ��(yyyy-mm-dd)� ����.
*MDY: �� ��(mm/dd/yy)� ����.
*DMY: �� ��(dd/mm/yy)� ����.
*YMD: �� ��(yy/mm/dd)� ����.
*JUL: ��� �� ��(yy/ddd)� ����.
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 429
DATSEP
�� � � ��� �� ���� ��� ���.
�: � ���� *JOB, *MDY, *DMY, *YMD �� *JUL� DATFMT �
�� ���� � �� ����.
*JOB: � ��� �� ��� ����. � �� �� �
�� DSPJOB(� ��) � �����.
‘/’: ���(/)� ����.
‘.’: ��(.)� ����.
‘,’: �(,)� ����.
‘-’: ��(-)� ����.
‘ ’: ��( )� ����.
*BLANK: ��( )� ����.
TIMFMT
�� � � ��� �� ���� �� ���. �� �� ����
��, ��� � ��� ��� ���� ������ ��� � ����.
�: �� *USA, *ISO, *EUR �� *JIS� ��� �� �� ���� �� �
��.
*HMS: hh:mm:ss ��� ����.
*USA: ��� �� �� hh:mm xx� ����. ��, xx� AM �� PM
��.
*ISO: �� ��� ��(ISO) �� �� hh.mm.ss� ����.
*EUR: �"� �� �� hh.mm.ss� ����.
*JIS: � �� �� �� �� hh:mm:ss� ����.
TIMSEP
�� � � ��� �� ���� ��� ���.
�: � ���� *HMS� TIMFMT ��� ���� � �� ���
�.
*JOB: � ��� �� � ��� ����. � �� �� �
�� DSPJOB(� ��) � �����.
RUNSQLSTM
430 iSeries� DB2 UDB SQL ����� �� V5R2
‘:’: � (:)� ����.
‘.’: ��(.)� ����.
‘,’: �(,)� ����.
‘ ’: ��( )� ����.
*BLANK: ��( )� ����.
DECMPT
SQL�� �� � �� ���� �� ���.
*JOB: SQL� �� �� � �� ���� ���� � �� �
��� � �� ��� �� ����.
*SYSVAL: QDECFMT ��� � 10� ���� ����.
*PERIOD: ��� ���� ����.
*COMMA: �� ���� ����.
SRTSEQ
SQL�� ��� �� ��� �� ���� ���.
*JOB: � �� LANGID � ���.
*LANGIDSHR: �� ���� � �� �� �� ���� ���,
LANGID ��� ��� ��� ��� �� ��� �� �����.
*LANGIDUNQ: LANGID ��� ��� �� �� �� ��� ���
� ����.
*HEX: �� ���� ���� ���. ��� 16� � �� ��� �
� � ����.
�� ��� �� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �����.
table-name: ��� SQL ��� �� ��� �� ���� �� �����.
LANGID
SRTSEQ(*LANGIDUNQ) �� SRTSEQ(*LANGIDSHR) ��� ��� �� ID
� ���.
*JOB: � �� LANGID � ����� ���.
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 431
language-identifier: �� ID� �����.
DFTRDBCOL
�, ��, �� � SQL ���� ���� �� �� ���� ���� ��
�.
*NONE: OPTION ��� ��� �� ��� ����.
collection-name: ��� ID� �� �����. � � OPTION ���
��� �� �� �� ����.
FLAGSTD
�� �� ��(ANSI) ��� �� ���. � ���� SQL�� ���
�� �� ��� ��� ��� �� SQL� ����.
ANSI X3.135-1992 �ISO 9075-1992 �FIPS 127.2 �
*NONE: SQL�� ANSI �� ���� ���� �� SQL� �� �
��.
*ANS: SQL�� ANSI �� ���� ���� �� SQL� ��.
SAAFLAG
IBM SQL �� �� ���. � ���� SQL�� IBM SQL ��
���� ��� �� SQL� ���� ���. IBM ������ �� IBM
SQL �� �� ��� ��� DRDA IBM SQL ���, SC26-3255-00 �
����.
*NOFLAG: SQL�� IBM SQL �� ���� ���� �� SQL�
�� ���.
*FLAG: SQL�� IBM SQL �� ���� ���� �� SQL� �
�.
PRTFILE
RUNSQLSTM � ��� ��� �� �� ���� ���. ��
�� �� 132���� �. 132����� �� ��� �� �� �
��� ��, ��� ����.
�� ��� ��� ����� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �����.
RUNSQLSTM
432 iSeries� DB2 UDB SQL ����� �� V5R2
QSYSPRT: ��� ���� ���, RUNSQLSTM � ��� IBM �� �
� � QSYSPRT� ����.
printer-file-name: RUNSQLSTM � ��� ���� �� �� �� �
����.
SQL �� �� ��:
�� ��� ���� SQL �����, SQL �� � SQL ���� �� �
� � �� ��� ����. ���� SQL �����, SQL �� � SQL
���� ��� ���� ����� �� �� ����.
TGTRLS
�� ����� ���� � ���� ���� ��� �� ��
�.
*CURRENT � ��� �� ��� �� ��� �� VxRxMx� ��
�� ���� ��� ��, �� Vx� ��, Rx� ���, Mx� � �
� ����. �� ��, V2R3M0� �� 2, ��� 3, � �� 0 ��
��.
*CURRENT: ����� ��� ���� �� ���� ���� ����
��� ����. �� ��, ���� V2R3M5� ���� ���,
*CURRENT� V2R3M5� ��� ���� ����� ��� �� ��
�. �� ���� ���� �� ���� ���� �� � ����
����� ��� ���.
�: ���� V2R3M5� ���� ���, V2R3M0� ��� ���� ��
��� ��� ��� TGTRLS(*CURRENT)� �� TGTRLS(V2R3M0)
� ���� �.
release-level: VxRxMx ��� ���� �����. ��� ���� ����
� ���� �� ���� ���� �� � ���� ���� ����
� ��� ���.
��� �� �� ��, ���, � �� ��� ���, ��� ����
��� ���. � �� ��� �� ��� ��� ���� �� �
�� �� ���, ���� ��� �� ��� �� ��� ���� ���
�� ���� �� ��.
CLOSQLCSR
SQL ��� ����� �� � SQL �� ��� ����� ���� LOCK
TABLE ��� ��� ���. SQL ��� CLOSE, COMMIT ��
ROLLBACK(HOLD ��) SQL� ��� � ����� � �.
*ENDACTGRP: SQL ��� �� SQL �� ��� �� ����.
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 433
ENDMOD: SQL ��� �� SQL �� ��� ����� ��� ��
� ����. �� ��� � �� SQL ����� �� � LOCK TABLE
��� ����.
OUTPUT
����� ���� ������� ���.
*NONE: ����� ���� ���� ���
*PRINT: ����� ���� ����.
DBGVIEW
���� �� �� �� ��� ��� � � ���.
*NONE: �� ��� ���� ���.
*STMT: ��� ��� ���� �� ��� �� ID� �� ����
�.
*LIST: ��� �� ����� ���� �� ��� ��� ���.
*SOURCE: SQL �����, �� � ��� �� �� ��� ����.
USRPRF
�� SQL�� � ���� �� ���� ����� ��� � ��
��� ���� ����� ��� � ���� ��� ��� ��
�. ���� ��� �� ���� ���� ���� ���� ����� �
�� �� ����� ��� � ����.
*NAMING: ��� ���� �� �� �� ����. �� ��� *SQL
��, USRPRF(*OWNER)� ����. �� ��� *SYS��,
USRPRF(*USER)� ����.
*USER: ���� ����� ���� ���� ���� ����.
*OWNER: ���� ���� ���� ��� ��� ��� ���� ��
�� ��� ����.
DYNUSRPRF
�� SQL� �� ��� ��� ��� ���.
*USER: ��� ��, �� SQL�� ���� ���� ���� ���
�. � �� SQL�� SQL ���� ��� ���� ����.
*OWNER: ��� ��, �� SQL�� ���� ���� ���� ��
��. � �� SQL�� SQL ��� ���� ��� ���� ���
�.
DLYPRP
PREPARE� �� �� �� ��� �� OPEN, EXECUTE ��
RUNSQLSTM
434 iSeries� DB2 UDB SQL ����� �� V5R2
|
DESCRIBE� ��� � ����� �� ���. ��� �� ����
���� ��� ����� ��� ����.
*NO: �� �� ��� �� ���� ���. �� ��� ��� �
�� �� ���� ����. �� ��� OPEN �� EXECUTE� �
�� � �� �� ���� �����. �� �� �� ���� ��
��� � �� ��� ��, �� ��� �� ���� ��� �� OPEN
�� EXECUTE� ��� � SQLCODE �� SQLSTATE� ����
�.
*YES: �� �� ��� �� �� ��� OPEN, EXECUTE ��
DESCRIBE SQL� ��� � � ����. �� ��� ��� � ��
� �� ���� �� �� ���. � ��� *YES� ���
OPEN, EXECUTE �� DESCRIBE� �� � SQLCODE� SQLSTATE
� � �� ��� ���� ���� �.
�: *YES� ��� PREPARE INTO�� �����, �� �� ��
OPEN�� ���� � DESCRIBE�� � �� �� ��� �
� ��� ���� ���.
�:
RUNSQLSTM SRCFILE(MYLIB/MYFILE) SRCMBR(MYMBR)
� �� ����� MYLIB� � MYFILE� ��� �� MYMBR� SQL�
���.
STRSQL(��� �� �� ��) ��
Job: I Pgm: I REXX: I Exec�� STRSQL
*NC*NONE
COMMIT( *CHG )*UR*CS*RS*ALL*RR
*SYSNAMING( *SQL )
�
RUNSQLSTM
� B. iSeries� DB2 UDB CL � �� 435
�*RUN
PROCESS( *VLD )*SYN
*LIBLLIBOPT( *CURLIB )
*USRLIBL*ALL*ALLUSRlibrary-name
�
�*ALL
LISTTYPE( *SQL )
(1)
*ALWAYSREFRESH( *FORWARD )
�
�*YES
ALWCPYDTA( *OPTIMIZE )*NO
*JOBDATFMT( *USA )
*ISO*EUR*JIS*MDY*DMY*YMD*JUL
�
�(2) *JOB
DATSEP( *BLANK )’/’’.’’,’’-’’ ’
*HMSTIMFMT( *USA )
*ISO*EUR*JIS
�
�(3) *JOB
TIMSEP( *BLANK )’:’’.’’,’’ ’
*SYSVALDECPNT( *PERIOD )
*COMMA*JOB
�
�(4) *NONE
PGMLNG( *C )*CBL*PLI*RPG*FTN
(5) (6) *QUOTESQLSQLSTRDLM( *APOSTSQL )
�
STRSQL
436 iSeries� DB2 UDB SQL ����� �� V5R2
�*JOB
SRTSEQ( *JOBRUN )*LANGIDUNQ*LANGIDSHR*HEX
*LIBL/table-name
*CURLIB/library-name/
�
�*JOB
LANGID( *JOBRUN )language-ID
��
�:
1 � � �� �� ���� �� �� �� ��� ���.
2 DATSEP� *MDY, *DMY, *YMD �� *JUL� DATFMT ��� ��
� �� ���.
3 TIMSEP� TIMFMT(*HMS)� ��� �� ���.
4 PGMLNG� SQLSTRDLM� PROCESS(*SYN)� ��� �� ���.
5 PGMLNG� SQLSTRDLM� PROCESS(*SYN)� ��� �� ���.
6 SQLSTRDLM� PGMLNG(*CBL)� ��� �� ���.
�:
STRSQL(��� �� �� �) �� ��� ��� �� ��(SQL) ����
��. ����� SQL �� �� �� ��� ��� SQL ����� �
� �� ��. � ���� ��� ���� SQL� ��, ��, ��,
��� �� ���. ���� ��� �� ���� � �� ����.
��:
COMMIT
SQL�� �� ��� ����� �� ���.
*NONE �� *NC: �� ��� ���� �� ���. � �� ��
�� �� �� �� � ���. SQL DROP COLLECTION�� ���
� ���� ��� *NONE �� *NC� ��� ����� �. RDB
��� ��� ������� ���� �� ��� ������� iSeries�
�� ��� ���, *NONE �� *NC� ��� ���
*CHG or *UR: SQL ALTER, CALL, COMMENT ON, CREATE, DROP,
GRANT, LABEL ON, RENAME � REVOKE�� ���� ����� �
STRSQL
� B. iSeries� DB2 UDB CL � �� 437
�, �� � ��� �� � ��(�� �)� � � ���. � �� �
��� �� �� �� � ���.
*CS: SQL ALTER, CALL, COMMENT ON, CREATE, DROP, GRANT,
LABEL ON, RENAME � REVOKE�� ���� ����� ��, �� �
��� �� � ��(�� �)� � � ���. ��� ���� ���� �
� �� �� �� ��� � � ���. � �� ���� �� �� ��
� ���.
*ALL �� *RS: SQL ALTER, CALL, COMMENT ON, CREATE, DROP,
GRANT, LABEL ON, RENAME � REVOKE�� ���� ����� �
��, ��, ��, �� � ��� �� � ��(�� �)� � � ���.
� �� ���� �� �� �� � ���.
*RR: SQL ALTER, CALL, COMMENT ON, CREATE, DROP, GRANT,
LABEL ON, RENAME � REVOKE�� ���� ����� ���, �
�, ��, �� � ���� �� � ��(�� �)� � � ���. �
�� ���� �� �� �� � ���. SELECT, UPDATE, DELETE
� INSERT� ��� �� �� � ��(�� �)� � � ���� �!
���.
�: CRTSQLXXX �(XXX=CI, CPPI, CBL, FTN, PLI, CBLI, RPG ��
RPGI)� �� � ��� �� ���� *CHG��.
NAMING
SQL�� ����� ���� ���� �� �� ���.
*SYS: ��� �� ��(library-name/file-name)� ����.
*SQL: SQL �� ��(collection-name.table-name)� ����.
PROCESS
SQL�� �� ���� ���.
*RUN: ��� �� �, �� � � ����.
*VLD: ��� �� �, �� � � ���� ���.
*SYN: �� �� �� �����.
LIBOPT
F4, F16, F17 �� F18 �� �� �# � ��� ��� �� ���� ��
�� ���� ������ ���.
��� ���� ��� �� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
STRSQL
438 iSeries� DB2 UDB SQL ����� �� V5R2
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
*USRLIBL: � ����� ���� ��� � �� ������� �
���.
*ALL: QSYS� ��� ���� �� ������ ����.
*ALLUSR: �� ��� ������ ����. �� ��� �� Q�
��� �� ��� �� ������ ����.
#CGULIB #DFULIB #RPGLIB #SEULIB#COBLIB #DSULIB #SDALIB
IBM� ��� Qxxx ������ �� � �� ���� ��
���� ��� ��� �� ��. ���, ��� ������� ��� �
����� ���� ����.
QDSNX QRCL QUSRBRM QUSRSYSQGPL QS36F QUSRIJS QUSRVxRxMxQGPL38 QUSER38 QUSRINFSKRQPFRDATA QUSRADSM QUSRRDARS
�: QUSRVxRxMx ��� ���� �� � ������� IBM� �
�� � ������ ��� �� �� ���. VxRxMx� �
����� ��, ��� � �� ����.
library-name: ��� ������ �����.
LISTTYPE
F4, F16, F17 �� F18 �� �� � � ��� �� �� ���� ���
� �� ���.
*ALL: �� ����� ����.
*SQL: SQL � ������ ����.
REFRESH
�� �� �� ��� ������ ��� ���.
*ALWAYS: ��� ��� �� ��� � ����� ����.
*FORWARD: � �� ��� � �� ��� �� ��� �� ��� �
���. �� �� ��� �� �� �� � ��� ��� ����.
ALWCPYDTA
SELECT� ��� ��� ��� ���� ���. COMMIT(*ALL)�
���� SQL ��� ALWCPYDTA � ��� ��� ��� ����.
*YES: ��� �� ��� ��� ����.
STRSQL
� B. iSeries� DB2 UDB CL � �� 439
*OPTIMIZE: ���� ������� �� ��� ���� �� ���
�� ����� ��. � �� ��� �� ��� �� ��
�����.
*NO: ��� ��� ���� ���. ��� ��� ��� �� ���
��� �� ���� ����.
DATFMT
SQL� ���� �� �� ���.
*JOB: � � DATFMT ��� ��� ����.
*USA: ��� �� ��(mm/dd/yyyy)� ����.
*ISO: ISO �� ��(yyyy-mm-dd)� ����.
*EUR: �"� �� ��(dd.mm.yyyy)� ����.
*JIS: � �� �� �� ��(yyyy-mm-dd)� ����.
*MDY: �, , � �� ��(mm/dd/yy)� ����.
*DMY: , �, � �� ��(dd/mm/yy)� ����.
*YMD: �, �, �� ��(yy/mm/dd)� ����.
*JUL: ��� �� ��(yy/ddd)� ����.
DATSEP
SQL� ��� �� � ��� ���.
*JOB: � � ��� �� � ��� ����. ��� ��� SQL �
� *JOB ��� �� � ���� ����. �� �� � ��
�� ��� ��� ��� SQL �� ��� ���.
*BLANK: ��( )� ����.
‘/’: ���(/)� ����.
‘.’: ��(.)� ����.
‘,’: �(,)� ����.
‘-’: ��(-)� ����.
‘ ’: ��( )� ����.
TIMFMT
SQL� ��� �� �� ���.
*HMS: � � �� ��(hh:mm:ss)� ����.
*USA: ��� �� ��(hh:mm xx, xx� AM �� PM)� ����.
*ISO: ISO �� ��(hh.mm.ss)� ����.
*EUR: �"� �� ��(hh.mm.ss)� ����.
STRSQL
440 iSeries� DB2 UDB SQL ����� �� V5R2
*JIS: � �� �� �� �� ��(hh:mm:ss)� ����.
TIMSEP
SQL� ��� �� � ��� ���.
*JOB: � � ��� �� � ��� ����. ��� ��� SQL �
� *JOB ��� �� � ���� ����. �� �� � ��
�� ��� ��� ��� SQL �� ��� ���.
*BLANK: ��( )� ����.
‘:’: � (:)� ����.
‘.’: ��(.)� ����.
‘,’: �(,)� ����.
‘ ’: ��( )� ����.
DECPNT
��� ��� �� ���.
*JOB: SQL� �� �� � �� ���� ���� � �� �
��� � �� ��� �� ����.
*SYSVAL: ��� ��� ���� ����. ��� ��� SQL ��
*SYSVAL ��� �� � ���� ����. ���� �� � ��
�� ��� ��� ��� SQL �� ��� ���.
*PERIOD: ��� ���� ����.
*COMMA: �� ���� ����.
PGMLNG
��� ���� �� �� �� ���. � ���� ���� PROCESS
��� *SYN� ����� �.
*NONE: �� ��� �� �� ���� ���.
�� ��� ��� ���.
*C: C �� �� �� �� �� �� ���.
*CBL: COBOL �� �� �� �� �� �� ���.
*PLI: PL/I �� �� �� �� �� �� ���.
*RPG: RPG �� �� �� �� �� �� ���.
*FTN: FORTRAN �� �� �� �� �� �� ���.
SQLSTRDLM
SQL ��� ���� ���. � ���� ���� COBOL(*CBL) �
� �� ���� �.
STRSQL
� B. iSeries� DB2 UDB CL � �� 441
*QUOTESQL: �#�� SQL ��� ���� ����.
*APOSTSQL: ������� SQL ��� ���� ����.
SRTSEQ
�� SQL� ���� SQL ��� ��� ��� �� ��� �� ���� �
��.
*JOB: � �� SRTSEQ � ���.
*JOBRUN: � �� SRTSEQ � ���� ��� SQL �� ���
���.
*LANGIDUNQ: LANGID ��� ��� �� �� �� ��� ���
� ����.
*LANGIDSHR: LANGID ��� ��� �� �� �� ��� ����
����.
*HEX: �� ���� ���� ���. ��� 16� � �� ��� �
� � ����.
�� ��� �� � �� ��� ���.
*LIBL: ��� � �� ��� ��� � � �� ����� ���
�� �� ������ ����.
*CURLIB: � �� �� ������ ����. � �� �� �
����� ��� ������ ��� QGPL ������ ����.
library-name: ��� ������ �����.
table-name: ��� SQL ��� �� ��� �� ���� �� �����.
LANGID
SRTSEQ(*LANGIDUNQ) �� SRTSEQ(*LANGIDSHR) ��� ��� �� ID
� ���.
*JOB: � �� LANGID � ���.
*JOBRUN: ��� SQL� �� ��� � �� LANGID � ��
�.
language-ID: ��� �� ID� �����.
�:
STRSQL PROCESS(*SYN) NAMING(*SQL)DECPNT(*COMMA) PGMLNG(*CBL)SQLSTRDLM(*APOSTSQL)
STRSQL
442 iSeries� DB2 UDB SQL ����� �� V5R2
� �� SQL�� ��� �� ��� SQL �� ��. �� � �
��� �� ��� �� ��� COBOL �� �� ��� ����. � ��
�� SQL �� ��� ����. ��� �� ���� SQL ��� ��
��� ������� ����.
STRSQL
� B. iSeries� DB2 UDB CL � �� 443
� ��
�� ��� ��� ����� ��� �� �
� �� �� ��� �� �� �� ��� ��
���. �� ��� ���� �� ��� �
� ���� ��� ��� �� � ���
�.
v �� � ��
� ���� �� � �� � �� ��� �
���� �� ���. ���� �� � ��
�� � �� ��, �� � �� �����
��� �� � �� ��� �� � �
�� �� ��� �� ���. �� ���� �
�� �� ��� ��� ����.
v � ��
� �� ������ ����� � ��
� �� �� ��� �� ���.
v iSeries� DB2 UDB ������ �����
� �� ���� ������ � �, �
� � ��� �� �� ��� ��
iSeries� DB2 UDB ������ ��� ���
�� ���.
v CL �����
� ���� ���� � ����� �� �
�� ��, CL �����, ����� �� ��
� ��, CL ����� ���� �� �
� CL ���� � ��� iSeries� DB2
UDB ����� ��� ���� ���.
� � ��� ��, ���, �� � �� �
� �� �� �� � �� ���, ���
�� �� �� ��, ��, �� �����
� �� �� �� �� ���.
v Control Language (CL)
� ���� iSeries� DB2 UDB �� ��(CL)
� OS/400 �� �� ���(�OS/400 �
� � �� ���� �� �� ����).
��, �� �� �� CL �� ��� ��
� CL � ���� � ��� �� ��
���.
v iSeries �� ���
� �� ��� �� ��, �� � � ��
�� �� �� �� ��� �� ���. �
� �� �� �� ���� ��� �
���� �� ��� ��� ����� ��
���� ���� ����� ��� ���
�� ��� � �� ��� ��� ��
� �� �� �� ����.
v iSeries� DB2 UDB SQL ���
� �� iSeries� DB2 UDB ��� ���
�� ��� ���. SQL �� ��
(SQLCA)� �� ��(SQLDA) ��� �
�� ���.
v IDDU ��
� �� iSeries� DB2 UDB ��� �� ��
����(IDDU)� �� ��� �� ��
��, � � ���� ��� �� �� �
��.
v WebSphere Development Studio: ILE COBOL
����� ���
� ���� iSeries ���� iSeries� COBOL
���� ��, � , �� � ���� �
��� ��� ���.
v WebSphere Development Studio: ILE RPG �
���� ���
� ���� iSeries ���� iSeries� ILE
RPG ���� ��, � , �� � ���
� � ��� ��� ���.
© Copyright IBM Corp. 1998, 2002 445
v ILE C for AS/400 Language Reference
� ���� iSeries ���� iSeries� ILE C
���� ��, � , �� � ���� �
��� ��� ���.
v WebSphere Development Studio: ILE C/C++ �
���� ���
� ���� iSeries ���� iSeries� ILE C
���� ��, � , �� � ���� �
��� ��� ���.
v WebSphere Development Studio: ILE COBOL
���
� ���� iSeriesCOBOL ���� iSeries�
COBOL ���� ��, � , �� � ��
�� � ��� ��� ���.
v REXX/400 Programmer’s Guide
� ���� iSeries ���� REXX/400 ��
�� ��, � , �� � ���� � �
�� ��� ���.
v DB2 Multisystem
� �� � ��� ������ �, �� �
� � ���� �� �� ���. � ��
� iSeries ��� � ����� �� ��
���� � �� ��� � ��� �
�� ���. ���� ���� ���� �
��, �� ��, ������� � �
�� �� � ���.
v iSeries� �� � �
� �� ������ ���, � �� ���
� �� �� ��� ��� ��� ���
���. � �� �� ���� �� ��
�� ��� ��� �� �� � �
��� �� � ���. ��� � ��
� �� �� �� ���� ���.
v iSeries� DB2 UDB SQL �� �� ����
(ODBC)
� �� DB2 �� �� ����� �� �
����� �� �� ������ ���
��� ��� � ��� ���.
v IBM Developer Kit for Java
� ���� iSeries ���� Java ����
��, � , �� � ���� � ��� �
�� ���. ��, iSeries Developer Kit for
Java JDBC ���� �� � ��� JDBC
�� SQLj� �� Java ����� ���
��� � ��� � �� ��� ��
�.
446 iSeries� DB2 UDB SQL ����� �� V5R2
��
����
C2 �� 344
��� ��� UDT 243
� ����� �� 88
��� ��
��� UDT(��� �� ��)
�� � 343
��� ��
iSeries Navigator �� 346
��
iSeries Navigator �� 345
��� ������ 3
� � �� 348
�� ��
QSQCHKS 3
��� �� �� 1
��
��� �� �� ��
iSeries Navigator �� 346
����� � ��
iSeries Navigator 346
�� 363, 364
��� �� �� 370
��� � �� 370
iSeries Navigator� ��� �� �
345
iSeries Navigator� ��� ��� ��
� 346
SQL ��� �(CRTSQLPKG) �
371
��
�� �� 234, 235
��, UDF �� �� 237
�� � 234
��� UDF(��� �� ��)
�� �� �� 234
����� �� 82, 83
��/�� �� 83
�� 89
�� ��
��� � ��
�� �
��� � ��
� � 8
�� 4
���� � ����� 3
�� ����(LOB)
�� ����� �� 212
�� ���� 210
�� ���� ��� 210
�� ���� �� �� ��, �� 211
�� ���� �� ��� �� �
� �� 211
������� ��� LOB �� � 251
�� �� � 220
�� ��� 210, 212
�� � 213
����� � 216
�� �� � 221
�� 209
� 209
� �� � 210
�� � 218
�� 216
�� 217
SQL_FILE_APPEND, �� ��
217
SQL_FILE_CREATE, �� ��
217
SQL_FILE_OVERWRITE, �� �
� 217
SQL_FILE_READ, �� ��
217
DB2 ���� �� 209
LOBEVAL.SQB COBOL ���� ��
� 219, 220
LOBEVAL.SQC C ���� ��� 218
LOBLOC.SQB COBOL ���� ���
214
�� ����(LOB) (�)
LOBLOC.SQC C ���� ��� 213
UDT ���� �� �� LOB ��
��� � 252
UDT� UDF� ���
��� ������ � 249
��� ����
�� 2
��� �� �� ����
��� IDDU
��� SQL 2
�� 323
�� �� 328
�� 323
� �� �� 334
�� 333
��� ������ �� 334
��� �� �� 329
�� �� 323, 326
�� �� �� 328
�� 323
� �� ��� 328
�� 323
�� ��� 324, 332
�� � �� 332
�� �� 333
�� �� 324
�� 4
��� 336
��� 326
�� 324
DBCS ���� 328
�� �� � 333
�� ��� �� �� �� 333
DBCS �� �� 328
SQL �� �� 334
SQL� �� 323
������
��� 3
��, ���� �� 66
������ � ��(OVRDBF) �
143, 348
�� �� ���� �(IASP) 362
© Copyright IBM Corp. 1998, 2002 447
���
� � �� 348
�� 347
�� 347
�� SQL
�� ��� SELECT� 288, 289
�� ��� SELECT� 288
���� �� 290
��� ���� 283
��� �� 301
��� ��� ��� �� �� 301
�� 4
�SELECT� �� 286
�� � � �� 283
������ 283, 286
�� � 283
��, �� 288
CCSID 286
DESCRIBE� 288
EXECUTE� �� 287
REPARE� �� 287
SELECT� �
��, �� 300
SQLDA(SQL ��� ��) 290
SQLDA(SQL ��� ��) �� 290
SQLDA ���� �� 296
SQLDA ���� ��� � 296
UDT �� 247
���
�� �� 64
��������
�� 4
iSeries Navigator� �� �� 51
iSeries Navigator� �� � 38
iSeries Navigator ���� ��� ��
39
��� ��
�� 1
���
�� 4
��
�� �� � 387
��� ������
��� SQL� �� 334
��� � �� 367, 381
��� � �� (�)
� � 385
� �� 382
�� ���� 369
������ ��
��� � 235
�� SQL 301
��� ��
�� ����� 191, 196
��
�� �� � 13
��
�� 82, 83
��/�� �� 83
�� 4
�SELECT� �� 286
�� 82, 83
���� 82, 83
�� ��(DDL) 4
�� �(DML) 4
��
��� SQL �� 323
������ ���� 363
��� 371
��� ��� 372
CALL 187
� 188
�� ������ �� �� 189
SQLDA� �� 188
COMMENT ON� 59
COMMIT 8, 350
CONNECT 368
CREATE ALIAS�
� 62
CREATE INDEX
�� �� 133
CREATE PROCEDURE
��� 185
�� �� 178
�� ����� 177
�� 186
SQL �� 179
SQL ����� 177
CREATE SCHEMA 18
SQL� ���� 339
�� (�)
CREATE SCHEMA�
� 53
CREATE TABLE 18
CREATE TABLE AS�
� 55
CREATE TABLE LIKE�
� 55
CREATE TABLE� 54
CREATE VIEW 33, 63
� 34
DECLARE CURSOR 80
DECLARE GLOBAL TEMPORARY
TABLE�
� 56
DELETE 105
� 33, 115
DISCONNECT 368
DROP PACKAGE 368
EXECUTE 287
FETCH
�� SQL 301
� � 143
��� �� �� 146
� �� �� �� 146
��� �� � �� 144
GRANT PACKAGE 368
INSERT 105
�� 105
INTO� 106
LABEL ON�
� 21, 58
LOCK TABLE 348
OPEN 301
PREPARE
�SELECT� 287
RELEASE 368
REVOKE PACKAGE 368
ROLLBACK 8, 350
SAVEPOINT 354, 356
SELECT 25
�� � �� 84
� �� �� � 84
� �� 70
� 69
AND ��� 87
BETWEEN 85
EXISTS 85
448 iSeries� DB2 UDB SQL ����� �� V5R2
�� (�)
SELECT (�)
IN 85
IS NULL 85
LIKE 85
LIKE, ���� 86
NOT ��� 87
OR ��� 87
WHERE, � �� �� 87
SELECT INTO
�� SQL 285
SET CONNECTION 368
SQL ��� 371
UPDATE 105
� 110
�� �� 30
�(CL)
� � ��(CHGLF) 348
������ � ��(OVRDBF) 143,
348
����� ��(DLTLIB) 358
�� ���� �(CRTDUPOBJ) 364
��� ��� �(CRTUSRPRF) 344
�� � ��(CHGPF) 348
�� �� ��� ��
(EDTRBDAP) 358
���� � ��(RVKOBJAUT) 343
���� ��(GRTOBJAUT) 343
� ��(CHGJOB) 348
�� �� �� �(STRJRNAP) 360
�� �� ���� ��
(EDTCPCST) 358
��� ��(CHGCLS) 348
�� �� �(STRCMTCTL) 350
CHGCLS(��� ��) 348
CHGJOB(� ��) 348
CRTDUPOBJ(�� ���� �) �
364
CRTUSRPRF(��� ��� �) 344
DDM � ��(RCLDDMCNV) 389
DLTSQLPKG(SQL ��� ��) 370,
421
Edit Recovery for Access
Paths(EDTRCYAP) 360
EDTCPCST(�� �� ���� �
�) 358
EDTRBDAP(�� �� ��� �
�) 358
�(CL) (�)
EDTRCYAP(Edit Recovery for Access
Paths) 360
GRTOBJAUT(���� ��) 343,
348
OVRDBF(������ � ��) 143,
348
RUNSQLSTM
�� 338
RUNSQLSTM(� SQL�) 337, 424
RUNSQLSTM(�� SQL�) 2
SQL � (STRSQL) 435
SQL �� � (PRTSQLINF) 423
SQL ��� �(CRTSQLPKG) 370,
417
SQL� ��(RUNSQLSTM) 2
�� ��
��� 4
SQL 4
*SQL 4
*SYS 4
��
� �� ��(ILE)
���� 14
��
��� SQL 328
�� �� ����
��� �� �� ����(CLOB)
�� �� ����(CLOB)
��� �� 210
����
�� 8
iSeries Navigator� �� � 313
��
�� 344
� �� � 35
�� 63
�� �� 33
�� �� 63
� 34, 63
CREATE VIEW� 33
�� �� 132
�� 4, 8
iSeries Navigator� �� �� 51
�� (�)
iSeries Navigator� �� � 47,
50
iSeries Navigator �� 47
WITH CASCADED CHECK 162
WITH CHECK 162
WITH LOCAL CHECK 163
�� 343
�� � 343
�� 364
�� ID 344
�� 344
�� � 347
��� 347
�� �� 350
iSeries Navigator �� 345
�� ���� � 349
�� 362
��� 362
�� �� 381
��� �
� 385
� �� 117
�� �� 119
�� �� ���� 121
�� 118, 122
�� ���� � 125
DELETE�� � 127
HAVING�� � 124
UPDATE�� � 126
WHERE�� � 123
���� �� �� 122
� �� 120
�
SELECT � 117
�� 117
�� �� 119
��� 328
ALL 120
ANY 120
EXISTS ��� 121
IN ��� 120
SOME 120
� ��� ������
�� ��
��� �� �� 380
���� �� �� 380
�� 449
� ��� ������ (�)
�� �� ��
��� �� �� 380
���� �� �� 380
��� SQL 334
�� �� � 387
��� ������ �� 334
��� � �� 367, 381
��� �� 393
�� �� 381
��� � 381
� � �� 367, 381, 389
� RUW �� ���� 369
��� � 381
��� �� 381
����� �� ��� 371
�� � 335
������ ���� 367
������ �� 367
� �� 375
� � 379
� � �� 385
� ��
�� 382
��� 382
�� 382
� ���� 385
� �
DDMCNV �� 388
DISCONNECT� 388
RELEASE� 388
��� SQL� 371
�� ����� ���� 394
� �� �� �� �(FFDC) 393
��� 370
�� �� 371
��� � 371
�� �� �� 382, 385
2-�� �� 381
iSeries� DB2 UDB �� 368
SQL ��� 370
SQL ��� � �� ���� 371
sync ��� ��� 381
� ��� ������ ��(DRDA) 1
� � �� 367, 381, 389
� ���� 389
� ���� 387
� �� 389
� � �� (�)
� � 385
� �� 382
��� �� 392
�� 392
��� � �� �� 3
�� ��� 74
��� �� 381
������ �� ���� � 362
��� �� � ��
�� 13
��� �� �� 308
��� �� ��(UDF)
�� 225
��� ��� 225
�� �� 227
���� �� �� 225
�� �� 225
�� �� ���� 225
�� �� 226
�� �� 234
�� �� �� 237
�� �� � 261
227
��� �� 259
��� � DB2GENERAL 270
��� � DB2SQL 265
��� � GENERAL 267
��� � GENERAL WITH
NULLS 268
��� � JAVA 270
��� � SIMPLE CALL 267
��� � SQL 263
� �� 260
���� UDF � 259
�� 262
SQL 261
��� ��� 238
��, � �� �� ��� �� � 225
�� 222
�� 245
��� ���� 260
��� � 226
�� �� 271
���� 225
��� �� ��(UDF) (�)
�� � 259
� � 226
���� �� 222
� ���� 238
��� 222
�� � �� ���� 229
�� 10, 221
�� � 226
��� 239
��� 227
�� � � �� 272
� �� 226
���� 270
�� �� 271
� �� � 233
� �� �� 235
��
���� �� �� �� 236
��� �� �� 236
��� ��� �� 235
�� � 233
call-type �� 266
CAST FROM� 263, 268, 269
DB2 ���� �� 209
DBINFO� �� � �� 267
diagnostic-message �� 265
function-name �� 264
iSeries Navigator
�� 320
LOB �� 238
RETURNS TABLE� 263, 268, 269
schema-name� UDF 225
scratchpad �� 266
specific-name �� 264
SQL-argument �� 263, 268
SQL-argument-ind �� 263
SQL-argument-ind-array �� 268
SQL-result �� 263, 268, 269
SQL-result-ind �� 264, 269
SQL-state �� 264
UDF �� 222
UDF 228
� 228
UDF� ��� �� 221
UDF� UDT� �� ���� �� �
251
450 iSeries� DB2 UDB SQL ����� �� V5R2
��� �� ��(UDF) (�)
UDT� LOB� ���
��� ������ � 249
UDT� UDF �� � 249
UDT� ��� �� �� �� 246
��� �� ��(UDT)
��� �� 243
���� �� UDT �� 241
� UDT� ��� �� � 247
�� SQL� �� � 247
�� 10
�
� 243
� �� 242
CREATE DISTINCT TYPE �� �
241
DB2 ���� �� 209
iSeries Navigator
�� 321
UDF� UDT� �� ���� �� �
251
UDF� LOB� ���
��� ������ � 249
UDT ��� ��� 244
UDT ���� �� �� LOB ��
��� � 252
UDT �� 241
UDT� ��� �� 240
UDT� �� � �� 242, 243
UDT� ��� �� � 244, 245
UDT� ��� �� � 246
UDT� UDF �� � 249
UDT� ��� �� �� �� 246
UNION� UDT �� � 248
��� ���
�� ID 4
��� 4
�����
�� 1
�� ��� 371
����� ���
DBGVIEW(*SOURCE) 365
����� �
CRTSQLxxx 130, 371
��� ���� UDF 238
��
� �� 122
�� ���� � 125
�� (�)
� �� (�)
�� 122
�� 122
DELETE�� � 127
HAVING�� � 124
UPDATE�� � 126
WHERE�� � 123
� �� �� 118
� 28
�� 118
�� 92
��
��� 360
��� 360
�� � �� 361
�� 9
�� 65
�� 360
iSeries Navigator
�� 319
iSeries Navigator �� �� 314
� � iSeries� DB2 UDB 395
ACT 409
CL_SCHED 410
DEPARTMENT 396
EMPLOYEE 397
EMPPROJACT 401
EMP_PHOTO 399
EMP_RESUME 400
IN_TRAY 410
ORG 412
PROJACT 406
PROJECT 404
SALES 414
STAFF 413
� ����
� RUW ���� 369
��� ����
� �� ��(ILE)
���� 15
��
� UDT 240
�� 365
UDF 222
�� ���
� �� �� 334
��� SQL 332
�� ��� (�)
��� SQL �� 333
��� SQL� �� � �� 332
��� SQL� �� �� � 333
��� ������ �� 334
�� �� 333
�� ��� �� �� �� 333
SQL �� �� 334
�� �
��, ��� 13
�� ��
�� 13
�� UDF
��� UDF(��� �� ��)
�� �� � 360
��
SQL 374
��� �
��� UDF(��� �� ��)
���
�� ���� � 349
� 18
�� 4, 7
iSeries Navigator� �� �� 51
iSeries Navigator� �� � 38
SQL� ���� 339
SQL �� � 18
�� �� 82, 83
���� �� 82, 83
��� �� �� 4
�� �
�� � �� 109
� 56
�� 57
�� � 8
�� 4
������ �
�� � 356
�� ���(DDL) 356
�� 356
�� ��� ��� ��(EDTRBDAP) �
358
�� �
�� 13
��� 14
�� 451
�� � (�)
����� 13
������
�� SQL
�� 283
�� � � 286
��
��� �� ��(UDF) 259
�� �� �� 364
�� �� 365
��
�� 364
�� �� 363
���� 364
�� �� �� 363
���� ��� 365
���� ���� 11
�� 14
��� �� � �� 13
��� ���� 15
�� �� � �� 13
���� 13
SQL ��� 14
���� � 11
���� �� SQL� �� 363
SQLCODE 365
SQLSTATE 365
������ ���� 367
������ ���� ����(ARD) ���
�
�� �� 392
��� � 392
������ �� 367
������ ���� ���� �� 209
�
�� 382
��� 382
�� � 382
DDM 388
DDM � 389
� ��
�� ��
��� �� �� 380
���� �� �� 380
�� �� ��
��� �� �� 380
���� �� �� 380
� �� (�)
�� ��� �������� � �
379
�� � �� ���� 387
� �
DDMCNV �� 388
DISCONNECT� 388
RELEASE� 388
� 375
�� �� ���� 385
ARD ���� 392
� �
�� 385
� 391
���, �� 74
� ��
��� ��
�
�� 61
�� 4, 8
��� �� 60
�� 60
���� �� �� 67
�� �� 21, 58
FOR UPDATE OF� 139
iSeries Navigator� �� �� 41
iSeries Navigator� �� �� ��
43
� �
��� UDFs (User-defined functions)
�
���� �� �� �� 236
��� �� �� �� 236
�� �� 234
��� ��� �� 235
� � UDF 275
�� 89
WHERE �� 90
� UDT� ��� �� 247
��� SQL� ��� �� 330
������� ��� LOB �� 251
�� CALL 190
�� ����� 189
�� SQL� �� 247
��� �� ��(�� CLOB �
�) 218
��
�� �� 132
� (�)
� �� ��(WHERE�) 87
� �� �� 35
� � ��
�� INSERT �� 109
SELECT �� 108
�� � �� 84
� ��
�� �� 119
�� 120
EXISTS 121
IN 120
� � �� ���� 389
� RUW ���� 369
�� �� � 159
��
� � 106
�� CALL 187, 188
SQLDA� �� 188
�� � ��
�� ��� 125
DELETE� 127
HAVING� 124
UPDATE� 126
WHERE� 123
��� 28
�� 92
� � 395
� �� UDF 272
�� � � 56
�� � �� 57
� �� 375
� � �� 391
� �� ��
iSeries Navigator �� 43
�� 91
�� �� 91
�� ��� 171
� �� 90
�� ��
��� �� 110
SET� 111
��� � 141
�
�� 65
��� 18
� 19
iSeries Navigator� � 40
452 iSeries� DB2 UDB SQL ����� �� V5R2
� (�)
�� �����
�� � ��� 199
�� � ILE C � PL/I � 200
�� � REXX � 204
�� ����� ��� 185
�� ����� ��
CREATE PROCEDURE 178, 179
�� ����� �� 187, 190
CREATE PROCEDURE � 187
CREATE PROCEDURE �� �
� 188
�� �� ����� 93
���� �� 155
���� �� 153
���� �� UPDATE �� 157
����� �� �� �� 155
�� � 59
�� ���� 151
����
� �� �� 67
� �� �� 66
�� 137
�� �� 143
�� �� 140
�� �� 139
�� ���� BLOB 230
� ���� 83
�
ACT 409
CL_SCHED 410
DEPARTMENT 396
EMPLOYEE 397
EMPPROJACT 401
EMP_PHOTO 399
EMP_RESUME 400
IN_TRAY 410
ORG 412
PROJACT 406
PROJECT 404
SALES 414
STAFF 413
� �� � 233
� �� ��� �� ��
iSeries Navigator �� 44
� ��
iSeries Navigator �� 46
� (�)
� ��
iSeries Navigator �� 46
� �� �� 33
� ��� �� 94
���� ����� ��� ��
iSeries Navigator �� 39
� �� ��
iSeries Navigator �� 43
�� �� �� 30
�� �� ��
iSeries Navigator �� 45
�� � ��
��� � 111
� ��� �� �� 94
� � 141
�� � �� 142
�� � �� 142
AFTER ��� 168
BEFORE ��� 167
BETWEEN 85
CLOB �� �� �� �� ���
�� 213
CLOB � �� �� 220
COMMENT ON� 59
CREATE ALIAS� 62
CREATE DISTINCT TYPE �� 241
CREATE SCHEMA� 53
CREATE TABLE AS� 55
CREATE TABLE LIKE� 55
CREATE TABLE� 54
CREATE VIEW 63
CREATE VIEW�
�� �� 34
ctr() UDF C ���� ��� 274
CURRENT DATE 83
CURRENT TIMEZONE 83
DECLARE GLOBAL TEMPORARY
TABLE� 56
DELETE
�� 115
DROP� 67
DUW ����� �� 392
EXISTS 85
IN 85
INSERT� 23
�� � �� 109
IS NULL 85
� (�)
iSeries Navigator� �� �����
�� 51
iSeries Navigator� �� �����
� 38
iSeries Navigator� �� �� ��
51
iSeries Navigator� �� ��� ��
51
iSeries Navigator� �� � �� 41
iSeries Navigator� �� � �� 51
iSeries Navigator� �� �� ��
� 47, 50
iSeries Navigator� �� �� ��
�� 45
JOIN� 28
LABEL ON� 21, 58
LIKE 85
LOBFILE.SQB COBOL ���� ���
219
LOBFILE.SQC C ���� ��� 218
LOBLOC.SQB COBOL ���� ���
214
LOBLOC.SQC C ���� ��� 213
ORDER BY
�� �� 130
QSYSPRT ���
SQL� ���� 340
ROWID 57
SELECT �
�� �� 131
SELECT� 25, 69
� �� �� � 84
SELECT� � �� 117
SQLDA �� ���� ��
SELECT� 296
UDF ��� �� 232
UDF ��� ��� �� 230
UDF ��� �� 229
UDF� UDT� �� ���� 251
UDF �� ��� 274
UDT ��� ��� 244
UDT ���� �� �� LOB ��
��� 252
UDT� �� � �� 242, 243
UDT� ��� �� 231
UDT� AVG 232
UDT� ��� �� 244, 245
�� 453
� (�)
UDT� ��� �� 246
UDT� UDF �� 249
UDT� ��?? 231
UDT� ��� �� �� �� 246
UNION
��� 100
��� � �� 97
UNION ALL 100
UNION� UDT �� 248
UPDATE� 30
��� � �� 112
�� � 113
�� � � 113
SELECT �� 112
WHERE�
�� 88
AND 88
WITH CASCADED CHECK OPTION
�� 164
WITH LOCAL CHECK OPTION ��
164
�� 91
�� ��
� ��� ������
� �� �� �� �(FFDC) 393
�� �� 91
���� ��
�� ��� 209
������ ���� ���� �� 209
�� �� 209
�� 209
�� 210
��� 209
DB2 ���� �� ��� �� 209
LOB 209
UDT� UDF 209
���� �� ��� UDT 240
���� ��� UDF 222
� �� 90
���� UDT 240
����� �
� LOB �� ��� 216
�� ����� 196
�� �� 374
�� �� UDT 240
�� ��
�
�� 140
�� �� � 382
�����
��
iSeries Navigator �� 44
�� 343
�� �� �� 382
�� � 151
�� 347
�� �� ���� �(IASP) 362
��� 347
� � �� 348
��� �� ���� � 362
�� �� 360
�� �� � 360
��� � 356
�� ���(DDL) 356
��� 349
��� 354
��/�� 359
���� 358
���� 361
�� �� 350
�� ��
WITH DATA DICTIONARY�
CREATE SCHEMA� 7
�� ��
��� ��
��� UDF(��� �� ��)
���� �� 209
��� 82
���� �� 60
BLOB 210
CLOB 210
DataLink 252
��� � 254
FILE LINK CONTROL(������
�) 254
FILE LINK CONTROL(� ���
�) 254
NO LINK CONTROL 254
DBCLOB 210
�� ���(DDL) 4, 53
�� ���(DDL) (�)
��� � 356
�� � 356
�� ��(DML) 4, 69, 105
� ��
��� ��� 387
��� 367
� 367
� �� �� �� 149
��� � 373
��� � �� �� 373
� �� �� �� 379, 385
� ��(CHGJOB) � 348
� �
DDMCNV 388
��
�� 7
�� ���
�� 7
��� 349
�� ����� 177
�� CALL 189
��� 185
��� �� 191
����� � 196
� ��� ������� ���� 394
�� CALL
SQLDA� �� 188
�� CALL �� �� 187
�� � ��� 199
ILE C � PL/I 200
REXX 204
�� � �
SQLDA� �� 198
�� �� 178
�� 10
�� 186
CALL �� �� 187
iSeries Navigator
�� 320
SQL �� 179
���
�� � 354
�� 354
��/�� 359
��� 373
�
DROP COLUMN 61
454 iSeries� DB2 UDB SQL ����� �� V5R2
� (�)
FROM
� 70
GROUP BY
� 74
HAVING
� 76
INTO 106
�� SQL� ���� 296
PREPARE�, �� SQL �� 289
NULL 80
ORDER BY
� 77
SET 111
��� � �� 111
� �� 111
� ���� 111
��� 111
��� � 111
constant 111
DEFAULT 111
NULL 111
USING DESCRIPTOR 301
WHENEVER NOT FOUND 141
WHERE
�� � �� �� 87
�� SQL � 301
� �� 73
�� ��� 74
� �� 72
� 71
� ���� 73
� 90
��� 72
��� � 73
constant 73
NOT ��� 74
NULL 73
WHERE CURRENT OF 142
�� ��
� ���� 133
� � �� 131
�� 132
�� 129
� �� �� 129
CREATE INDEX 133
ORDER BY �� 129, 130
����
�� 9
� �� �� 133
�
�� 155
�� � 358
�� 9
�� 9
�� �� 156
�� �� 158
�� �� � 159
�� 155
�� �� 161
� �� 156
� � 153
���� �� 158
� �� 155
iSeries Navigator �� �� 317
��
�� 151
�� 151
iSeries Navigator �� �� 316
�
iSeries Navigator �� �� 315
FOR UPDATE OF 114
iSeries Navigator
�� 319
UPDATE �� � 157
��� ��
� � �� 392
����� � 152
�� 9
�� ����
�� 155
� �� 155
� �� �� �� �(FFDC) 393
�� �� 161
�� � 358
�� �� ���� ��(EDTCPCST) �
358
�� �
��� UDF(��� �� ��)
�� �� � ��
�� 13
�������
������ ��, �� 66
� 361
�� �� 66
� 67
�� 8
� 66
LABEL ON �� 58
QSYS2 �� 8
��� ���?? 224
���, UDF 239
���� UDT 240
��
��
� 143
� � �� 392
�� 135
� 135
�� �� 137
��� �
� 141
� �� �� �� 149
�� ��
� 140
�� ��
� 139
�� � �� �� 136
� �
� 141
�� � ��
� 142
�� � ��
� 142
���� 136
�� �� �� 149
SELECT� � �
�� SQL 300
WITH HOLD� 149
��� ��(CHGCLS) � 348
���
�� 87
AND 87
BETWEEN 85
COMMIT 350
DISTINCT 84
EXISTS 85, 121
�� 455
��� (�)
IN 85
IS NULL 85
LIKE 85
���� 86
NOT 74, 87
UNION 97
UNION ALL 100
����� ��
�� � 84
� �� ��(ILE)
�� 14
��� ���� 15
���� 13
��� 165
�� ��� 171
� 171
�� � 170
�� 10
��� 169
AFTER ���
� 168
BEFORE ���
� 167
DB2 ���� �� 209
iSeries Navigator
� 318
� ��� 318
�� 319
�� 318
SQL 166
SQL � 166
� ����
CURRENT DATE 81
CURRENT SCHEMA 81
CURRENT SERVER 81
CURRENT TIME 81
CURRENT TIMESTAMP 81
CURRENT TIMEZONE 81
USER 81
������ � 94
� �� �
�� � 218
�� 216
�� 217
���
��� SQL 336
��� 374
�� 373
�iSeries� DB2 UDB �
�� 371
���� �� ����� �� 371
DB2 Common Server ��� ��
��� �� 371
�� 370
���� � 370
���� � 370
������ 10
���� �� 373
�� �� 374
�
� �� 370
�� ���� 373
� �� 373
�� 371
� �� �� 373
ARD ����� �� 392
RDB ��� 370
RDBCNNMTH ��� 373
TGTRLS ��� 372
�� 373
�� 10, 14, 370
���� ��� �� �� 372
CCSID �� 374
DLTSQLPKG(SQL ��� ��) �
370
iSeries Navigator
� 321
iSeries� DB2 UDB �� 370
SQL ��� �(CRTSQLPKG) �
370
� �� 371
SQL� �� 372
�
88
� �� �� 136
�� 89
WHERE �� 90
�� � 34
� (�)
��
iSeries Navigator �� 46
�� �� 35
�� 18, 19
iSeries Navigator �� 40
��
�� 22
�� 92
�� ��
ACT 409
CL_SCHED 410
DEPARTMENT 396
EMPLOYEE 397
EMPPROJACT 401
EMP_PHOTO 399
EMP_RESUME 400
IN_TRAY 410
ORG 412
PROJACT 406
PROJECT 404
SALES 414
STAFF 413
�� 91
�� �� 91
� �� 90
��
iSeries Navigator �� 46
�� �� 58
�� �� 110
�� ��
��� �� 110
SET CLAUSE 111
�
CREATE TABLE� 18, 19
iSeries Navigator �� 40
�� �� ����� 93
�� ���� 25
�� 28
�� �� 30
�� �� 33
iSeries Navigator �� 45
�� �� 43
�� 4, 8
��� �� 59
���� �� ��
� 66
�� 94
456 iSeries� DB2 UDB SQL ����� �� V5R2
� (�)
� ��� �� 94
� � � ��
�� INSERT �� 109
SELECT �� 108
� ��� �� �� 94
iSeries Navigator� �� �� 51
iSeries Navigator� �� � �� 41
iSeries Navigator� �� � �� �
� 43
iSeries Navigator� �� �� ��
45
iSeries� DB2 UDB � 395
� ��
��� UDF(��� �� ��)
����
��� 365
�ILE ���� 13
�� �� 365
������ ����
��� ������
�� 13
� �� ��(ILE) ���� 13
���(sourced) ��
��� UDF(��� �� ��)
��
�� 4
����
�� �� 84
�� INSERT� �� � � �
�
� 109
�� ��� �� �� 129
�� 4, 8
INSERT� �� ��� � ���
107
SELECT� �� � � ��
� 108
� ��
� �� �� 131
�� �� ���� 2
���� ��
��� ��
�� ��
��� ��� 387
�� �� (�)
�� �� 381
� � ���� 385
��� �� 381
�� 350
� �� �� �� 379, 385
�� �� �� 382
�� ��
� 375
2-�� �� 381
DRDA �� 382
INSERT� 107
RUNSQLSTM � 339
SQL� ���� 339
sync ��� ��� 381
�� ��
QSQPRCED 3
���� UDT 240
�� ��
� ��
� 375
� ��2��� �� �� ����
��� 2��� �� �� ����
(DBCLOB)
2��� �� �� ����(DBCLOB)
��� �� 210
2� �� ����
��� 2� �� ����(BLOB)
2� �� ����(BLOB)
��� �� 210
2-�� �� 381
AALIAS ��
� 62
ALTER TABLE� 59
� �� 60
� �� 61
� �� 60
�� ��
���� �� 60
����
� �� 155
� �� 62
ALTER TABLE� (�)
�� ���� 153, 155
�� ���� 151
AND ��� 87
� �� �� 87
API
QSQCHKS 3
QSQPRCED 3
ARD(������ ���� ����) ���
�
��� ������ ���� ����
(ARD) ����
BBETWEEN ��� 85
CC2 ��
�� 344
CALL�
�� ����� 187
�� CALL 189
� 188
SQLDA� �� 188
call-type, UDF �� 266
CCSID
�� SQL� 286
� ��� �� 374
�iSeries� DB2 UDB�� � 374
��� �� 374
CHGLF(� � ��) � 348
CHGPF(�� � ��) � 348
CLI 2
CLOSQLCSR ���
�� ��� �� 380
COMMENT ON�
��, �� 59
COMMIT
�� 372
�� �� 8
��� ��
�� SQL 287
��� 350
COMMIT� 350
CONNECT� 368, 372
��� SQL 335
�� 457
CREATE ALIAS�
� � �� 62
CREATE DISTINCT TYPE�
��� ��� ��� 224
�� � 241
UDT �� 241
��� UDT(��� �� ��)
CREATE FUNCTION� 267
� � 232
� � UDF 275
� �� UDF 272
��� �� � 230
�� � �� ���� 229
�� � 229
� �� � 233
BLOB ��� �� � 230
UDF 228
UDF �� ��� 274
UDT ���� ��� �� �� �
231
UDT� ��� �� � 231
UDT� AVG � 232
��� UDF(��� �� ��)
CREATE INDEX�
� 65
�� �� 133
CREATE PROCEDURE� 177
��� 185
�� �� 178
�� 186
SQL �� 179
CREATE SCHEMA� 18, 53
SQL� ���� 339
CREATE TABLE� 54
��� 18
�� � 242
�� �
� 56
�� 57
����
� �� 155
�� ���� 153
�� ���� 151
���
��� SQL 328
AS 55
LIKE 55
NULL 18
CREATE TABLE� (�)
ROWID 57
UDT� �� � �� 242, 243
CREATE TRIGGER� 166
� 166
�� � 170
��� 169
AFTER ���
� 168
BEFORE ���
� 167
CREATE VIEW� 63
�� 33
� 34, 35
�� �� 63
UNION �� 64
WITH CASCADED CHECK
OPTION 162
WITH CHECK OPTION 162
WITH LOCAL CHECK OPTION 163
CRTDUPOBJ(�� ���� �) � 364
CRTUSRPRF �
��� ��� � 344
CRTUSRPRF(��� ��� �) �
344
ctr() UDF C ���� ��� 274
CURRENT DATE � ���� 81
CURRENT SCHEMA � ���� 81
CURRENT SERVER � ���� 81
CURRENT TIME � ���� 81
CURRENT TIMESTAMP � ���� 81
CURRENT TIMEZONE � ���� 81
DDatabase Navigator 305
� 307
��� ���� �� 307
� ���� �� 308
�
��� �� �� 308
DataLink 252
��� � 254
FILE LINK CONTROL
� ��� � 254
(������ �) 254
NO LINK CONTROL 254
DB2 Multisystem 3
DB2 UDB � � ����� 3
DB2 UDB �� ��� � SQL �� � 1
� ��� ������ �� 368
DBCS(2��� �� ��)
��� SQL� ���� 328
DBGVIEW(*SOURCE) ��� 365
DBINFO ���
�� 267
DDM � ��(RCLDDMCNV) � 389
DECLARE CURSOR�
�� 80
DECLARE GLOBAL TEMPORARY
TABLE� 56
DELETE� 105
�� �� 158
�� �� � 159
�� � ��, �� 127
�� 33, 115
� 33
���� �� 158
DESCRIBE TABLE� 372
DESCRIBE�
�� SQL �� 288
DFT_SQLMATHWARN �� ��� 269
DISCONNECT� 368, 372
� � 388
DLTLIB(����� ��) � 358
DLTSQLPKG(SQL ��� ��) � 370,
421
DRDA �� 1
��� ��� � ��
DRDA �� 2
��� � � ��
DRDA �� 382
DRDA( � ��� ������ ��)
��� � ��� ������ ��
(DRDA)
DROP COLUMN�
� 61
DROP PACKAGE� 368
DROP� 67
�� � 63
458 iSeries� DB2 UDB SQL ����� �� V5R2
DUW( �� � ��)
��� � � ��
EEDTRCYAP(�� ��� �� �� ��)
� 360
EXECUTE �
��� �� 370
EXECUTE�
�� SQL 287
EXISTS ��� 85
� �� �� 121
FFETCH� 143
�� SQL 301
��� �� �� 146
� �� �� �� 146
��� �� � �� 144
FFDC(� �� �� �� �)
��� � �� �� �� �(FFDC)
FOR UPDATE OF�
���� 139
FROM�
�� 70
GGRANT PACKAGE� 368
GROUP BY
� 74
NULL �� 75
GRTOBJAUT(���� ��) � 343
HHAVING
� 76
IIDDU(��� �� �� ����) 7
ILE ��� ����
��� 373
ILE ����
��� 373
IN ���
� ��, �� 120
�� 85
INSERT� 105
��� 22, 107
� �� ���� 155
�� �� 62
�� �� 64
� � ��
�� INSERT �� 109
SELECT �� 108
� �� �� 106
105
��� � ��� 107
� �� 106
�� 105
�� � �� 109
� 23
���� �� �� �� �� 155
� ���� �� 106
��� �� 106
��� � �� 106
�� �� 107
DEFAULT �� 106
INTO� 106
NULL 107
NULL �� 106
VALUES� 105
INTO�
�� 106
����
�� SQL 296
PREPARE�
�� SQL 289
IS NULL ��� 85
iSeries Navigator 37
� ����
�� 316
�� � 345
��� �� 346
� �� 346
��
��� � �� 346
����� � 38
��
� 313
��
� �� ��� �� 44
iSeries Navigator (�)
�� � 47
��� �� ��(UDF)
�� 320
��� �� ��(UDT)
�� 321
��
�� 319
�� 314
��� � 38
�� �� 345
�� �����
�� 320
����
�� 319
��
�� ���� 317
� ����
�� 315
���
� 318
� ��� 318
�� 319
�� 318
���
� 321
� �� 46
� �� 46
� � 40
� 40
���� ����� ��� �� 39
�� �� �� 45
�� �� �� 45
�� �� �� 313
�� �� 305
Database Navigator 305
� 307
��� ���� �� 307
� ���� �� 308
��� �� �� � 308
SQL �� 312
���� ��� �� 313
SQL ���� �� 309
���� �� 310
���� � 310
�� �� 310
� � � �� 311
�� 459
iSeries Navigator (�)
SQL ���� �� (�)
����� �� � �� ��
311
iSeries� DB2 UDB 1
� ��� ������ �� 368
��� �� ���� 371
��� ��� �� ��
iSeries� DB2 UDB � � 395
iSeries� DB2 Universal Database
��� iSeries� DB2 UDB
iSeries� DB2 �� ��� 2
JJOIN�
�� 28
LLABEL ON� 21, 58
����� �� 58
��� 374
LIKE ��� 85
���� 86
LOCK TABLE� 348
LONG VARCHAR
�� �� 210
LONG VARGRAPHIC
�� �� 210
NNOT ��� 74, 87
� �� �� 87
NULL 80
�� �� 64
GROUP BY� �� 75
INSERT INTO �, 106
INSERT� 107
ORDER BY� �� 78
SET�, 111
UPDATE� 111
WHERE� 73
OOPEN� 301
OR ��� 87
� �� �� 87
ORDER BY
� 77
NULL �� 78
�� �� �� 130
�� ��, �� 129
PPREPARE�
�� SQL 287
PRTSQLINF(SQL �� � ) � 423
QQSQCHKS 3
QSQPRCED 3
��� 10
QSYS2
���� �� 8
QSYSPRT ���
SQL� ����
� 340
RRELEASE� 368, 372
� � 388
REVOKE PACKAGE� 368
REXX 2
ROLLBACK� 350, 372
��� ��
�� SQL 287
ROWID
�� �� 57
RRN ��� � 91
RUNSQLSTM(� SQL�)
� 2
� �� 338
�(CL) 337, 424
�� � 338
�� 338
�� �� 339
RUW(� ��� ��)
��� ��� � ��
RVKOBJAUT(���� � ��) � 343
SSAVEPOINT� 354
�� 356
� ������ �� ���� 356
SELECT INTO� 79
�� SQL 285
SELECT� 69
�� ��� �� 289
88
�� ��� �� 288
�� 82, 83
��/�� �� 83
�� 89
�� SQL
SELECT� � � 300
��(�� � ��) 70
�� � �� 84
� �� �� � 84
� ��
� 117
�� 117
���
� 28
�� 92
�� 82, 83
���� 82, 83
� �� 70
�� 91
�� �� 91
� �� 90
�� � �� 102
�� �� ��� 82
�� �� ����� 93
��
� 28
�� 25
� ����
� 81
� ��� �� 94
� ��� �� �� 94
AND ��� 87
� 88
BETWEEN 85
460 iSeries� DB2 UDB SQL ����� �� V5R2
SELECT� (�)
DISTINCT ��� 84
EXISTS 85
FROM� 70
GROUP BY
� 74
NULL �� 75
HAVING
� 76
IN 85
IS NULL 85
LIKE 85
���� 86
NOT ��� 87
NULL
� 80
OR ��� 87
� 88
ORDER BY
� 77
NULL �� 78
SQLDA ��� �� 288
SQLDA ���� ��� � 296
UNION 97
UNION ALL 100
WHERE
� �� �� 87
WHERE� 71
�� 90
� �� 73
�� ��� 74
�� 72
� �� 72
� ���� 73
��� 72
��� � 73
constant 73
NOT ��� 74
NULL 73
SET CONNECTION� 368, 372
SET CURRENT FUNCTION PATH� 226
SET TRANSACTION�
�� ��� �� 380
���� ���� �� 371
SET�
�� 111
��� � �� 111
� �� 111
SET� (�)
� ���� 111
��� � 111
constant 111
DEFAULT 111
expression 111
NULL 111
SQL 1
��
�� 4
�� �� 4
�� 1
�� 374
���� �� 6
�� �� ���� 2
SQL �� 312
SQL �� �� 4
SQL �� 312
���� ��� �� 313
SQL ��� ��(SQLDA)
��� SQLDA(SQL ��� ��)
SQL ���� �� 2, 309
���� �� 310
���� �
���� 310
�� �� 310
� � � �� 311
����� �� � �� �� 311
SQL � ��(PRTSQLINF) � 423
SQL �� ��(SQLCA)
��� SQLCA(SQL Communication
Area)
SQL ���
�� 4
SQL ��� �(CRTSQLPKG) � 370,
417
� �� 371
SQLCA(SQL Communication Area) 6
SQLERRD �� 382, 385
SQLERRD(4)
� � �� 385
� �� �� 382
SQLCODE
������ ���� �� 365
SQLDA(SQL ��� ��)
���� �� 296
���� � ��, �� 290
�� 290
SQLDA(SQL ��� ��) (�)
SELECT� �� 288
SQLD 291
SQLDABC 291
SQLDAID 291
SQLDATA 292
SQLDATALEN 295
SQLDATATYPE_NAME 295
SQLDA �� ���� ��
SELECT� 296
SQLIND 292
SQLLEN 292
SQLLONGLEN 295
SQLN 291
SQLNAME 292
SQLRES 292
SQLTYPE 291
SQLVAR 291
SQLVAR2 294
SQLSTATE
������ ���� �� 365
SQL� ��(RUNSQLSTM) � 2, 424
SQL� ����
�� 337
��� 339
�
QSYSPRT ��� 340
�� �� 339
SQL_FILE_READ, �� �� 217
STRCMTCTL(�� �� �) � 350
STRJRNAP(�� �� �� �) �
360
STRSQL(SQL �) � 324, 435
sync ��� ��� 381
UUNION ALL 100
UNION ��� 97
UNION� UDT �� � 248
UPDATE� 105
� � �� ��
� 113
� �� ���� 156
�� � ��, �� 126
�� 110
��� � ��
� 112
�� 461
UPDATE� (�)
�� �
� 113
�� ��
��� �� 110
���� �� �� �� 156
FOR UPDATE OF
���� 114
SELECT ��
� 112
SET CLAUSE 111
SET�
��� � �� 111
� �� 111
� ���� 111
��� � 111
constant 111
DEFAULT 111
expression 111
NULL 111
WHERE�
� 30
USER � ���� 81
USING
�
�� SQL 298
DESCRIPTOR� 301
WWHENEVER NOT FOUND� 141
WHERE CURRENT OF� 142
WHERE�
�� � �� �� 87
�� 87
� �� 73
�� ��� 74
�� 71
� �� 72
�
�� SQL 301
� ���� 73
� 90
��� 72
��� � 73
AND 87
constant 73
NOT 87
WHERE� (�)
NOT ��� 74
NULL 73
XX/Open �� �� ���� 2
462 iSeries� DB2 UDB SQL ����� �� V5R2