passing HashSet parameter into stored procedure doesn't work. JDBC
Posted in 2005
Topics: Stored Procedures & SPL, Connectivity: ODBC / JDBC / .NET, Java & JDBC Development
I have a stored procdure:
CREATE PROCEDURE save_order ( ord_ids set(integer not null) );
insert into order values ( ord_ids );end procedure;
Here is my java code:
PreparedStatement stmnt = session.getStatement("EXECUTE PROCEDURE
save_max_order(?)");
Set orders = new HashSet(10);
orders.add(new Integer(1));
orders.add(new Integer(2));
orders.add(new Integer(3));
stmnt.setObject(1,orders);
stmnt.executeUpdate();
this results in java.sql.SQLException:
java.sql.SQLException: Routine (save_order) can not be resolved.
however replaceing PreparedStatement above with:
PreparedStatement stmnt = session.getStatement("insert into order
values (?)");
works fine.
Any ideas what I am doing wrong with the stored procdure code ????
thanks
First, in Java code you're calling save_max_order procedure, but on IDS you
created save_order procedure.
Is it a typo? Or save_max_order calls save_order in its body?
Also check the permissions.
Obviously, the user which you are using to make a connection to Informix
instance has permissions to insert into table order.
But, it has no grant execute perms for procedure save_order.
So try with: GRANT EXECUTE ON save_order TO <put user or it's role here>.
Also, check the manual for full syntax.
Good luck.
<jlukar@gmail.com> wrote in message
news:1129846585.864286.297060@g44g2000cwa.googlegroups.com...
>I have a stored procdure:
>
> CREATE PROCEDURE save_order ( ord_ids set(integer not null) );
> insert into order values ( ord_ids );> end procedure;
>
>
> Here is my java code:
>
> PreparedStatement stmnt = session.getStatement("EXECUTE PROCEDURE
> save_max_order(?)");
> Set orders = new HashSet(10);
> orders.add(new Integer(1));
> orders.add(new Integer(2));
> orders.add(new Integer(3));
> stmnt.setObject(1,orders);
> stmnt.executeUpdate();
>
>
> this results in java.sql.SQLException:
> java.sql.SQLException: Routine (save_order) can not be resolved.
>
>
> however replaceing PreparedStatement above with:
>
> PreparedStatement stmnt = session.getStatement("insert into order
> values (?)");
>
>
> works fine.
>
>
> Any ideas what I am doing wrong with the stored procdure code ????
>
>
> thanks
>