566
IBM i SQL 7.1

€¦ · SQL ...........1)! ’ IBMi7.1 ...........1)3 ˙PDF˝%#’!˘˛#!˜ ! ! SQL ........3 ˛%#˝ DB2foriStructuredQueryLanguage .....3 :$ "SQL ..............4 ># - 8

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

  • IBM i

    �������

    ���������SQL

    7.1

    ���

  • IBM i

    �������

    ���������SQL

    7.1

    ���

  • ��������

    ����������������������������������������������� � !"��#��������“$%# !�#&”, ��'�# 549

    �������(��������)"��� IBM i7.1 ('�#+-����������� 5770-SS1)�����!��������"�36-$�������#��#���#+'��8���8'�"��:�#

    ;���8):��(����'�� -:�!�������)���#�#!;!������-"� reduced instruction set computer (RISC)����-"�CISC )"���!���

    ©��

    ����� International BusinessMachines Corporation1998,2010.

    ©Copyright International BusinessMachines Corporation1998,2010.

  • ������

    ��������SQL . . . . . . . . . . . 1

    ���)!�'���� IBM i7.1 . . . . . . . . . . . 1

    )3�� PDF�%#'!���#!� !��!�SQL . . . . . . . . 3

    ���%#��� DB2 for i StructuredQuery Language . . . . . 3

    ��:$�" SQL . . . . . . . . . . . . . . 4

    >#������-��8���?��@� SQL��&�?��-(?#!�� . . 5

    SQL��'����#!���8�A����8!��. . . . . . . 6

    ���"��8$%#���8 SQL . . . . . . . . . . . 6

    ?A������A���#! SQL . . . . . . . . . . . 8

    ?A�����:���(�+ SQL . . . . . . . . . . . 8

    SQL�H��-H��� . . . . . . . . . . . . . 8

    ������(Schemas) . . . . . . . . . . 8

    -�!��������:!��-�!���� . . . . . . . . . 9

    �$�#�H�� . . . . . . . . . . . . . 9

    �#!#8, �;:, ��$������ . . . . . . . . . 9

    Alias . . . . . . . . . . . . . . 10

    �����8 . . . . . . . . . . . . . . 10

    "!!��� (Index) . . . . . . . . . . . 10

    ��%#��" . . . . . . . . . . . . . 11

    �!��-��!� . . . . . . . . . . . . . 11

    �?!K�-"�!����-�H�): . . . . . . . . . . 11

    �%#"�� (Sequences) . . . . . . . . . . 12

    ��:� !������ . . . . . . . . . . . 12

    3N8�������������%#'�" (User-defined functions) 12

    ���"��������%#'�" . . . . . . . . . . . 12

    �H��-H��� XSR . . . . . . . . . . . 13

    SQL�?H�-� . . . . . . . . . . . . 13

    �H��-H�����H??��-$���� !��!� . . . . . . . 13

    )3����(�����8���� . . . . . . . . . . 15

    -�#��?��!#+�#!)3����(���+��+ (Output source file

    member) . . . . . . . . . . . . . 15

    � !��!� . . . . . . . . . . . . . 15

    SQL�?H�-� . . . . . . . . . . . . 16

    ��"�� . . . . . . . . . . . . . . 16

    -K�!�:��� !��!� . . . . . . . . . . . 16

    Data definition language . . . . . . . . . . . 17

    �#!�!#8������(schema) . . . . . . . . 17

    �#!�!#8�#!#8. . . . . . . . . . . . . 17

    �#!-?���������%#��" . . . . . . . . . 18

    Referential integrity ���#!#8 . . . . . . . 18

    �#!-?���������%#��"���#!�#8��8 . . . . 19

    ��:�+�#8: �#!-?�����%#��"����#8��8 . . . . 20

    ��:�+�#8: �#!����%#��" . . . . . . . . . 21

    �#!!8���#!�!:��� . . . . . . . . . 21

    �#!�!#8�#!#8�"+�� LIKE . . . . . . . . . 22

    �#!�!#8�#!#8�"+�� AS. . . . . . . . . . 22

    �#!�!#8��- ���+��#!#8materialized query . . . . 23

    �#! !�#&�#!#8���:$!#:��������� . . . . . 24

    �#!�!#8$������ row change timestamp . . . . . 25

    �#!�!#8��- ���+� identity column . . . . . . 25

    �#!�� ROWID . . . . . . . . . . . . 27

    �#!�!#8���#!���%#"��. . . . . . . . . . 27

    �#!- !�+�-���$������ identity ���%#"�� . . . . 29

    �#!��+#��?!K�-"�!�36�"�. . . . . . . . . . 30

    ��+#���836�"��%#'!���?!K�-"�!�36�"� . . . . . 30

    �#!!���?!K�-"�!�36�"� . . . . . . . . . 31

    -�A���?!K�-"�!�36�"�;��-!�+���8#� . . . . . . 31

    !#+�#!?#!#��-��!��%#'!���#! !�:����?!K�

    -"�!�36�"� . . . . . . . . . . . . . 32

    !#+�#!$�#?#!#��-��!���8�?!K�-"�!�36�"�

    (FPPVL) . . . . . . . . . . . . 33

    descriptor ��8$�#?#!#��-��!��%#'!���?!K

    -"�!�36�"� . . . . . . . . . . . . 34

    ��+#���836�"� (3N8������$" 8) . . . . . . 35

    �#!-�#!'��36�"� (3N8������$" 0) . . . . . 37

    �#!;�"!'��36�"� (3N8������$" 4) . . . . . 37

    ��:�+�#8� !��!��?!K�-"�!�36�"� . . . . . 38

    $%#���%#���:) �%#'!���#!-��+��?!K�-"�!�36�"� . . 40

    ��$:!?�#!�#-���+:���"!!��� . . . . . . 40

    ��$:!?�#!�#-���+:���-@!" . . . . . . 41

    �#!�!#8-�-���@��#+�"+��$%#���8 LABELON . . . 41

    �#!�@��#+ SQL�H��-H����"+�� COMMENTON . . 42

    �#!- ���+� definition�#!#8 . . . . . . . . . 43

    �#!-?���$������ . . . . . . . . . . . 43

    �#!- ���+�$������ . . . . . . . . . . 43

    �#!� �8���"�����������]#� . . . . . . . 44

    �#!��$������ . . . . . . . . . . . . 45

    �%#"���#!"%#-����#!��8$%#���8 ALTERTABLE . . 46

    �#!�!#8���#!��8#��A��ALIAS . . . . . . . 46

    �#!�!#8���#!�������8 . . . . . . . . . 47

    WITHCHECKOPTION�������8 . . . . . 49

    WITHCASCADEDCHECKOPTION . . . 49

    WITHLOCALCHECKOPTION . . . . . 50

    ��:�+�#8: �H�?����#!�!:���������-!�+8 . . 51

    �#!�!#8"!!��� . . . . . . . . . . . . 52

    ©������@�_��8 IBMCorp. 1998, 2010 iii

    ||

    ||

    ||

    ||

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

  • �#!�!#8���#!����:� !������ . . . . . . . 53

    �#!- ���+��H��-H���������+�� . . . . . . . . . 53

    �$�#�H�����#!������>#������ . . . . . . 54

    �#!!��������$�#�H��-���+:����#!#8 . . . . . 54

    �#!!��������$�#�H��-���+:���$������ . . . . 54

    �#!���H��-H���>#������ . . . . . . . . . 55

    �#`#�%#'!���#!"%#-����#!����� . . . . . . . . 55

    �#!"j8������"+��$%#���8 SELECT . . . . . . . 56

    ��$:#�SELECT!"���� . . . . . . . . 56

    �#!!��-8A���)��#!$�'#�"+��WHEREclause . . 57

    ��?����WHEREclause . . . . . . . 58

    ��:"%#-����#!- !�+�-��+� . . . . . . . 60

    NOTkeyword . . . . . . . . . . . 60

    GROUPBYclause . . . . . . . . . . 60

    HAVINGclause . . . . . . . . . . . 63

    ORDERBYclause . . . . . . . . . . 64

    $%#���8 SELECT���Static . . . . . . . . 66

    �#!�"�#!$�# null . . . . . . . . . . . 67

    -!��-��!�?�-&`��$%#���8 SQL . . . . . . . 68

    �#!� �8���"����� . . . . . . . . . . 70

    !-�������:�����, -:�#, �� timestamp . . . . 70

    �#!!��$�#:�������-:�# N���� . . . . . . 70

    �#!$%#�:�:�����/-:�# . . . . . . . . 71

    ��?���#!- ���+��;:. . . . . . . . . . 71

    �#!�"�#!����;:K�%# . . . . . . . . . . 71

    �#!��+#�-8A���)��#!$�'#���K��K�� . . . . . 72

    ��?�#!�#?�-&`�%#'!�� LIKE . . . . . . 74

    '�#+-8A���)��#!$�'#�#+��WHEREclause 74

    �#!��$�#�%#'�"OLAP . . . . . . . . . 76

    �#!!:������#��#!#8�#��:�#'�j�8�#!#8 . . . 79

    Inner join . . . . . . . . . . . . 79

    Left outer join . . . . . . . . . . . 81

    Right outer join . . . . . . . . . . 82

    Exception join . . . . . . . . . . . 82

    Cross join . . . . . . . . . . . . 83

    Full outer join . . . . . . . . . . . 84

    !-���#!!:�'�#+ !-����'�j�8$%#���8 . . 85

    �#!����?���#!#8 . . . . . . . . . . 86

    �#!��-$�+:!����-!�+�K�%# . . . . . . . . . 88

    �#!��$�+�-:�!�"UNION -?A��!:��#!-�A��+��+ . . . 96

    �#!!��$�+�-:�!�"UNIONALL . . . . . . 99

    �#!��$�+�-:�!�" EXCEPT . . . . . . . . 101

    �#!��$�+�-:�!�" INTERSECT . . . . . . . 104

    ����"?�#"���#!"j8����� . . . . . . . 106

    �#!��!��;:�"+��$%#���8 INSERT . . . . . . 107

    �#!��!��;:�"+�� VALUES clause . . . . 109

    �#!��!��;:�8���#!#8�"+��$%#���8 select . . . 110

    �#!��!��;:�"+��$%#���8 INSERT���;����H�� 110

    �#!��!�������8���#!#8":+��%#��"���#!�#8

    ��8 . . . . . . . . . . . . . . . 111

    �#!��!�$�#-�#��$������ identity . . . . . 112

    �#!-�A��$�#�����!� . . . . . . . . . . 113

    �#!- ���+���������#!#8�"+��$%#���8 UPDATE . . 113

    �#!��?-"��#!#8�"+�� scalar-subselect . . . 115

    �#!��?-"��#!#8������;:#��#!#8�A�� . . . . 115

    �#!��?-"��#!#8":+��%#��"���#!�#8��8 . . . 116

    ��:�+�#8: �~UPDATE . . . . . . . . 117

    �#!��?-"� identity column . . . . . . . 117

    �#!��?-"�������#����"j8�##��#!#8 . . . . 118

    �#!���;:���#��#!#8�"+��$%#���8 DELETE. . . 120

    �#!���;:���#��#!#8":+��%#��"���#!�#8��8 120

    ��:�+�#8: �~DELETE . . . . . . . . 122

    �#!��#������ . . . . . . . . . . . . 124

    �#!��-$�+:!�+��+ . . . . . . . . . . . 125

    -$�+:!�+��+��$%#���8 SELECT . . . . . . . 126

    -$�+:!�+��+��-8A���)��#!$�'# . . . . . 127

    '�#+-'���#!����-$�+:!�+��+ . . . . . . 127

    �#!!:�-$�+:!��+��+):��WHERE'!A�HAVING

    clause . . . . . . . . . . . . . 128

    -$�+:!�+��+������?��@���� . . . . . . . . . 130

    �A�����#!�#8��8������?��@���� . . . . . . 130

    ��:�+�#8: -$�+:!�+��+������?��@������WHERE

    clause . . . . . . . . . . . . . 130

    ��:�+�#8: -$�+:!�+��+������?��@������HAVING

    clause . . . . . . . . . . . . . 132

    ��:�+�#8: -$�+:!�+��+������?��@������ select-list 132

    ��:�+�#8: -$�+:!�+��+������?��@������$%#���8

    UPDATE. . . . . . . . . . . . 133

    ��:�+�#8: -$�+:!�+��+������?��@������$%#���8

    DELETE . . . . . . . . . . . . 134

    �%#"���#!-!�+8 �� normalization ��SQL . . . . . 134

    �%#"���#!�"-!�+8��������ORDERBY���#!-�A��

    �;: . . . . . . . . . . . . . . . 135

    �%#"���#!�"-!�+8��ORDERBY . . . . . 136

    �%#"���#!�"-!�+8���#!-�A���;: . . . . . 138

    �%#"���#!�"-!�+8�������8 . . . . . . . . 139

    �%#"���#!�"-!�+8��$%#���8 CREATE INDEX . . . 139

    �%#"���#!�"-!�+8����%#��" . . . . . . . . 140

    �%#"���#!�"-!�+8 ICU . . . . . . . . . . 140

    Normalization . . . . . . . . . . . . 141

    �#! � �8����� . . . . . . . . . . . . 142

    �#!!��`#$:#� ��"��+�%#'!�� SQL�H��-H��� . . . 142

    !'����"8���@��#!��8#� . . . . . . . . 143

    �����8 . . . . . . . . . . . . . 143

    iv IBM i: >#������ �#!� !��!�SQL

    ||

    ||

    ||

  • �#!�!:��� . . . . . . . . . . . 143

    Data integrity . . . . . . . . . . . . 144

    ��#:?!����� (Concurrency) . . . . . . 144

    �#!�%#-�!���� . . . . . . . . . . . 146

    Commitment control . . . . . . . . . 147

    Savepoints . . . . . . . . . . . . 151

    �#!"%#-����#!���Atomic . . . . . . . 153

    ��%#��" . . . . . . . . . . . . . 155

    �#!-?��� ���#!����%#��"���#!�!:��� 155

    3N8������#!����j���-!�+�$A� . . . . . . . 156

    �#!�#��#�$:#�-��+'#+ . . . . . . . . 157

    Index recovery . . . . . . . . . . . 157

    $:#�����!����8�$�#�H�� . . . . . . . 158

    User auxiliary storage pool . . . . . . . . 159

    Independent auxiliary storage pool . . . . . 159

    !���� . . . . . . . . . . . . . . . . 160

    ���!��?!K�-"�!� . . . . . . . . . . . . 160

    �#!�%#'�"�?!K�-"�!��#+��� . . . . . . 161

    �#!�%#'�"SQL �?!K�-"�!� . . . . . . . 162

    �#!-!�+��?!K�-"�!����-�H�): . . . . . . . 167

    �#!��$%#���8 CALL �"+����� definition ��8�?!K�

    -"�!��+�� . . . . . . . . . . . . 168

    �#!��$%#���8 CALL���N8�"+)���� definition

    ��8�?!K�-"�!��+�� . . . . . . . . . 169

    �#!��$%#���8 CALL���N8":+ SQLDA . . . . 170

    �#!��$%#���8 CALL���dynamic �"+���)����

    CREATEPROCEDURE�+�� . . . . . . 171

    ��:�+�#8: $%#���8 CALL . . . . . . . . 171

    �#!��8$A�-KH���8����?@�#��?!K�-"�!����-�H�): 179

    ��:�+�#8 1: �#!-!�+��?!K�-"�!����-�H�): Kj�8��8

    ������"����?@�'�j�8��" . . . . . . . . 180

    ��:�+�#8 2: �#!-!�+��?!K�-"�!����-�H�):Kj�8��8

    ����-KH�����?@�'�j�8��"#� �?!K�-"�!����K���+�� 181

    �#!-��+�� !��!�'!A� SQL �?!K�-"�!�-?A��!����"

    ����?@� #� stored procedure . . . . . . . 187

    ?#!#��-��!������#�'����#!�%#'!���%#'!���?!K�-"�!�

    ���-�H�):��3N8�������������%#'�"-�8 . . . . 194

    ��:� !��:��8������?!K�-"�!����-�H�): . . . . . 200

    �#!+�������;#��������!��) +�8� !��!��#!

    -!�+� . . . . . . . . . . . . . . 202

    �#!��8?#!#��-��!�#�DB2 ) +�8�?!K�-"�!��#+

    ��� . . . . . . . . . . . . . . 203

    !� ���?#!#��-��!� SQL . . . . . . . 203

    !� ���?#!#��-��!� GENERAL . . . . . 204

    !� ���?#!#��-��!� GENERALWITHNULLS 205

    !� ���?#!#��-��!� DB2GENERAL . . . . 205

    !� ���?#!#��-��!� Java . . . . . . . 206

    �#!��3N8�������������%#'�"-�8. . . . . . . 206

    ��:$�"-���+:���UDF . . . . . . . . . 207

    �#!-��+�UDF - �3N8����� SQL . . . . . . 209

    ��:�+�#8: SQL scalarUDF . . . . . . . 209

    ��:�+�#8: �#!#8 SQLUDF . . . . . . . 209

    �#!-��+�UDF �'- �3N8������#+��� . . . . 210

    �#!�8�-��+�UDF. . . . . . . . . 210

    �#!��8��#��#��:-����#�DB2 ) +�83N8�����

    �#+��� . . . . . . . . . . . . 214

    ��$:!?�#!�#3N8��������Table . . . . 220

    �#! !�:�������"?�#"��8UDFs . . . 221

    ��$:!?�#!�#Threads . . . . . . . 222

    �#! !�:��������#� . . . . . . . 222

    ��$:!?�#!�#-!A��8-3�K� (Fenced)'!A�

    ���-3�K� (unfenced) . . . . . . . . 223

    ��$:!?�#!�#���#!����j����#!��$A� . . 223

    ��:�+�#8: �$"UDF . . . . . . . . . . 224

    ��:�+�#8: Square ��8UDF'�#+-�� . . . . 224

    ��:�+�#8: ��:��� . . . . . . . . . . 225

    ��:�+�#8:3N8������#!#8�#�#& . . . . . . 226

    �#!�� UDF ��$%#���8 SQL . . . . . . . . 234

    �#!����:�%#-$!A��8'�#+?#!#��-��!� '!A�$�#

    NULL ���#��:-����3N8����� . . . . . . 234

    �#!���#!�#8��83N8������#�-���� . . . . 234

    �#!���#!�#8��83N8��������)��$!��#�-���� 235

    ���!� ��8�#!�#8��83N8����� . . . . . . 236

    �!��-��!� . . . . . . . . . . . . . . 238

    SQL�!��-��!� . . . . . . . . . . . 239

    �!��-��!� BEFORESQL . . . . . . . 239

    �!��-��!� AFTERSQL . . . . . . . . 241

    �!��-��!� INSTEADOFSQL . . . . . . 242

    Handlers ��SQL�!��-��!� . . . . . . 244

    �#!#8�#!;�#+���SQL�!��-��!� . . . . . 245

    �!��-��!����#+��� . . . . . . . . . 246

    ��:����������-!+��� SQL �?!K�-"�!� . . . . . 246

    �#!"����!���� SQL . . . . . . . . . . . 248

    �#! !�� !�8 !���@��#?��8�?!K�-"�!���3N8����� 249

    �#! !�� !�8 !���@��#?�#!�%#8#���8�?!K�-"�!�

    ��3N8����� . . . . . . . . . . . . 249

    �#!������!�����'��-?A��-?��� !���@��#?���#!

    �%#8#�. . . . . . . . . . . . . . 252

    �#! !�:������"�����?�-&` . . . . . . . . 253

    �H��-H�����#"�']� . . . . . . . . . . 253

    ���"������H��-H�����#"�']� . . . . . . 253

    Large object locator . . . . . . . . . . 253

    ��:�+�#8: �#!�� locator -?A���%#8#����$�# CLOB 254

    ��:�+�#8: LOBLOC��C . . . . . . . 255

    �#!��] v

    |

    ||

    |

    ||

    ||

    ||

    ||

    ||

    ||

    ||

  • ��:�+�#8: LOBLOC��COBOL . . . . . 256

    ��:� !��:��8��� ��LOB locator . . . . . . 259

    ��:� !����#8��8;j8)3�� LOB . . . . . . . 259

    ��:�+�#8: �#!"j8�����CLOB ) +�8)3�� . . . . 260

    ��:�+�#8: LOBFILE ��C . . . . . . . 260

    ��:�+�#8: LOBFILE ��COBOL . . . . . 261

    ��:�+�#8: �#!��!�������8��$������ CLOB . . 262

    �#!��"8�$!8!�#8��8$������ LOB . . . . . 263

    �#!��"8�$!8!�#8 Journal entry ��8$������ LOB 263

    User-defined distinct type . . . . . . . . . 264

    �#!��+#�UDT . . . . . . . . . . . 265

    ��:�+�#8: -8���!#. . . . . . . . . . 265

    ��:�+�#8: !:���+�� . . . . . . . . . 265

    �#!��+#��#!#8":+UDT . . . . . . . . 266

    ��:�+�#8: �#!�#+ . . . . . . . . . 266

    ��:�+�#8: ���3�!�����$!8#� . . . . . . 266

    �#!�"�#!UDT . . . . . . . . . . . 267

    ��:�+�#8: �#!�� UDT . . . . . . . . . 267

    ��:�+�#8: �#!- !�+�-��+�!':�#8UDTs��$�#

    $8��� . . . . . . . . . . . . . 267

    ��:�+�#8: �#!� �8!':�#8UDT . . . . . 267

    ��:�+�#8: �#!- !�+�-��+������ UDT!:��+��":+ 269

    ��:�+�#8:UDF��(�������� UDT!:��+��":+ 269

    ��:�+�#8: �#!�%#'�"$�#����� UDT!:��+��":+ 270

    ��:�+�#8: �#!�%#'�"$�#��SQL���)"�#��� 270

    ��:�+�#8: �#!�%#'�"$�#����� UDT�����#8���!:��+��

    ":+ . . . . . . . . . . . . . 271

    ��:�+�#8: �#!�� UDT ��$%#���8 UNION . . . 272

    ��:�+�#8: �#!�� UDT,UDF, ��LOB . . . . . 272

    ��:�+�#8: �#!��+#�UDT��UDF . . . . . 272

    ��:�+�#8: �#!��3N8����� LOB -?A�����$�#-�#) ��>#�

    ����� . . . . . . . . . . . . . . 274

    ��:�+�#8: �#!�� UDF -?A��-$�+:!� instance ��8UDT 274

    ��:�+�#8: �#!�� LOB locator -?A���"�#!��� instance

    ��8UDT . . . . . . . . . . . . . 274

    �#!�� DataLink . . . . . . . . . . . . 275

    !"����8�#!$:�$����8����DataLinks . . . . 276

    NOLINKCONTROL . . . . . . . . 276

    FILELINKCONTROL?!��":+���@��%#'!��

    FS . . . . . . . . . . . . . . 276

    FILELINKCONTROL?!��":+���@��%#'!��

    DB . . . . . . . . . . . . . 276

    �#!�%#8#����DataLinks . . . . . . . . 277

    $%#���8 SQL��3N8����� SQL/XML . . . . . . . 279

    �#?!:���8XML���?����-�#��?�� . . . . . 281

    �#!- !�+�-��+���-"�XML����-"�-��8���?��@� 282

    ��-!�+���:+����%#'!��XML. . . . . . . . 283

    ����'�"��� 1: �#!�!#8�#!#8����#�#!;-�H������

    XML . . . . . . . . . . . . . . 284

    ����'�"��� 2: �#!��!�-���#!XML�8��

    $��������������"XML . . . . . . . . . 284

    ����'�"��� 3: �#!��?-"�-���#!XML���-�H��+��

    ��$������ XML . . . . . . . . . . . 285

    ����'�"��� 4: �#!�!:���$:#�;����8��8-��

    �#!XML �"+- !�+�-��+����XML schema . . . 286

    ����'�"��� 5: �#!� �8��#?":+�)������XSLT 288

    �#!��!������XML . . . . . . . . . . 291

    �#!-?���$������ XML�8���#!#8������+�� . . . . 292

    �#!��!��8��$������ XML . . . . . . . 292

    �#!:�-$!#'�$%# XML . . . . . . . . . 293

    3N8������#!-�+�?!� SQL/XML�%#'!���#!�!#8$�#

    XML . . . . . . . . . . . . . . . 295

    ��:�+�#8: �!#8-���#!XML":+$�#����##��#!#8

    -"��+: . . . . . . . . . . . . . . 296

    ��:�+�#8: �!#8-���#!XML":+$�##��#!#8

    %#�:��#� . . . . . . . . . . . . 297

    ��:�+�#8: �!#8-���#!XML":+$�#����##��;:�#

    !#8���������-���� null. . . . . . . . . . 298

    ��:�+�#8: �#!� �8��#?":+�)������XSLT . . 299

    ��:�+�#8: �#!�� XSLT - �-�H����#!�"!� ��� 301

    ��:�+�#8: �#!�� XSLT�%#'!���#!���- ���+������ 303

    ��:�+�#8: �#!�� XSLT -?A���� namespace ��� 304

    ��$:!?�#!�#����%#$�]�%#'!���#!� �8��#?-��

    �#!XML. . . . . . . . . . . . . 308

    �#!�"�#!�������!?�-&`��3N8������#!-�+�?!�

    SQL/XML . . . . . . . . . . . . 308

    �#!�"�%#"��XML . . . . . . . . . . 309

    $:#������#8��-���#!XML'��8#�����"-�H�

    ��"j8�������� . . . . . . . . . . 311

    ���"������%#'!���#!�"-�H�-���#!XML�8�A��

    ;#:! . . . . . . . . . . . . . . 312

    �#!��?-"������XML . . . . . . . . . . 312

    �#!�������XML#��#!#8 . . . . . . . 313

    ���-�H�XML schema . . . . . . . . . . . 313

    ��:����������#`#� !��!���8��H??��-$��� . . . 314

    $������ XML��!�����?-"�����H??��-$���

    CLI . . . . . . . . . . . . . . 315

    �#!"j8�����XML����H??��-$���CLI . . . . 316

    �#! !�#&��:� !���� XML����H??��-$���

    SQL���N8 . . . . . . . . . . . . 317

    ��:�+�#8: �#!�#8;j8��:� !���� XML����H?

    ?��-$��� SQL���N8 . . . . . . . . 318

    $%#���%#������������%#'!���#!?��#��H??��

    -$��� SQL���N8��:":+XML . . . . . . 319

    vi IBM i: >#������ �#!� !��!�SQL

    ||

    ||

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    ||

    ||

    ||

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    ||

    ||

    ||

    ||

    |

    ||

    |

    ||

    ||

    |

    ||

    |

    ||

    ||

    ||

    ||

    ||

    |

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

  • �#!!��$�# XML��SQLDA . . . . . . 319

    Java . . . . . . . . . . . . . . 320

    �����XML����H??��-$��� JDBC . . . . 320

    �����XML����H??��-$��� SQLJ . . . . 326

    !���� . . . . . . . . . . . . . . 329

    ��:���������XML��SQL �?!K�-"�!� . . . 329

    ��:������������"�����XML��!�����#+��� 330

    �#!-�#!'�������XML. . . . . . . . . . 335

    ��$:!?�#!�#���#!-�#!'��-�A��-�H�'!A���8��#�

    �����XML . . . . . . . . . . . . 335

    ��$:!?�#!�#���#!-�#!'���%#'!�����?����

    ���XML��>#������ . . . . . . . . 335

    ��$:!?�#!�#���#!-�#!'��-?A��"j8�����

    XML���#�>#������ . . . . . . . 336

    ��$:!?�#!�#���#!-�#!'���%#'!���#!��8��

    ���XML��?#!#��-��!�!���� . . . . . . 336

    ��$:!?�#!�#���#!-�#!'���%#'!�������

    XML����H??��-$��� JDBC��SQLJ . . . 336

    ���!����8�#!-�#!'��XML���#!� �8��

    ����'- ��%#"�� . . . . . . . . . . . 337

    �;#��#!���#!-�#!'���%#'!�����?����8�����

    XML���-�#!'����:��>#������ . . . . . 337

    �;#��#!���#!-�#!'���%#'!�����?����8�����

    XML���-�#!'���#+�����:��>#������ . . 339

    �;#��#!��%#��8�#!-�#!'���%#'!���#!"j8��

    ���XML":+ serialization ��� implicit . . . 341

    �;#��#!��%#��8�#!-�#!'���%#'!���#!"j8��

    ���XML":+XMLSERIALIZE���explicit . 344

    �#!��H?�#!-�#!'���A�����CCSID���- ����%#'!��

    �����XML���-�H�):. . . . . . . . . . 346

    �#!��H?CCSID����A���#!-�#!'���%#'!�������

    XML -�#��?������"�%#"����: . . . . . . . 346

    �#!���8�+�XMLschema����%#'�#+-'�� !���):

    ��: . . . . . . . . . . . . . . . 347

    �#!���8�+�-���#!XML":+XML schema����%#

    '�#+-'�� !���):��: . . . . . . . . 347

    �#!�8�-��+����#!- 6"��8#�XML schema

    �%#'!���#!���8�+� . . . . . . . . . . 347

    K�!���%#'!���#!���8�+�XMLschema����%#'�#+

    -'�� !���):��: . . . . . . . . . . 348

    '�#+-'�� !����%#'!���#!���8�+�XML . . 348

    ���%#'�"$�������������-����8'�#+-'��

    !����%#'!���#!���8�+�XML . . . . 349

    '�#+-'�� !������- ���H��!���:�� . . . . 349

    '�#+-'�� !������- �����-�������Kj�8)"�"

    �$!8�!#8��: . . . . . . . . . . 349

    '�#+-'�� !������������ . . . . . 350

    '�#+-'���#!���8�+�XML-���!� . . . 350

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:defaultSQLSchema . . . . . . . 352

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:rowSet . . . . . . . . . . . 354

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:table . . . . . . . . . . . . 358

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:column . . . . . . . . . . . 361

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:locationPath . . . . . . . . . 363

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:expression . . . . . . . . . . 366

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:condition . . . . . . . . . . 370

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:contentHandling . . . . . . . . 374

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:normalization . . . . . . . . . 378

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:truncate . . . . . . . . . . . 381

    '�#+-'�� !����%#'!���#!���8�+� db2-

    xdb:rowSetMapping . . . . . . . . 383

    $�+�-:�!�"�%#'!���#!���8�+�XMLschema����%#

    '�#+-'�� !���):��: . . . . . . . 386

    �#!$A���#?��:���8CDATA���#!���8�+�

    XML����%#'�#+-'�� !���):��: . . . . . 387

    $�#NULL����!�8:�#8���#!���8�+�XML����%#

    '�#+-'�� !���):��: . . . . . . . . 387

    !#+�#!�!:����%#'!���#!���8�+�XMLschema

    ����%#'�#+-'�� !���): . . . . . . . . 389

    ��:�+�#8�#!��H?�%#'!���#!���8�+�XMLschema

    ����%#'�#+-'�� !���):��: . . . . . . . . 389

    '�#+-'�� !�����8 complex type���)"!���# 389

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    �#!��H?���$������ XML . . . . . . . . 396

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    $�#�����H?����#!#8-"��+: �%#�'-��"�;:-"��+: . . 398

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    $�#�����H?����#!#8-"��+: �%#�'-��"�;:%#�:��#� 399

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    $�#�����H?����#!#8 %#�:��#�. . . . . . . 401

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    �#!�"�����$�#%#�:��#������H?����#!#8-"��+: . . 403

    ��:�+�#8'�#+-'�� !����%#'!���#!���8�+�:

    $�#%#�:��#�#�$��-�H�K���������#8��� ;����H?

    ����#!#8-"��+: . . . . . . . . . . . 405

    �#!��] vii

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    ||

    |

    ||

    ||

    |

    ||

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    ||

    |

    |

    ||

  • $:#�-�#���)"��8XML schema������"��8 SQL

    �%#'!���#!���8�+� schema����%#'�#+-'�� !���

    ):��:. . . . . . . . . . . . . . 407

    ��%#��"������8$���%#'!����#!���8�+�XML

    schema����%#'�#+-'�� !���): . . . . . . 415

    Schema�%#'!��'�#+-'�� !����%#'!���#!���8

    �+�XML . . . . . . . . . . . . 416

    �#!�� SQL ����#?�:"�����������#8��� . . . . . 417

    �#!��-$�!�-K�!� . . . . . . . . . . . . 418

    !-��-$�!�-K�!� . . . . . . . . . . 418

    ��:�+�#8: �#!��-$�!�-K�!� . . . . . . . . 419

    ������� 1: �#!�%#'�"-$�!�-K�!� . . . . . . 422

    ������� 2: �#!- 6"-$�!�-K�!� . . . . . . . 423

    ������� 3: �#!!�����8�����8�%#-�A��;j8�"������"��8

    ����� . . . . . . . . . . . . . 423

    ������� 4: �#!"j8$�#�;:�"+��-$�!�-K�!� . . . 424

    ������� 5a: �#!��?-"��;: N���� . . . . . 425

    ������� 5b: �#!���;: N���� . . . . . . 425

    ������� 6: �#! 6"-$�!�-K�!� . . . . . . . 426

    �#!��$%#���8 FETCH���'�#+�;: . . . . . 426

    �#!"j8�������� (FETCH)���'�#+�;:�"+

    ���-!+��$!8�!#8���� . . . . . . . 427

    �#!"j8�������� (FETCH)���'�#+�;:�"+

    ��?A�����'��:+-�H���8�;: . . . . . . . 429

    +����8#���-$�!�-K�!����- 6"�+�� . . . . . . 431

    ��H??��-$���Dynamic SQL . . . . . . . . 432

    �#!���������#!!����H??��-$��� SQL���)"

    �#��� . . . . . . . . . . . . . . 433

    CCSID��8$%#���8 SQL���dynamic . . . . . 433

    �#! !�:���$%#���8 non-SELECT . . . . . 433

    �#!��$%#���8 PREPARE��EXECUTE . . . 434

    �#! !�:���$%#���8 SELECT���#!��

    descriptor . . . . . . . . . . . . 435

    $%#���8 SELECT���!#+�#!$8��� . . . . . 435

    $%#���8 SELECT���varying-list . . . . . 436

    SQLdescriptor area . . . . . . . . . 437

    !� �����8SQLDA . . . . . . . . 437

    ��:�+�#8: $%#���8 SELECT -?A���"�!!'��:+-�H�

    �%#'!�� SQLDA . . . . . . . . . . 440

    ��:�+�#8: $%#���8 SELECT����� SQLdescriptor

    ���;���"�!!��: . . . . . . . . . . 445

    ��:�%#-$!A��8'�#+?#!#��-��!� . . . . . . 448

    �#!�� SQL�������� . . . . . . . . . 450

    �#!-!�������8#�SQL�������� . . . . . 451

    �#!��3N8��� entry $%#���8. . . . . . . . . 452

    �#!���$%#���8 (Prompting). . . . . . . . 453

    �#!�!:���):+#�!��. . . . . . . . 454

    �'�"�#! !�:���$%#���8 . . . . . . . 454

    -$�+:!�+��+ . . . . . . . . . . . 454

    �#!-!�+��%#8#�CREATETABLE . . . . 455

    �#! �������DBCS . . . . . . . . 455

    �#!��3N8�����!#+�#!���-�A�� . . . . . . . 456

    ��:�+�#8: �#!��3N8�����!#+�#!���-�A�� . . . 456

    !#+�-��+"-K�!�:��-K���� . . . . . . . . 458

    SQL��������������+�� . . . . . . . . . 460

    �#!��-K���� SQL������+�� . . . . . . . . 460

    �#!��$A�-K���� SQL . . . . . . . . . 460

    �#!-�#��8#�>#���������!����":+ SQL�����

    ��� . . . . . . . . . . . . . . 461

    �#!����: !�:���$%#���8 SQL . . . . . . . 463

    �#!!��$%#���8'��8-��"����"?�#" . . . . . . 465

    commitment control ����: !�:���$%#���8 SQL 465

    �#!��"8!#+�#!��(����%#'!����: !�:���$%#

    ���8 SQL . . . . . . . . . . . . . 465

    3N8�������8>#������-��8���?��@�����!#+��SQL 468

    DB2 for i �#!��������>#������-��8���?��@����

    �!#+ . . . . . . . . . . . . . . 469

    DB2 for i � !��!���:�+�#8>#������-��8���?��@����

    �!#+ . . . . . . . . . . . . . . 470

    �#!���������#!��8#��?H�-���8 SQL . . . . 471

    $%#���8 SQL���;����8���?H$-� SQL . . . . . 472

    ��$:!?�#!�#���#!�!#8 SQL�?H�-� . . . 472

    �#!�'���@� CRTSQLPKG . . . . . . . 472

    �#!�!#8�?H�-���>#���������)����� DB2 for i 472

    ?#!#��-��!� Target release (TGTRLS) . . . 473

    SQL statement size . . . . . . . . . 473

    $%#���8���)��%#- ���8���?H�-� . . . . . 473

    ���"�H��-H����?H�-� . . . . . . . . 474

    � !��!� ILE��� !��!�-K�!�:�� . . . . 474

    �#!-�A�������"+�!#8�?H�-� . . . . . . 474

    '��:+��88#� . . . . . . . . . . 474

    �#!�!#8�?H�-������$�� . . . . . . 475

    -�-�� (Lebel) . . . . . . . . . . 475

    ��-$H������"$��8��� . . . . . . . . 475

    SQL���#!-!�+�K�%# . . . . . . . . 475

    ��$:!?�#!�#-���+:���CCSID�%#'!�� SQL . . . 476

    �#!�"�#!�#!-�A�������� activation group . . . . 476

    K�!���$"�%#'!�� PGM1 . . . . . . . . 477

    K�!���$"�%#'!�� PGM2 . . . . . . . . 477

    K�!���$"�%#'!�� PGM3 . . . . . . . . 478

    �#!-�A������'�#+$!��8) +�8>#������-��8���?��@�

    -"�+:��� . . . . . . . . . . . . . 480

    �#!�"�#!-�A�������"+��+�%#'!�� activation group

    "�3���� . . . . . . . . . . . . . 481

    viii IBM i: >#������ �#!� !��!�SQL

    |

    |

    ||

    |

    ||

    |

    ||

  • �#!�"�#!�#!-�A�������"+��+�%#'!�� activation

    group���)�����"�3���� . . . . . . . . . 482

    �#!������������!#+ . . . . . . . . . 482

    �#!%#��� !-����8�#!-�A������ . . . . . 483

    ��%#��"��8��:$:�$���#!-�A����������:$:�$��

    Commitment. . . . . . . . . . . . 486

    �#!%#����;#���8�#!-�A������ . . . . . 486

    ��$:!?�#!�#���#!-�A������'��:+�#!�%#8#�

    ����!#+ . . . . . . . . . . . . 488

    �#!������"�#!-�A������ . . . . . . . . . 489

    '��:+�#!�%#8#�����!#+ . . . . . . . . 489

    �#!�"�#!�#!-�A������'��:+�#!�%#8#����

    �!#+ . . . . . . . . . . . . . 490

    �#!�!:����;#���8�#!-�A������. . . . . 492

    -$�!�-K�!� ��$%#���8���-�!�+�): . . . . . . 493

    ��$:!?�#!�#�%#'!���?!K�-"�!���8DRDA�������j�

    ): . . . . . . . . . . . . . . . . 493

    WebSphereMQ?!�����DB2 . . . . . . . . 494

    ��$:#�WebSphereMQ . . . . . . . . . 494

    �#!�"�#!��$:#�WebSphereMQ . . . . . 494

    -K�!�:��DB2MQ . . . . . . . . . 495

    ��+�#+DB2MQ . . . . . . . . . 496

    3N8�����DB2MQ . . . . . . . . . . . 497

    �#!?j�8?#DB2MQ . . . . . . . . . . 498

    �#!#8DB2MQ . . . . . . . . . . . . 499

    �#!� �8DB2MQCCSID . . . . . . . . 505

    WebsphereMQ transactions . . . . . . . . 506

    �#!��8��$:#�?A��>#�":+WebSphereMQ . . . . 508

    �#!��8��$:#�":+WebSphereMQ . . . . . . 509

    �#!!����$:#�":+WebSphereMQ . . . . . . 509

    �#:-�A�����������H??��-$��������H??��-$���":+

    WebSphereMQ . . . . . . . . . . . . 510

    �#!�#8��8 . . . . . . . . . . . . . . 511

    DB2 for i �#!#8��:�+�#8 . . . . . . . . . 511

    �#!#8����(DEPARTMENT) . . . . . . 512

    DEPARTMENT . . . . . . . . . 513

    �#!#8?���8#� (EMPLOYEE) . . . . . . 513

    EMPLOYEE. . . . . . . . . . . 515

    �#!#8�#?;�#+?���8#� (EMP_PHOTO) . . . 516

    EMP_PHOTO . . . . . . . . . . 517

    �#!#8 !:���?���8#� (EMP_RESUME) . . . 517

    EMP_RESUME. . . . . . . . . . 518

    �#!#8?���8#�������!!��$!8�#!

    (EMPPROJACT) . . . . . . . . . . 518

    EMPPROJACT . . . . . . . . . . 519

    �#!#8�$!8�#! (PROJECT) . . . . . . . 522

    PROJECT . . . . . . . . . . . 523

    �#!#8���!!��$!8�#! (PROJACT). . . . . 524

    PROJACT . . . . . . . . . . . 525

    �#!#8���!!� (ACT) . . . . . . . . . 527

    ACT . . . . . . . . . . . . . 528

    �#!#8�#!�%#'�"-:�#-!�+� (CL_SCHED) . . . 529

    CL_SCHED . . . . . . . . . . . 529

    �#!#8 In-tray (IN_TRAY) . . . . . . . 529

    IN_TRAY . . . . . . . . . . . 530

    �#!#8�$!8�!#8 (ORG) . . . . . . . . 531

    ORG . . . . . . . . . . . . . 531

    �#!#8?���8#� (STAFF) . . . . . . . . 532

    STAFF . . . . . . . . . . . . 532

    �#!#8+�"�#+ (SALES) . . . . . . . . 534

    SALES . . . . . . . . . . . . 534

    �#!#8��:�+�#8XML. . . . . . . . . . 536

    �#!#8��������� (PRODUCT) . . . . . . 536

    PRODUCT . . . . . . . . . . . 536

    �#!#8�����8KA�� (PURCHASEORDER) . . . . 538

    PURCHASEORDER . . . . . . . . 538

    �#!#8���$# (CUSTOMER) . . . . . . . 543

    CUSTOMER . . . . . . . . . . 543

    �#!#8�$�#�H�� (CATALOG) . . . . . . 545

    CATALOG . . . . . . . . . . . 545

    �#!#8���"'# (SUPPLIERS) . . . . . . . 546

    SUPPLIERS . . . . . . . . . . . 546

    �#!#8$��8���$# (INVENTORY). . . . . . 546

    INVENTORY . . . . . . . . . . 546

    �#!#8�����������8���"'#

    (PRODUCTSUPPLIER) . . . . . . . . 547

    PRODUCTSUPPLIER. . . . . . . . 547

    DB2 for i$%#�@��#+��8$%#���8 CL . . . . . . . 547

    ������.�������� . . . . . . . . 549

    �����-���+:���� !��!���8���-��!�-3� . . . . . . 551

    -$!A��8'�#+�#!$# . . . . . . . . . . . . 551

    ���%#'�"��-8A���)� . . . . . . . . . . . 551

    �#!��] ix

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    |

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    ||

    |

    ||

    ||

  • x IBM i: >#������ �#!� !��!�SQL

  • ��������SQL

    >#������DB2® for IBM® i �� �#!�����������'�#�'�#+�%#'!�� StructuredQuery Language (SQL)

    ��:�+�#8$%#���8 SQL�����"8):��'�:�������8#��#!#8��:�+�#8 �"+;A�:�#�����`�"�8���:

    v ��:�+�#8"�8���#:��"8):����#:�:"���SQL��������'!A�;������j�):�� ILEC'!A���COBOL. �� EXECSQL��END-EXEC -?A��$���$%#���8 SQL ��� !��!�COBOL.

    v SQL������:�+�#8��"8):���!!��"��#8 �"+$%#���8����$%#���8�+��$���!!��"���.

    v $�+�-:�!�" SQL;��))���):.

    v �A����8�#!#8��:�+�#8�����������CORPDATA. �%#'!���A���#!#8Kj�8)��?����#!#8��:�+�#8 $:!�����������$���!#8�j��.

    v $������������#!$%#�:��+����:8-�H� () ��:8-�H��#� � []

    v ���#!��'����#!���8�A�� SQL.

    v ���#!���H�?���?!�$��)?-��!� APOST��APOSTSQL��:�#)������H�?���"�3������COBOL. literal ��8��!�8����!�#+��$%#���8 SQL��$%#���8�#`#����;��$���":+-$!A��8'�#+��] !�#&-"��+: (’).

    v ���#!���#!-!�+8�%#"�� *HEX, -:�������#!�8- ��+�#8�A��.

    -�A���"�H�#������:�+�#8�����#8) #������>#�-'��#���, ���#!�8):.

    -�A��8#�'�:�������):�%#'!����H??��-$���� !��!�-��!�, ��:�+�#8��:��']�j8��"8):�����`��������j�):����H??��-$���

    � !��!�. �+�#8)!�H�#�, ��:�+�#8%#�:��#��#�#!;�%#�#!- ���+�� �8)"-�H���+��!����������":+�#!�� SQL

    ��������. ):+#�!����8$%#���8 SQL, -�A���� SQL��������, �����#8-�H���+#�!� ���$%#���8-"�+:���-�A������+����

    � !��!�.

    ��������: ":+�#!���$"��:�+�#8, $�����8��-8A���)���8 “���@���!'�� �������;�+�;�8” ��'�# 548.

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

    �#!� !��!���8 SQL���N8

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

    “DB2 for i �#!#8��:�+�#8” ��'�# 511

    �#!#8��:�+�#8���) ���;���#8��8����8#���'�:���#!� !��!�SQL���#!�#8��8 SQL

    �#!�#8��8DB2�%#'!�� i5/OSSQL

    ������������ IBM i7.1

    ��#�-���+:���������'��'!A���������- ���+�� �8�+�#8�#��%#'!�������'�:�� SQLprogramming

    ©������@�_��8 IBMCorp. 1998, 2010 1

  • �������� !"�#��$�����%�$�����

    $���#�#!;��8$A���"����?@�#� stored procedure ) +�8� !��!�)" ���'� !��!�-!�+�����"����?@����� '#���8�#!��

    ���-?���-��� � !""� “�#!-��+�� !��!�'!A� SQL �?!K�-"�!�-?A��!����"����?@� #� stored procedure” ��'�# 187

    XML

    ���"�����XML;��-?����'��� SQLKj�8!:�;j8�#!�"�#!�#+����8$�#XML���#!���8�+�XMLschema'#���8�#!��

    ���-?���-��� � !""� “$%#���8 SQL��3N8����� SQL/XML” ��'�# 279

    ��&�'���!()��!

    36�"��?!K�-"�!� $A�!�����#8����������- ���-��+�-?A��� �8��#?$�# ��$������-"��+: -�A��$�#��$������- ���+�� �8) '!A�

    $�#�'��;����!� �?!K�-"�!�36�"�;��-!�+���8#��%#'!������$�# ���#�#!;� �8��#?$�#���� (-�#!'��)":+:�@��#!�"

    #����� $�#���-�#!'��;��-�H�): -�A��$�#;��-!�+�#�$������ �?!K�-"�!�36�"�;��-!�+���8#��%#'!������$�# Kj�8-�#!'��):

    ����8;�"!'������) - �$�#-"��'#���8�#!�����-?���-��� � !""� “�#!��+#��?!K�-"�!�36�"�” ��'�# 30

    �����#$MERGE

    $%#���8MERGE�#�#!;�%#�#��-?A����!��;:�'��'!A���?-"��;:������+�����#!#8'!A������8�+�#8�"�+�#8'�j�8 �j���+�����:�#

    �;:-'��#�������+����:���#!#8'!A������8'!A�)�� '#���8�#!�����-?���-��� � !""� “�#!��#������” ��'�# 124

    *���������

    ��:� !�������#�#!;;���!#8�j����;������ SQL'#���8�#!�����-?���-��� � !""� “�#!�!#8���#!����:� !���

    ���” ��'�# 53

    ��'�%!��SQL ��&�'���!

    ���"����� ����-!+�;��-?���):�%#'!������ SQL �?!K�-"�!� �%#'!�������-?���-��� � !""� “��:����������-!+��� SQL

    �?!K�-"�!�” ��'�# 246�� “�#!"����!���� SQL” ��'�# 248

    WebSphere®MQ��+�����DB2

    DB2�"-�!�+�Application Programming Interface �'���!���"�#!��$:#�WebSphereMQ��#���"��83N8������#+

    �����������%#'�"-�8 Kj�8-!�+�:�# 3N8�����DB2MQ$���#�#!;��3N8�����-'��#�����$%#���8 SQL -?A��!:��#!-�#;j8>#������

    DB2":+�#!�"�#!��$:#�WebSphereMQ'#���8�#!�����-?���-��� � !""� “WebSphereMQ?!�����DB2” ��'�#

    494

    ���'��#%���$(,$�!����-#�/�������0+��3� SQL programming

    v �H�?�������������H��-H���������+��)";��-?����'���$%#���8 DDLCREATE%#�:��#� � !""� “�#!- ���+��H��-H���������+��”��'�# 53

    2 IBM i: >#������ �#!� !��!�SQL

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

    |

  • �6 �����3���0+����������� ��-�"�#'��#%���$

    -?A����:+$���'"����Kj�8���#!- ���+�� �8�#8"#�-�$��$ information center ��:

    v !� �#? -?A���%#-$!A��8'�#+:�# ����"$A�������'�� '!A���������- ���+�� �8

    v !� �#? -?A���%#-$!A��8'�#+:�# ����"$A��"������"��8������'�� '!A���������- ���+�� �8

    ��)3�� PDF$���#-'H� revision bar (|) ��� !+���"#�K#+��8������'������������- ���+�� �8

    '#���8�#!$�'#�����-���+:���'�:�����)!�'�� '!A����- ���+�� �8��!������� � !""� ����j���$:#�;j8����

    �(�! PDF���������������SQL

    $���#�#!;"���?��?�)3�� PDF��8��������)"

    '#���8�#!"� '!A�"#:���'�"-:�!���� PDF��8-���#!��� �'-�A�� SQLprogramming (����#" !�#�1,714KB)

    ������"8��(�! PDF

    ;#��8�#!����j�)3�� PDF�8���-:�!���-������8$��-?A���%#�#��#�'!A�?��?��#+'��8:

    1. $����:#�����8�� PDF ���!#:-K�!���8$��

    2. $�������H�?����������j� PDF�����$��

    3. �%#�#8) �;j8)"-!H���!����$����8�#!����j�)3�� PDF

    4. -�A�������

    �������!���Adobe®Reader

    $��%#- ���8��"���8 AdobeReader ��!����8$�� -?A��"�'!A�?��?�)3�� PDF -'��#��� $���#�#!;"#:���'�"�%#-�#���)��

    ��$�#���#+#�-:H�)K�� Adobe (http://get.adobe.com/reader/)

    �"����3� DB2 for i Structured Query Language

    StructuredQuery Language (SQL) - ��#`#�#�!>#��%#'!���#!�%#'�"���"�#!�������>#������-��8���?��@� '�:��

    -'��#����@��#+;j8�#! !���� SQL��8 System i® �"+ ��>#������DB2 for i �� )�-K���� !��!� IBMDB2Query

    Manager and SQLDevelopmentKit for i

    SQL�"�#!�����Kj�8�+�������%#��8�����-��8���?��@�. �#�#!;�%#$%#���8 SQLN8�8���#`#������8, '!A��%#�#�"-�!�+����

    )"�#�������!��'!A��%#�#!����������. �%#'!�������-���+:��� SQL���N8 �'"� Embedded SQLprogramming

    SQL !���":+$%#���8����$:#�����@��#+;j8���8���$����8"%#-����#!����������>#��������-8A���)���#8����%#�'

    $����8�#!"%#-����#!"�8���#:.

    SQL�#�#!;-�#;j8�������>#������-��8���?��@����!���� �"+�� IBMDistributedRelationalDatabaseArchitecture™

    (DRDA®)

    �#!� !��!�SQL 3

    http://get.adobe.com/reader/

  • ������������������

    � !��!���8>#����������!#+

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

    “3N8�������8>#������-��8���?��@�����!#+��SQL” ��'�# 468

    ��������������������������� !���) ":+��" SQL�H��-H�������!#+�+����!��$��?�:-��!����-�A������;j8���

    �����.

    ����6� SQL

    DB2 for i SQL !���":+��:�'���'�#+��:� -��� �#!��������!��)�����8 SQL?!�$��)?-��!� �� SQL��������

    v ��:��������!��)��� SQL

    !��)��� SQL:�-$!#'�$%#���8 SQL��!��$%#���8 SQL �"�#!�����������$A� ��:�'�j�8��8)�-K���� !��!� i5/OS®

    ������]#��'��H??��-$��������$%#���8 SQL�#�#!;!��)"��!�� �"+)����8��"���8)�-K���� !��!� IBMDB2Query

    Manager and SQLDevelopmentKit for i

    v SQL?!�$��)?-��!�

    SQL?!�$��)?-��!���������$%#���8 SQL���N8�+�����?!�$��)?�����#`#���� �#`#���) ���- ��#`#���)"!���#!

    ��������:

    – ILEC

    – ILEC++

    – ILECOBOL

    – COBOL

    – PL/I

    – RPG III (��:�'�j�8��8RPG)

    – ILERPG

    SQL?!�$��)?-��!���8�#`#����-�!�+���H??��-$���� !��!������$%#���8 SQL$��)?-��!��#`#����j8$��)?��

    K�!��� !��!��������?!�$��)?�� �%#'!�������-?���-���-���+:���?!�$��)?-��!� � !""�'�:�� �#!-�!�+����#!

    !��� !��!�":+$%#���8 SQL ��� !��!���8 SQL���N8 ��:��������?!�$��)?-��!�$A���:�'�j�8��8)�-K���� !��!�

    IBMDB2QueryManager and SQLDevelopmentKit for i

    v ���-��!�-3�����������8SQL

    ���-��!�-3�����������8SQL�%#�'$���#�#!;�!#8��!��$%#���8 SQL'#���8�#!�!#������-?���-���-���+:���

    SQL�������� � !""���� “�#!�� SQL��������” ��'�# 450SQL��������$A���:�'�j�8��8)�-K���� !��!�

    IBMDB2QueryManager and SQLDevelopmentKit for i

    v !���$!� �� SQL

    '�#��#8 !���$!� �� SQL ��System iNavigator �'$���!#8 ��)� !�� ���� N]'#-�A��8��-���+:����$!� ��$%#���8 SQL

    v $%#���8 CL�%#'!�� !��$%#���8 SQL (RUNSQLSTM)

    $%#���8 RUNSQLSTM�#�#!;��-?A��!����"$%#���8 SQL���-�H�):�� )3����(���'!A�)3�� stream��(���'#���8�#!�����

    -?���-���-���+:���$%#���8 RUNSQLSTM� !""���� “�#!����: !�:���$%#���8 SQL” ��'�# 463

    v DB2QueryManager

    4 IBM i: >#������ �#!� !��!�SQL

  • DB2QueryManager �����-��!�-3�������������%#8#��"+$%#���8 Kj�8���]#��'$���!#8����� -?�������� !��`#�����

    ��!��!#+8#���>#������)" QueryManager - � ��:�'�j�8��8)�-K���� !��!� IBMDB2QueryManager and SQL

    DevelopmentKit for i '#���8�#!�����-?���-��� � !""���� QueryManagerUse

    v ���-��!�-3�SQLREXX™

    ���-��!�-3�SQLREXX�%#�'$��!��$%#���8 SQL ���?!K�-"�!� REXX�%#'!�������-?���-���-���+:����#!��$%#���8 SQL

    ���?!K�-"�!� REXX � !""� �#!�$"$%#���8 SQL ����H??��-$���REXX�������� !��!���8 SQL���N8

    v SQL call level interface

    >#������DB2 for i �������� SQL call level interface Kj�8+���'�����#`# ILE �"�#�#!;-!�+���3N8����� SQL �"+

    �!8��#��#!-!�+��� -K�!�:��� !��!�����"-�!�+��"+!�� -�A���� SQL call level interface $���#�#!;��8#�3N8�����

    SQL���8'�")"�"+)��%#- ���8?!�$��)?�� ���$A���"$%#���8�#�!>#���-!�+�-?A��-�!�+�$%#���8 SQL!��$%#���8 SQL"j8�;:

    ��8���������#���%#���!���83N8�����!"����8 -��� �#!-!�+��� �$�#�H�����#!-�A����+8��:� !� !��!�) +�8

    $��������8-�#��?��

    �%#'!�� !#+�-��+"�������!����83N8��������8'�"������+����):+#�!�� � !""�'�:�� SQL call level interface ����:���8

    >#��������8 i5/OS InformationCenter

    v Process ExtendedDynamic SQL(QSQPRCED)API

    application programming interface (API)����%#�' SQL�#�#!;�%#8#����)"�#���)" $���#�#!;�"-�!�+�$%#���8

    SQL ):�� SQL�?H�-���!��$%#���8�"+�#!�� API ��� $%#���8���;���"-�!�+�- ��?H�-�":+API���+�8$8�+�� �

    �!���8�?H�-�'!A�$%#���8;�������) �%#'!�������-?���-���-���+:���QSQPRCEDAPI � !""�'�:�� Process Extended

    Dynamic SQL(QSQPRCED)API �%#'!����������:) -���+:���API � !""�'�:��Application programming interfaces

    v SyntaxCheck SQLStatement (QSQCHKS)API

    ):+#�!�� API �!:���$%#���8 SQL�%#'!�������-?���-���-���+:���QSQCHKSAPI � !""�'�:�� SyntaxCheck SQL

    Statement (QSQCHKS)API �%#'!����������:) -���+:���API � !""�'�:��Application programming interfaces

    v DB2Multisystem

    $�����`������8!�� ������#!�%#�'�������8$���!#+�+�#8���:;j8��'�#+ !��'#���8�#!�����-?���-���

    � !""� DB2Multisystem

    v DB2SymmetricMultiprocessing

    $�����`������8!�� ������#!�� query optimizer ��:�@��#!-?���-������#!-!�+������":+�#! !�:������

    ��#�Symmetricmultiprocessing (SMP) - �!� �����8�#!-�#��8#������#���!��-"��+: ���Kj�8�?!-K�-K�!�'�#+

    ��: (CPU����: !�:��� I/O)������8��8#�!�K�!����8'��:+$:#�%# ��"�����%#8#�!�:���� -?A���')"�#Kj�8����?@�

    �+�#8-"�+:�������"�#+ �#! !�:��������#�'�#+$:#�:�#��:�"�#!>#�������#�#!;!�8!���#!�A�$�#���:

    !�:���!��)"�#��:�#'�j�8��: ('!A����8'�")?!�����'#���8�#!�����-?���-��� � !""� �#!$:�$�� �#!

    !�:��������#��%#'!��-$�+:!� �������'�:�� !���@��#?�#!�%#8#���8>#���������#!��8#�-$�+:!��')"��"�

    �����"

    :��0+��3�'�6$������ ! SQL������"!';�������

    �����%#��8�����-��8���?��@� ;A�:�#��������8'�"���+�����#!#8DB2 for i �H��-H��� ;���!#8��!��`#):��>#�- ��H

    ��-H���!��

    �#!� !��!�SQL 5

    http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/topic/rzatc/sc415212.pdf

  • �#!#8���) �����"8$:#����?��@�!':�#8&�?��-(?#��8!����&�?��-(?#��8>#������-��8���?��@�.

    �������� 1. �����������������������������������SQL

    �������� � �� �������� SQL

    !�����. �"������H��-H���������?��@�������'$���#�#!;$�'#�H��-H���)" ":+�A����8�H��-H���.

    "��"#�. !���":+)��!#!�, -�!����, journal receiver,�$H��#�H�� SQL , ���#!:�;j8?�#���!������. ������

    �"������H��-H���������?��@�������'$��$�'#�H��-H���)"":+�A��.

    !$�$%�&�. -KH���8-!H�$�!�". �����. -KH���8$���������;:.��'�&���(. -KH���836�"�. ")�. ��:����- ���:�����8�#!#8 Kj�8-KH���8$������-!�+8�%#"��

    �+��.$%(�. ����!'�j�8��:�j��) ��8��������-���+:��8�� !-�������'�j�8 !-��.

    &�����. ��:����- ���:���8��8�#!#8 !-�������'�j�8 !-��.

    !$��*&�. �����+��+��836�"���-!H$$�!�"��8)3��36��$��'�j�8)3���j��) .

    ������. -KH�+��+��8$���������;:��8�#!#8'�j�8�#!#8�j��) .

    "�'���* SQL���"��8�H��-H��� ������#!�����#!!��$%#���8 SQL . "�'���*. ���"��8�H��-H��� ������#!�����#!!��$%#���8 SQL .+-�!$�#/�67� 7;����;�������!(�������#����������!#+

    SQL����������*�

  • v $%#���8�#`#���� SQL���N8

    &>����� SQL schema &>���������/ SQLALTER FUNCTIONALTER PROCEDUREALTER SEQUENCEALTER TABLECOMMENT ONCREATE ALIASCREATE FUNCTIONCREATE INDEXCREATE PROCEDURECREATE SCHEMACREATE SEQUENCECREATE TABLECREATE TRIGGERCREATE TYPECREATE VARIABLECREATE VIEWDROPGRANTLABEL ONRENAMEREVOKE

    ALLOCATE CURSORASSOCIATE LOCATORSCLOSEDECLARE CURSORDELETEFETCHFREE LOCATORHOLD LOCATORINSERTLOCK TABLEOPENREFRESH TABLESELECT INTOSET variableUPDATEVALUES INTO

    &>���������-��������/ SQL &>���������7;����?� SQLDELETEINSERTMERGEUPDATE

    CONNECTDISCONNECTRELEASESET CONNECTION

    &>����������� SQL &>������@�7�� SQLCOMMITRELEASE SAVEPOINTROLLBACKSAVEPOINTSET TRANSACTION

    DECLARE GLOBAL TEMPORARY TABLESET CURRENT DECFLOAT ROUNDING MODESET CURRENT DEGREESET CURRENT IMPLICIT XMLPARSE OPTIONSET ENCRYPTION PASSWORDSET PATHSET SCHEMASET SESSION AUTHORIZATION

    &>����� SQL"��!(���� &>�����A�D�+E��� SQL"��FG�ALLOCATE DESCRIPTORDEALLOCATE DESCRIPTORDESCRIBEDESCRIBE CURSORDESCRIBE INPUTDESCRIBE PROCEDUREDESCRIBE TABLEEXECUTEEXECUTE IMMEDIATEGET DESCRIPTORPREPARESET DESCRIPTOR

    BEGIN DECLARE SECTIONDECLARE PROCEDUREDECLARE STATEMENTDECLARE VARIABLEEND DECLARE SECTIONGET DIAGNOSTICSINCLUDESET OPTIONSET RESULT SETSSIGNALWHENEVER

    �#!� !��!�SQL 7

    |

    ||

    |

    |

    |

    |

  • SQL control statementCALL

    $%#���8 SQL�#�#!; ������#!����H��-H������;���!#8�"+SQL!:����836��$��)3��������#:;j8�#+��������$��)3�������!�

    ���-"��+: $%#���8 SQL)���#8��8;j8$%#��+#���?�#���!� interactive data definition utility (IDDU)�%#'!��)3������@��#+

    ":+� !��!� )3������@��#+":+� !��!� !#�- ��#!#8�����$������-"��+:.

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

    “Data definition language” ��'�# 17

    Data definition language (DDL)$A���:� ��8 SQL����!#8 - ���+������H��-H���>#������ �H��-H���>#������ -'��#���

    !���":+�������#!#8�����8�%#"�� �$�#�H��"!!��� �� alias

    “�#`#�%#'!���#!"%#-����#!�����” ��'�# 55

    �#`#�%#'!���#!"%#-����#!����� (DML)$A���:���8 SQL���"%#-����#!'!A�$:�$�������

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

    �#!�#8��8DB2�%#'!�� i5/OSSQL

    �-#���������-���+:���$%#���8 SQLKj�8���#!!��8#�$!��8��#��" ��H??��-$

    ���� !��!���8$���#�#!;-�#;j8?A�����:���(�+ SQL �"+�� $%#���8 GETDIAGNOSTICS

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

    �#!��?A�����:���(�+ SQL

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

    GETDIAGNOSTICS statement

    SQL�C��'@C�*!

    ����������SQL$A� schema -�!���� �$�#�H���#!#8�#��8�����8"!!��� ��%#��"�!��-��!� �%#"�� stored procedure

    3N8�������������%#'�"-�8 ���"��������%#'�"-�8��:� !���������?H�-� SQLSQL�!#8��!��`#�H��-H���-'��#����'

    - ��H��-H���!��

    ������ (Schemas)

    ���������#!�"�������8 SQL�H��-H���������$�������� !���":+)��!#!�, -�!����, journal receiver, �$�#�H

    �����#��?�#���!������

    8 IBM i: >#������ �#!� !��!�SQL

    |

    |

    |

  • �#!�!#8, +#+, '!A�-�H��#!#8, �����8���H��-H���!�� (-���� !��!�)�#):��)��!#!�, !���"�H)" . )3��!�����8

    '�"�#;���!#8'!A�+#+) +�8������SQL'#�������SQL )����?�#���!������. '#�������SQL��?�#���!�

    �������::

    v source physical )3��'!A� nonsource physical )3����������#8�����!#+�#!+��+-"�+:�#�#!;;���!#8, +#+, '!A� -�H�):��������SQL )".

    v -!#)���#�#!;:#8���$��)3����������SQL )"-�A��8#�)3��-'��#����)���#�#!;�@��#+�+����?�#���!������)".

    $���#�#!;�!#8��- �-#��8������)"'�#+���.

    '@��!������*�����'@��!���

    ��������� journal receiver�� ����j��#!- ���+�� �8��8�#!#8�������8��>#������

    -�!������ journal receivers j8�����#! !�:���$%#���8 SQLCOMMIT,ROLLBACK, SAVEPOINT��RELEASE

    SAVEPOINT -�!���� �� journal receivers +�8�#�#!;��8#�- �'���>#��#!�!:���'!A����%#'!�� forward recovery

    '!A� backward recovery

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

    �#!�"�#!-�!����

    Commitment control

    ��*��C��

    �������SQL$A�$��-�H������8�#!#8�������8����@��#+;j8�#!#8�����8"!!��� �?!K�-"�!� 3N8����� �%#"���!��-��!�

    ��:� ! ��%#��" � !��!��?H�-����H��-H��� XSR

    ���������+������"�#!#8�#!�#8��8�#���)��!#!� QSYS��QSYS2 ��SQL schema������:����"��8�;:����!#8�j��#��#

    !#8 catalog����������-���+:����H��-H����� schema

    �$�#�H��;���!#8�j���"+���������-�A��$���!#8 schema$��)���#�#!;��'!A�- ���+��$�#�H��

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

    �$�#�H��

    *���$, �J�, ���������!

    ����� - ��#!�"�#!����������8"#�Kj�8 !���":+�� ��������

    �;:$A���:����- ���:���Kj�8 !���":+$���������8���'�j�8$�������j��) . $������$A���:����- ���:"��8Kj�8 !���":+

    �;:���8���'�j�8�;:�j��) �� !-�������'�j�8 !-��. ��������8'�"��'�j�8$��������8- ������ !-��-"�+:���. �#!#8

    ��SQL$A�36��$��)3�������$�+� '!A�)����$�+��H)".

    materialized query table$A��#!#8��������#!-�H� ��������- ��A��?��?����Kj�8� �8�##��#!#8��(���'�j�8'!A�'�#+�#!#8

    ���!���"+ select-statement.

    partitioned table$A��#!#8�������������- ���:� !����� ��$��?#!������ (-��-��!�)'�j�8'!A��#��:�#'�j�8.

    �#!� !��!�SQL 9

    |

    |

  • ������������������

    DB2Multisystem

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

    ���"�����

    “�#!�!#8��- ���+��#!#8materialized query” ��'�# 23

    �����materialized query - � �#!#8����� definition �+����?A��>#���8����?@���8-$�+:!� ��������+����!� �����8����?@�

    ���$%#�:�):��:8'�# Kj�8!���##��#!#8��� definition ��8�#!#8materialized query ���#8��8

    Alias

    alias$A�����A��'�j�8��8�#!#8'!A������8.

    $���#�#!;�� alias -?A���#8;j8�#!#8'!A������8���!������%#)". ���#����, $��+�8�#�#!;�� aliase -?A��!:��#!#8-�#):

    ":+���.

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

    Alias

    �����$

    �!����- �-'�A���#!#8�%#'!�� ��H??��-$���� !��!��+�#8)!�H�#������8)����������"�����"8-?�+8�$� �#!#8

    '�j�8'!A�'�#+�#!#8������������;���!#8�j��

    �����8�#�#!;!�8!��$���������;:���8'�"��8�#!#8'!A���"+��+��8�#!#8$�������������8�#�#!;�":#8�'��#8)

    #����- ��+�����#!#8����%#$�����������#)". �����8��SQL$A�!� ���?�-&`��8���$��)3�����)����$�+�.

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

    �����8

    ������ (Index)

    "����#SQL$A� ��"�����+��+��$��������8�#!#8����"-!�+8�#��%#"���#!-!�+8#��#�) '#��+'!A�#���+) '#�#�

    �#�$:#�-'�#��.

    "!!���������:���#!�"-!�+8����+�#����. �#!�"-!�+8-'��#���)"��� �#!-!�+8�%#"�� (ORDERBYclause), �#!�"�����

    (GROUPBYclause), ���#!-�A����+8. "!!��� SQL$A� ���$��)3�������$�+�.

    !����"!!���-?A���'"j8���������#)"!:"-!H:�j��. $���#�#!;-�A��)":�#�!#8'!A�)���!#8"!!����H)". $���#�#!;

    �!#8"!!���%#�:�-��#�"�H)". ���#���� $���#�!#8'!A���"!!���)"���"-:�#. "!!���;��!��`#):�"+!���"+

    ���������. �+�#8)!�H�#� -�A��8#�"!!���;��-�H�):��!��"�8����'#��� "!!���%#�:��#���8����� !���@��#?�#!

    �%#8#���8��H??��-$������- ���+��#!#8

    10 IBM i: >#������ �#!� !��!�SQL

  • ������������������

    +��@:�@����#!�!#8"!!���

    0+�@�����

    ����$���" - ��~�����8$���� �"+��:�"�#!>#������ -?A��%#��"$�#����#�#!;��!���'!A���?-"� ���#!#8

    DB2 for i ����������%#��""�8���) ���:

    v ��%#��"���-(?# (Unique constraints)

    ����$���"����%���$A� ������8$��:�#$�#��8$�+�;����8�H���-�A��$�#����- �$�#-(?#. $���#�#!;�!#8��%#��"-(?#

    �"+��$%#���8 CREATETABLE'!A�ALTERTABLE��:�#$%#���8 CREATE INDEX�#�#!;�!#8"!!������-(?#Kj�8

    )�� K�%#��� ���"!!���"�8���#:�H)��;A�- ���%#��"

    ��%#��"���-(?#;���%#�#��8$����-�A�����#!!��$%#���8 INSERT��UPDATE. ��%#��" PRIMARYKEY$A� !�

    �����%#��"UNIQUE$:#������#8$A� PRIMARYKEY��8)����$���������- � null.

    v ��%#��"����#8��8 (Referential constraints)

    ����$���"���������$A� �~�����8$��:�#$�#��8$�+� foreign ;����8�H���-�A��:

    – $�#-'��#���� !#�- �$�#��8$�+�'��� (parent key)

    – ��:� !����#8��:��8$�+� foreign - � null.

    ��%#��"����#8��8;����8$����-�A�����#!!��$%#���8 INSERT,UPDATE, ��DELETE .

    v ��%#��"�#!�!:���

    ����$���"����� ����$A� �~���%#��"$�#�������$������'!A������$������ $���#�#!;�!#8��%#��"�#!�!:��� �"+��

    $%#���8 CREATETABLE'!A�ALTERTABLE��%#��"�#!�!:���;����8$����-�A�����#!!��$%#���8 INSERT��

    UPDATE.'#���8�#! ������#���%#��" �;:����������;:�����!�-�#) '!A�;����?-"����#!#8��8�%#�'-8A���)�

    ���!��):- ����TRUE'!A� )��!��� (-�A��8#�- � null)

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

    “��%#��"” ��'�# 155

    >#������DB2 for i �������� ��%#��"-(?#, ��%#��"���#!�#8��8 ����%#��"���#!�!:���

    "�6�'���!

    &�������$A���"��8 action���!���"+��������� -�A���"�H�#������-'���#!�����!��):-��"�j������#!#8'!A������8���!��):

    -'���#!��"�8���#:�#- � �#!��!��#!��?-"��#!��'!A��#!��#��!��-��!��#�#!;!������'!A�'��8-'���#!����� DB2 for

    i �������� �#!��!�SQL, ��?-"����!��-��!�����������!��-��!��#+���

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

    �#!�%#�!��-��!�-'���#!����������������>#��������8$��

    ��&�'���!"�#'�C���+

    '��(#�"���)����* �$A� � !��!�����#;��-!�+��"+��$%#���8 SQLCALL

    �#!� !��!�SQL 11

  • DB2 for i �������� �?!K�-"�!����-�H�):����#+�����SQL �?!K�-"�!� �?!K�-"�!��#+����#- �� !��!�!��, -K�!�

    :��� !��!�'!A��?!K�-"�!� REXX���)���#�#!;- �� !��!�'!A��?!K�-"�!� System/36™SQL �?!K�-"�!�;���%#'�"

    ):���8'�"��SQL���#��$%#���8 SQL!:����8 SQL control statements

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

    “���!��?!K�-"�!�” ��'�# 160

    '��(#�"��� (Kj�8���-!�+�:�# �?!K�-"�!����-�H�):) $A�� !��!�����#�#!;-!�+��j���#-?A�� �����8#� �?!K�-"�!��# !���":+

    $%#���8�#`#������$%#���8 SQL �?!K�-"�!� �� SQL����"�-'�A������?!K�-"�!����#`#����

    ������ (Sequences)

    sequence$A��H��-H���?A���������� ����%#'�"�' :�@��#!���8�#+��!:"-!H:���#!�!#8'�#+-��-(?#.

    $���#�#!;���%#"�����#!������$������ identity '!A� $��������:-����������!#8�j���#)" �%#"�������`��#!��8#�$�#+���

    �#8-�A��-'��#���

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

    “�#!�!#8���#!���%#"��” ��'�# 27

    �%#"��-'�A�����$������ identity ��-!A��8���:�#���8$���#�#!;�!#8$�#���- � unique �+�#8)!�H�#��%#"��- ��H��-H������

    �j���+������#!#8$���#�#!;���%#"��-?A���!#8$�#)"�+�#8!:"-!H: ��8�#+"#+

    *���������

    �� �+�'���$A���:� !������A�� Kj�8�#�#!;�!#8 -�#;j8 ����)�)"�"+�� SQL

    ��:� !�������#�#!;��$�#-(?#�%#'!��-K����)" ��:� !�#�#!;�%#�#�� - ���:�'�j�8��8��?�����:#8�+�����%#�'��8

    ��#8 -��� $%#���8 -$�+:!� �!#8�����8'!A���!�

    (,$�!�������3+��+������ (User-defined functions)

    ,-�����������.���$�/�"$A�� !��!�����#;��-!�+��%#8#� )"-'�A�����3N8���������:�A��

    DB2 for i ��������3N8���������#+���,3N8����� SQL, ��3N8�����������#8 (sourced functions).3N8���������#+���

    �#- �� !��!� ILE��8!���"'!A�-K�!�:��� !��!�3N8����� SQL;���%#'�"):���8'�"��SQL���#��$%#���8 SQL

    !:����8$%#���8 SQL control. 3N8�����������#8;���!#8�j���#��3N8���������:�" (built-in)'!A���3N8������������

    �%#'�"������+��. $���#�#!;�!#83N8����� scalar '!A�3N8������#!#8�'- �3N8����� SQL'!A�3N8���������#+���

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

    “�#!��3N8�������������%#'�"-�8” ��'�# 206

    ���#!-��+���H??��-$��� SQL$���#�#!;-�A�� ������#!'!A�"%#-����#!�#8�+�#8�����3N8�������������%#'�"-�8 (UDF)

    '!A����!����+��+ ����H??��-$�����8$��;j8��:�#����#"�8�#+�:�#���#!-�A���#!"%#-����#!�'�����!����+��+����H?

    ?��-$�����8$��$���#��8?�#!�#;j8 !�+�����8�#!��8#�UDF���

    ��6�"�#�3+��+������

    ��")��.���$�/�"���$A����"��������$���#�#!;�%#'�")"�"+)���j��������"����� Kj�8�"-�!�+�):�"+!���"�#!>#���

    ���

    12 IBM i: >#������ �#!� !��!�SQL

    |

    |

    |

    |

  • ���"��������distinct ��H?������"�������: ���"���������-!+� ;����+#��"+�����"�������:- ����"����-��