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);