commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Raymond DeCampo (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DBUTILS-50) Support CallableStatement "out" parameters
Date Thu, 11 Sep 2014 00:22:34 GMT

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

Mime
View raw message