参数传递存储过程和用户定义函数的约定

CALL 语句和函数调用可以将自变量传递给使用所有受支持的主语言和 REXX 过程编写的程序。

每种语言都支持为其定制的不同数据类型,如下表所示。 SQL 数据类型包含在每个表的最左侧列中。 该行中的其他列包含是否支持该数据类型作为特定语言的参数类型的指示。 如果列为空,那么不支持将数据类型作为该语言的参数类型。 主变量声明指示 Db2 for i 支持此数据类型作为此语言中的参数。 声明指示必须如何声明主变量才能由过程或函数正确接收和设置。 调用 SQL 过程或函数时,将支持所有 SQL 数据类型,因此不会在表中提供任何列。

表 1. 参数的数据类型
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 ) 二进制
表 2。 参数的数据类型
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)
表 3. 参数的数据类型
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