When you register a user-defined routine of Dynamic Server, you can use the OUT keyword to specify that any parameter in the list is an OUT parameter. Each OUT parameter corresponds to a value the routine returns indirectly, through a pointer. The value that the routine returns through the pointer is an extra value, in addition to any values that it returns explicitly.
After you have registered a user-defined function that has one or more OUT parameters, you can use the function with a statement-local variable (SLV) in an SQL statement. (For information about statement-local variables, see Statement-Local Variable Expressions (IDS).)
If you specify any OUT parameters, and you use Informix-style parameters, the arguments are passed to the OUT parameters by reference. The OUT parameters are not significant in determining the routine signature.
For example, the following declaration of a C user-defined function allows you to return an extra value through the y parameter:
int my_func( int x, int *y );
Register the C function with a CREATE FUNCTION statement similar to this:
CREATE FUNCTION my_func( x INT, OUT y INT ) RETURNING INT EXTERNAL NAME "/usr/lib/local_site.so" LANGUAGE C END FUNCTION;
In the next example, this Java method returns an extra value by passing an array:
public static String allVarchar(String arg1, String[] arg2) throws SQLException { arg2[0] = arg1; return arg1; }
To register this as a UDF, use a statement similar to the following example:
CREATE FUNCTION all_varchar(VARCHAR(10), OUT VARCHAR(7)) RETURNING VARCHAR(7) WITH (class = "jvp") EXTERNAL NAME 'informix.testclasses.jlm.Param.allVarchar(java.lang.String, java.lang.String[ ])' LANGUAGE JAVA;Enterprise Edition Home | Express Edition Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]