[ 
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)

Reply via email to