DB2 10.5 for Linux, UNIX, and Windows
INOUT 参数
可通过使用 DEFAULT 关键字为某个过程定义 INOUT 参数,使其具有缺省值。
启用
通过将 DB2_COMPATIBILITY_VECTOR 注册表变量设置为十六进制值 0x2000(位位置 14),然后停止并重新启动该实例以使新设置生效,从而启用 INOUT 参数支持。db2set DB2_COMPATIBILITY_VECTOR=2000
db2stop
db2start
要充分利用 Oracle 应用程序的 DB2 兼容性功能部件,DB2_COMPATIBILITY_VECTOR 的推荐设置是 ORA,这将设置所有兼容性位。
INOUT 参数既是输入参数,又是输出参数。可以使用 DEFAULT 关键字将 INOUT 参数的缺省值定义为表达式或 NULL。然后,如果通过指定 DEFAULT 调用该过程或不为该参数调用任何自变量,那么可将为该参数定义的缺省值用于初始化该过程。如果该过程存在,那么不会为此参数返回任何值。
限制
DEFAULT 关键字不支持函数中的 INOUT 参数。
示例
以下代码可创建一个带有可选 INOUT 参数的过程:
CREATE OR REPLACE PROCEDURE paybonus
(IN empid INTEGER,
IN percentbonus DECIMAL(2, 2),
INOUT budget DECFLOAT DEFAULT NULL)
...
此过程通过员工的工资计算奖金金额,发放奖金,然后从部门预算中扣除奖金。如果没有为该过程指定预算,那么将忽略扣除部分。以下是如何调用该过程的示例: CALL paybonus(12, 0.05, 50000);
CALL paybonus(12, 0.05, DEFAULT);
CALL paybonus(12, 0.05);