参数传递存储过程和用户定义函数的约定
CALL 语句和函数调用可以将自变量传递给使用所有受支持的主语言和 REXX 过程编写的程序。
每种语言都支持为其定制的不同数据类型,如下表所示。 SQL 数据类型包含在每个表的最左侧列中。 该行中的其他列包含是否支持该数据类型作为特定语言的参数类型的指示。 如果列为空,那么不支持将数据类型作为该语言的参数类型。 主变量声明指示 Db2 for i 支持此数据类型作为此语言中的参数。 声明指示必须如何声明主变量才能由过程或函数正确接收和设置。 调用 SQL 过程或函数时,将支持所有 SQL 数据类型,因此不会在表中提供任何列。
| SQL 数据类型 | C 与 C++ | CL | COBOL 和 ILE COBOL |
|---|---|---|---|
| SMALLINT | 简短 | PIC S9(4 ) 二进制 | |
| INTEGER | 长整型 | PIC S9(9 ) 二进制 | |
| BIGINT | long long | PIC S9(18 ) 二进制 注: 仅支持 ILE COBOL。
|
|
| DECIMAL(p,s) | DECIMAL(p,s) | 类型 (*DEC) LEN (p s) | pic S9(p-s)V9(s ) 填充十进制 注: 精度不得大于 18。
|
| NUMERIC(p,s) | PIC S9(p-s)V9(s) 显示符号前导分隔 注: 精度不得大于 18。
|
||
| DECFLOAT | _Decimal32, _Decimal64, _Decimal128 注: 仅支持 C。
|
||
| REAL 或 FLOAT (p) | 浮点 | COMP-1 注: 仅支持 ILE COBOL。
|
|
| DOUBLE PRECISION 或 FLOAT 或 FLOAT (p) | 双精度型 | COMP-2 注: 仅支持 ILE COBOL。
|
|
| 字符 (n) | char...[ n+1 ] | 类型 (*CHAR) LEN (n) | PIC X (n) |
| VARCHAR(N) | char...[ n+1 ] | 变长字符串 | |
| VARCHAR(n) FOR BIT DATA | VARCHAR 结构化格式 | 变长字符串 | |
| CLOB | CLOB 结构化表单 | CLOB 结构化表单 注: 仅支持 ILE COBOL。
|
|
| GRAPHIC(n) | wchar_t...[ n+1 ] | PIC G (n) DISPLAY-1 或 PIC N (n) 注: 仅支持 ILE COBOL。
|
|
| VARGRAPHIC(n) | VARGRAPHIC 结构化格式 | 可变长度图形字符串 注: 仅支持 ILE COBOL。
|
|
| DBCLOB | DBCLOB 结构化表单 | DBCLOB 结构化表单 注: 仅支持 ILE COBOL。
|
|
| BINARY | BINARY 结构化表单 | BINARY 结构化表单 | |
| VARBINARY | VARBINARY 结构化表单 | VARBINARY 结构化表单 | |
| BLOB | BLOB 结构化格式 | BLOB 结构化格式 注: 仅支持 ILE COBOL。
|
|
| 日期 | char...[11] | TYPE (*CHAR) LEN (10) | PIC X (10) 注: 仅适用于 ILE COBOL ,FORMAT DATE。
|
| 时间 | char...[9] | 类型 (*CHAR) LEN (8) | PIC X (8) 注: 仅适用于 ILE COBOL ,FORMAT TIME。
|
| TIMESTAMP (n) | char ... [20]
当 n = 0 char ... [n+21] 当 n> 0 |
TYPE (*CHAR) LEN (19)
当 n = 0 TYPE (*CHAR) LEN (n+20) 当 n> 0 |
PIC X (19) 当 n = 0
PIC X (n+20) 当 n> 0 注: 仅适用于 ILE COBOL ,FORMAT TIMESTAMP。
|
| BOOLEAN | BOOLEAN 结构形式 | PIC 1 注: 仅支持 ILE COBOL。
|
|
| XML | XML 结构化格式 | XML 结构化格式 | |
| ROWID | ROWID 结构化表单 | ROWID 结构化表单 | |
| DataLink | |||
| 数组 | |||
| 指示符变量 | 简短 | PIC S9(4 ) 二进制 |
| SQL 数据类型 | Java™ 参数样式 JAVA | Java 参数样式 DB2GENERAL | PL/I |
|---|---|---|---|
| SMALLINT | 简短 | 简短 | 固定货柜 (15) |
| INTEGER | int | int | 固定货柜 (31) |
| BIGINT | 长整型 | 长整型 | |
| DECIMAL(p,s) | BigDecimal | BigDecimal | 固定 dec (p , s) |
| NUMERIC(p,s) | BigDecimal | BigDecimal | |
| DECFLOAT | BigDecimal | BigDecimal | |
| REAL 或 FLOAT (p) | 浮点 | 浮点 | FLOAT BIN (p) |
| DOUBLE PRECISION 或 FLOAT 或 FLOAT (p) | 双精度型 | 双精度型 | FLOAT BIN (p) |
| 字符 (n) | 字符串 | 字符串 | CHAR(N) |
| VARCHAR(N) | 字符串 | 字符串 | CHAR (n) VAR |
| VARCHAR(n) FOR BIT DATA | 字节 [] | com.ibm.db2.app.Blob | CHAR (n) VAR |
| CLOB | java.sql.Clob | com.ibm.db2.app.Clob | CLOB 结构化表单 |
| GRAPHIC(n) | 字符串 | 字符串 | |
| VARGRAPHIC(n) | 字符串 | 字符串 | |
| DBCLOB | java.sql.Clob | com.ibm.db2.app.Clob | DBCLOB 结构化表单 |
| BINARY | 字节 [] | com.ibm.db2.app.Blob | BINARY 结构化表单 |
| VARBINARY | 字节 [] | com.ibm.db2.app.Blob | VARBINARY 结构化表单 |
| BLOB | java.sql.Blob | com.ibm.db2.app.Blob | BLOB 结构化格式 |
| XML AS CLOB | java.sql.CLOB | ||
| XML AS BLOB | java.sql.BLOB | ||
| 日期 | 日期 | 字符串 | CHAR(10) |
| 时间 | 时间 | 字符串 | CHAR(8) |
| TIMESTAMP (n) | 时间戳记 | 字符串 | CHAR (19) when n = 0
CHAR (n+20) when n> 0 |
| BOOLEAN | 布尔 | 布尔 | |
| ROWID | byte[] | com.ibm.db2.app.Blob | ROWID 结构化表单 |
| DataLink | |||
| 数组 | java.sql.Array | ||
| 指示符变量 | 固定货柜 (15) |
| SQL 数据类型 | REXX | RPG | ILE RPG |
|---|---|---|---|
| SMALLINT | 包含单个子字段的数据结构。 位置 43 中的 B ,长度必须为 2 ,而子字段规范的位置 52 中的 0。 | INT (5) 或 BINDEC(n) 其中 1 <= n <= 4 |
|
| INTEGER | 不带小数的数字字符串 (以及可选的前导符号) | 包含单个子字段的数据结构。 位置 43 中的 B ,长度必须为 4 ,而子字段规范的位置 52 中的 0。 | INT (10) 或 BINDEC(n) 其中 5 <= n <= 9 |
| BIGINT | INT (20) | ||
| DECIMAL(p,s) | 带有十进制 (和可选前导符号) 的数字字符串 | 包含单个子字段的数据结构。 P 位于子字段规范的位置 43 , 0 到 9 位于位置 52。 或数字输入字段或计算结果字段。 | 软件包 (p:s) |
| NUMERIC(p,s) | 包含单个子字段的数据结构。 空白 位于子字段规范的位置 43 和 0 到 9 的位置 52。 | 分区 (p:s) | |
| DECFLOAT | |||
| REAL 或 FLOAT (p) | 包含数字的字符串,然后是 E , (然后是可选符号) ,然后是数字 | FLOAT (4) | |
| DOUBLE PRECISION 或 FLOAT 或 FLOAT (p) | 包含数字的字符串,然后是 E , (然后是可选符号) ,然后是数字 | FLOAT (8) | |
| 字符 (n) | 在两个撇号中包含 n 个字符的字符串 | 不包含子字段或包含单个子字段的数据结构字段。 子字段规范的位置 43 和 52 中的 空白 。 或字符输入字段或计算结果字段。 | CHAR(N) |
| VARCHAR(N) | 在两个撇号中包含 n 个字符的字符串 | VARCHAR(N) | |
| VARCHAR(n) FOR BIT DATA | 在两个撇号中包含 n 个字符的字符串 | VARCHAR (n) CCSID (*HEX) | |
| CLOB | CLOB 结构化表单 | ||
| GRAPHIC(n) | 以 G ' 开头的字符串,然后是 n 个双字节字符,然后是 " | GRAPH (n) | |
| VARGRAPHIC(n) | 以 G ' 开头的字符串,然后是 n 个双字节字符,然后是 " | VARGRAPH (n) | |
| DBCLOB | DBCLOB 结构化表单 | ||
| BINARY | BINARY 结构化表单 | ||
| VARBINARY | VARBINARY 结构化表单 | ||
| BLOB | BLOB 结构化格式 | ||
| XML | XML 结构化格式 | ||
| 日期 | 在两个撇号中包含 10 个字符的字符串 | 不包含子字段或包含单个子字段的数据结构字段。 子字段规范的位置 43 和 52 中的 空白 。 长度为 10。 或字符输入字段或计算结果字段。 | 日期 |
| 时间 | 在两个撇号中包含 8 个字符的字符串 | 不包含子字段或包含单个子字段的数据结构字段。 子字段规范的位置 43 和 52 中的 空白 。 长度为 8。 或字符输入字段或计算结果字段。 | 时间 |
| TIMESTAMP (n) | 在两个撇号中包含 26 个字符的字符串 | 不包含子字段或包含单个子字段的数据结构字段。 子字段规范的位置 43 和 52 中的 空白 。 对于 n = 0 ,长度为 19。 对于 n> 0 ,长度为 n+20 。 | TIMESTAMP (n) |
| BOOLEAN | 印度 | ||
| ROWID | ROWID 结构化表单 | ||
| DataLink | |||
| 数组 | |||
| 指示符变量 | 不带小数的数字字符串 (以及可选的前导符号)。 | 包含单个子字段的数据结构。 位置 43 中的 B ,长度必须为 2 ,而子字段规范的位置 52 中的 0。 | INT (5) 或 BINDEC(n) 其中 1 <= n <= 4 |