Intended to use to call SQL functions that return a single result using a query like "select user()" or "select sysdate from dual". It is not intended for calling more complex stored functions or for using a CallableStatement to invoke a stored procedure or stored function. Use StoredProcedure or SqlCall for this type of processing.
This is a concrete class, which there is often no need to subclass.
Code using this package can create an object of this type, declaring SQL
and parameters, and then invoke the appropriate run method
repeatedly to execute the function. Subclasses are only supposed to add
specialized run methods for specific parameter and return types.
Like all RdbmsOperation objects, SqlFunction objects are thread-safe.
StoredProcedure
| Modifier and Type | Field and Description |
|---|---|
| private final SingleColumnRowMapper |
| Access | Constructor and Description |
|---|---|
| public | |
| public | SqlFunction(DataSource
the DataSource to obtain connections from ds, String the SQL to execute sql)Create a new SqlFunction object with SQL, but without parameters. |
| public | SqlFunction(DataSource
the DataSource to obtain connections from ds, String the SQL to execute sql, int[] the SQL types of the parameters, as defined in the
types)java.sql.Types classCreate a new SqlFunction object with SQL and parameters. |
| public | SqlFunction(DataSource
the DataSource to obtain connections from ds, String the SQL to execute sql, int[] the SQL types of the parameters, as defined in the
types, Class<T> java.sql.Types classthe type that the result object is required to match resultType)Create a new SqlFunction object with SQL, parameters and a result type. |
| Modifier and Type | Method and Description |
|---|---|
| protected T | mapRow(ResultSet
the ResultSet we're working through rs, int row number (from 0) we're up to rowNum)Implements abstract org. |
| public int | |
| public int | Returns: the value of the functionsingle int parameter parameter)Convenient method to run the function with a single int argument. |
| public int | |
| public Object | Returns: the value of the functionConvenient method to run the function without arguments, returning the value as an object. |
| public Object | Returns: the value of the function as an Objectsingle int parameter parameter)Convenient method to run the function with a single int argument. |
| public Object | Returns: the value of the function, as an Objectarray of parameters. These will be objects or
object wrapper types for primitives. parameters)Analogous to the |
| public void |
| rowMapper | back to summary |
|---|---|
| private final SingleColumnRowMapper<T> rowMapper | |
| SqlFunction | back to summary |
|---|---|
| public SqlFunction() Constructor to allow use as a JavaBean.
A DataSource, SQL and any parameters must be supplied before
invoking the
| |
| SqlFunction | back to summary |
|---|---|
| public SqlFunction(DataSource ds, String sql) Create a new SqlFunction object with SQL, but without parameters. Must add parameters or settle with none.
| |
| SqlFunction | back to summary |
|---|---|
| public SqlFunction(DataSource ds, String sql, int[] types) Create a new SqlFunction object with SQL and parameters.
| |
| SqlFunction | back to summary |
|---|---|
| public SqlFunction(DataSource ds, String sql, int[] types, Class<T> resultType) Create a new SqlFunction object with SQL, parameters and a result type.
| |
| mapRow | back to summary |
|---|---|
| protected T mapRow(ResultSet rs, int rowNum) throws SQLException Implements abstract org. This implementation of this method extracts a single value from the single row returned by the function. If there are a different number of rows returned, this is treated as an error.
| |
| run | back to summary |
|---|---|
| public int run() Convenient method to run the function without arguments.
| |
| run | back to summary |
|---|---|
| public int run(int parameter) Convenient method to run the function with a single int argument.
| |
| run | back to summary |
|---|---|
| public int run(Object... parameters) Analogous to the SqlQuery.execute([]) method. This is a generic method to execute a query, taken a number of arguments.
| |
| runGeneric | back to summary |
|---|---|
| public Object runGeneric() Convenient method to run the function without arguments, returning the value as an object. | |
| runGeneric | back to summary |
|---|---|
| public Object runGeneric(int parameter) Convenient method to run the function with a single int argument. | |
| runGeneric | back to summary |
|---|---|
| public Object runGeneric(Object[] parameters) Analogous to the
| |
| setResultType | back to summary |
|---|---|
| public void setResultType(Class<T> resultType) Specify the type that the result object is required to match. If not specified, the result value will be exposed as returned by the JDBC driver. | |