注册一个 GBase 8s 的用户定义的例程时,可以使用关键字 OUT 来指定列表中的任何一个参数是 OUT 参数。每个 OUT 参数对应例程通过指针直接返回的一个只。例程通过指针返回的值是显式返回的任何值以外的一个额外值。
在注册了带有一个或多个 OUT 参数的用户定义函数以后,可以在 SQL 语句中把函数和语言-局部变量(SLV)一起使用。(关于语句-局部变量的信息,请参阅语句本地的变量表达式。)
如果指定了任何 OUT 参数,并且使用 GBase 8s 样式的参数,参量会通过引用传递给 OUT 参数。OUT 参数在确定例程特征符时没有意义。
int my_func( int x, int *y );
CREATE FUNCTION my_func( x INT, OUT y INT ) RETURNING INT EXTERNAL NAME "/usr/lib/local_site.so" LANGUAGE C END FUNCTION;
public static String allVarchar(String arg1, String[] arg2) throws SQLException { arg2[0] = arg1; return arg1; }
CREATE FUNCTION all_varchar(VARCHAR(10), OUT VARCHAR(7)) RETURNING VARCHAR(7) WITH (class = "jvp") EXTERNAL NAME 'gbasedbt.testclasses.jlm.Param.allVarchar(java.lang.String, java.lang.String[ ])' LANGUAGE JAVA;