为用户定义的例程指定 INOUT 参数

用 SPL 、C 或 Java™ 语言编写的 UDR 也可以支持 INOUT 参数。当调用 UDR 时,每个 INOUT 参数的值作为参量通过引用传递给 UDR 。

当 UDR 执行完成时,它能够为 INOUT 参数返回一个修改后的值给调用上下文。INOUT 参数可以是 GBase 8s 支持的任意数据类型,包括用户定义的和复杂数据类型和以下例外:
在以下示例中,CREATE PROCEDURE 语句注册一个带有单个 INOUT 参数的 C 例程:
 CREATE PROCEDURE CALC ( INOUT param1 float )
        EXTERNAL NAME "$GBASEDBTDIR/etc/myudr.so(calc)"
        LANGUAGE C;

SPL 例程可以调用具有 OUT 和 INOUT 参数的其它 UDR,如果这些 UDR 用 SPL 或 C 语言编写。然而,SPL 例程不能调用参量包含 OUT 或 INOUT 参数的 Java UDR。

支持从 SPL 例程调用具有命名或未命名 ROW 参数的 UDR ,对 ROW 参数类型和调用的 UDR 的编程语言有以下依赖性:

可以将 INOUT 参数分配给语句-局部变量(SLV),语句-局部变量在语句本地的变量表达式部分中描述。