You can pass USING variables in the arguments of a scalar UDF during invocation (see Example: USING and SQL UDF Invocation) when the data types of the USING variables match those of the UDF parameters, whether natively or after being explicitly cast. If the data types do not match, the database aborts the request and returns an error.
You can avoid this problem by casting the data types of the USING variables to the data types of the UDF parameters.