Named parameters and UDRs
Named parameters cannot be used to invoke UDRs that overload
data types in their routine signatures. Named parameters are valid
in resolving non-unique routine names only if the signatures have
different numbers of parameters:
func( x::integer, y ); -- VALID if only these 2 routines
func( x::integer, y, z ); -- have the same 'func' identifier
func( x::integer, y ); -- NOT VALID if both routines have
func( x::float, y ; -- same identifier and 2 parameters
For
both ordinal and named parameters, the routine with the fewest parameters
is executed if two or more UDR signatures have multiple numbers of
defaults:
func( x, y default 1 )
func( x, y default 1, z default 2 )
If two registered
UDRs that are both called func
have signatures as
shown in the example, then the statement EXECUTE func(100)
invokes func(100,1)
.
You cannot supply a subset of default values using named parameters unless the parameters are in the positional order of the routine signature. You cannot skip a few arguments and rely on the database server to supply their default values.
For example,
given the signature:
func( x, y default 1, z default 2 )
you
can execute:func( x=1, y=3 )
but you cannot
execute:func( x=1, z=3 )