[
https://issues.apache.org/jira/browse/DBUTILS-50?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Raymond DeCampo updated DBUTILS-50:
-----------------------------------
Attachment: DBUTILS-50.patch
Implementation of the desired functionality which (I hope) stays true to the
dbutils project as much as possible. Essentially adds a class representing OUT
parameters allowing users to intermix them with the list of parameters for the
SQL statement. Added execute() methods to QueryRunner, which use
CallableStatements and handle the OUT parameters; one flavor for procedures
returning one or more result sets and one for procedures returning update
counts. Unit tests are included.
> Support CallableStatement "out" parameters
> ------------------------------------------
>
> Key: DBUTILS-50
> URL: https://issues.apache.org/jira/browse/DBUTILS-50
> Project: Commons DbUtils
> Issue Type: New Feature
> Reporter: Dan Fabulich
> Attachments: DBUTILS-50.patch
>
>
> Using fillStatement and the new fillStatementWithBean, you can use a
> CallableStatement like a PreparedStatement, retrieve its ResultSet and handle
> it with a ResultSetHandler. But we don't yet support registering "out"
> parameters on the CallableStatement in a convenient way and retrieving them
> back into an object.
> DBUTILS-28 requests stored procedure support and provides a patch, but I
> don't like the patch. Regardless, we really should support a few helpers
> like:
> {code}
> void registerOutParameters(CallableStatement stmt, int... sqlTypes)
> Object[] getOutParameters(CallableStatement stmt)
> void registerOutParameters(CallableStatement stmt, Class<?> beanClass)
> <T> T getOutParameters(CallableStatement stmt, Class<T> beanClass)
> {code}
> You should be able to write code like this:
> {code}
> CallableStatement stmt = runner.prepareCall(myString);
> helper.registerOutParameters(stmt, MyBean.class);
> queryRunner.fillStatement(stmt, foo, bar, baz);
> stmt.executeUpdate();
> MyBean bean = helper.getOutParameters(stmt, MyBean.class);
> {code}
> Or like this:
> {code}
> CallableStatement stmt = runner.prepareCall(myString);
> helper.registerOutParameters(stmt, TINYINT, DECIMAL);
> queryRunner.fillStatement(stmt, foo, bar, baz);
> stmt.executeUpdate();
> Object[] result = helper.getOutParameters(stmt);
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)