Syntax

Click to skip syntax diagram
Read syntax diagramSkip visual syntax diagram>>-CREATE FUNCTION--function-name------------------------------->
 
>--(--+---------------------------+--)-------------------------->
      | .-,---------------------. |
      | V                       | |
      '---parameter-declaration-+-'
 
>--RETURNS--+-data-type2--+------------+------------------------+-->
            |             '-AS LOCATOR-'                        |
            '-data-type3--CAST FROM--data-type4--+------------+-'
                                                 '-AS LOCATOR-'
 
>--option-list-------------------------------------------------><
 
Read syntax diagramSkip visual syntax diagramparameter-declaration:
 
|--+----------------+--data-type1--+------------+---------------|
   '-parameter-name-'              '-AS LOCATOR-'
 
data-type1, data-type2, data-type3, data-type4:
 
|--+-built-in-type------+---------------------------------------|
   '-distinct-type-name-'
 
Read syntax diagramSkip visual syntax diagrambuilt-in-type:
 
|--+-+---SMALLINT---+--------------------------------------------------------------------------+--|
   | +-+-INTEGER-+--+                                                                          |
   | | '-INT-----'  |                                                                          |
   | '---BIGINT-----'                                                                          |
   |                  .-(5,0)------------------------.                                         |
   +-+-+-DECIMAL-+-+--+------------------------------+-----------------------------------------+
   | | '-DEC-----' |  |             .-,0--------.    |                                         |
   | '-NUMERIC-----'  '-(--integer--+-----------+--)-'                                         |
   |                                '-, integer-'                                              |
   |          .-(--53--)------.                                                                |
   +-+-FLOAT--+---------------+-+--------------------------------------------------------------+
   | |        '-(--integer--)-' |                                                              |
   | +-REAL---------------------+                                                              |
   | |         .-PRECISION-.    |                                                              |
   | '-DOUBLE--+-----------+----'                                                              |
   |                    .-(--1--)-------.                                                      |
   +-+-+-+-CHARACTER-+--+---------------+----------+--+----------------+---------------------+-+
   | | | '-CHAR------'  '-(--integer--)-'          |  +-FOR BIT DATA---+                     | |
   | | '-+-+-CHARACTER-+--VARYING-+--(--integer--)-'  +-FOR SBCS DATA--+                     | |
   | |   | '-CHAR------'          |                   +-FOR MIXED DATA-+                     | |
   | |   '-VARCHAR----------------'                   '-ccsid-clause---'                     | |
   | |                                          .-(--1M--)-------------.                     | |
   | '-----+-+-CHARACTER-+--LARGE OBJECT-+------+----------------------+--+----------------+-' |
   |       | '-CHAR------'               |      '-(--integer--+---+--)-'  +-FOR SBCS DATA--+   |
   |       '-CLOB------------------------'                    +-K-+       +-FOR MIXED DATA-+   |
   |                                                          +-M-+       '-ccsid-clause---'   |
   |                                                          '-G-'                            |
   |                .-(--1--)-------.                                                          |
   +-+---GRAPHIC----+---------------+-------+--+--------------+--------------------------------+
   | |              '-(--integer--)-'       |  '-ccsid-clause-'                                |
   | +-+-GRAPHIC VARYING-+--(--integer--)---+                                                  |
   | | '-VARGRAPHIC------'                  |                                                  |
   | |             .-(--1M--)-------------. |                                                  |
   | '---DBCLOB----+----------------------+-'                                                  |
   |               '-(--integer--+---+--)-'                                                    |
   |                             +-K-+                                                         |
   |                             +-M-+                                                         |
   |                             '-G-'                                                         |
   |             .-(--1--)-------.                                                             |
   +-+-+-BINARY--+---------------+---------+-----------------+---------------------------------+
   | | |         '-(--integer--)-'         |                 |                                 |
   | | '-+-BINARY VARYING-+--(--integer--)-'                 |                                 |
   | |   '-VARBINARY------'                                  |                                 |
   | |                              .-(--1M--)-------------. |                                 |
   | '---+-BLOB----------------+----+----------------------+-'                                 |
   |     '-BINARY LARGE OBJECT-'    '-(--integer--+---+--)-'                                   |
   |                                              +-K-+                                        |
   |                                              +-M-+                                        |
   |                                              '-G-'                                        |
   +-+-DATE-------------------+----------------------------------------------------------------+
   | |       .-(--0--)-.      |                                                                |
   | +-TIME--+---------+------+                                                                |
   | |            .-(--6--)-. |                                                                |
   | '-TIMESTAMP--+---------+-'                                                                |
   '---ROWID-----------------------------------------------------------------------------------'
 
ccsid-clause:
 
                   .-NOT NORMALIZED-.
|--CCSID--integer--+----------------+---------------------------|
                   '-NORMALIZED-----'
 
Read syntax diagramSkip visual syntax diagramoption-list:
 
                             (1)
|--+-----------------------+------------------------------------>
   '-LANGUAGE--+-C-------+-'
               +-C++-----+
               +-CL------+
               +-COBOL---+
               +-COBOLLE-+
               +-FORTRAN-+
               +-JAVA----+
               +-PLI-----+
               +-RPG-----+
               '-RPGLE---'
 
   .-PARAMETER STYLE SQL--------------------.
>--+----------------------------------------+------------------->
   '-+-PARAMETER STYLE DB2SQL-------------+-'
     +-PARAMETER STYLE JAVA---------------+
     +-PARAMETER STYLE GENERAL------------+
     +-PARAMETER STYLE GENERAL WITH NULLS-+
     '-PARAMETER STYLE DB2GENERAL---------'
 
                                .-NOT DETERMINISTIC-.
>--+-------------------------+--+-------------------+----------->
   '-SPECIFIC--specific-name-'  '-DETERMINISTIC-----'
 
   .-READS SQL DATA----.  .-CALLED ON NULL INPUT-------.
>--+-------------------+--+----------------------------+-------->
   +-NO SQL------------+  '-RETURNS NULL ON NULL INPUT-'
   +-CONTAINS SQL------+
   '-MODIFIES SQL DATA-'
 
   .-INHERIT SPECIAL REGISTERS-.  .-STATIC DISPATCH-.
>--+---------------------------+--+-----------------+----------->
 
   .-NO DBINFO-.  .-EXTERNAL ACTION----.  .-FENCED-----.
>--+-----------+--+--------------------+--+------------+-------->
   '-DBINFO----'  '-NO EXTERNAL ACTION-'  '-NOT FENCED-'
 
                          .-NO FINAL CALL-.
>--+-------------------+--+---------------+--------------------->
   +-PROGRAM TYPE MAIN-+  '-FINAL CALL----'
   '-PROGRAM TYPE SUB--'
 
                          .-NO SCRATCHPAD-----------.
>--+-------------------+--+-------------------------+----------->
   +-ALLOW PARALLEL----+  |             .-100-----. |
   '-DISALLOW PARALLEL-'  '-SCRATCHPAD--+---------+-'
                                        '-integer-'
 
   .-EXTERNAL-----------------------------.
>--+--------------------------------------+---------------------|
   '-EXTERNAL NAME--external-program-name-'
 
Notes:
  1. The optional clauses can be specified in a different order.