iseries¿ë db2 udb sql ÇÁ·Î±×·¡¹Ö °³³ä v5r2 - your.org

478
iSeries iSeries DB2 Universal Database SQL 5 E Rserver

Upload: khangminh22

Post on 04-Mar-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

iSeries

iSeries� DB2 Universal Database SQL����� ��

�� 5

ERserver

���

iSeries

iSeries� DB2 Universal Database SQL����� ��

�� 5

ERserver

���

© Copyright International Business Machines Corporation 1998, 2002. All rights reserved.

��

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

16 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

|

|

|

|

|

|

|

|

|

68 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

104 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

128 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

134 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

� DLFM� ��� ��� ��� ������ ��� ��, � ���

����� ��� ���.

� 12 � ���� �� �� �� 257

258 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

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

322 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

342 iSeries� DB2 UDB SQL ����� �� V5R2

� 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

STRSQL

444 iSeries� DB2 UDB SQL ����� �� V5R2

� ��

�� ��� ��� ����� ��� �� �

� �� �� ��� �� �� �� ��� ��

���. �� ��� ���� �� ��� �

� ���� ��� ��� �� � ���

�.

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

���

Printed in U.S.A