Named parameters and overloaded stored procedures
If multiple stored procedures have the same name and the same number of arguments, the procedures are overloaded (also known as overloaded UDRs).
The JDBC driver throws an SQLException for overloaded stored procedures because the call cannot resolve to a single stored procedure. To prevent an SQLException, specify the HCL Informix® server data type of the named parameters in the parameter list by appending ::data_type to the question mark characters where data_type is the Informix server data type. For example ?::varchar or ?::float. You must also enter the named parameters for all the arguments and in the same order as the overloaded stored arguments of procedure.
For example, the following two procedures have the same name (createProductDef) and the same number of arguments. The data type for the prod_id argument is a different data type in each procedure.
Procedure 1
create procedure createProductDef(productname varchar(64),
productdesc varchar(64),
listprice float default 100.00,
minprice float default 90.00,
prod_id float);
...
let prod_id = <value for prod_id>;
end procedure;
Procedure 2
create procedure createProductDef(productname varchar(64),
productdesc varchar(64),
listprice float default 100.00,
minprice float default 90.00,
prod_id int);
...
let prod_id = <value for prod_id>;
end procedure;
String sqlCall = "{call CreateProductDef(?,?,?,?,?)}";
CallableStatement cstmt = con.prepareCall(sqlCall);
cstmt.setString("productname", name); // Set Product Name.
String sqlCall = "{call CreateProductDef(?,?,?,?,?::float)}";
CallableStatement cstmt = con.prepareCall(sqlCall);
cstmt.setString("productname", name); // Set Product Name