diff options
Diffstat (limited to 'luni/src/main/java/java/sql/CallableStatement.java')
-rw-r--r-- | luni/src/main/java/java/sql/CallableStatement.java | 1384 |
1 files changed, 1384 insertions, 0 deletions
diff --git a/luni/src/main/java/java/sql/CallableStatement.java b/luni/src/main/java/java/sql/CallableStatement.java new file mode 100644 index 0000000..be5463b --- /dev/null +++ b/luni/src/main/java/java/sql/CallableStatement.java @@ -0,0 +1,1384 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package java.sql; + +import java.math.BigDecimal; +import java.util.Calendar; +import java.util.Map; +import java.net.URL; +import java.io.InputStream; +import java.io.Reader; + +/** + * An interface used to call <i>Stored Procedures</i>. + * <p> + * The JDBC API provides an SQL escape syntax allowing <i>Stored Procedures</i> + * to be called in a standard way for all databases. The JDBC escape syntax has + * two forms. One form includes a result parameter. The second form does not + * include a result parameter. Where the result parameter is used, it must be + * declared as an {@code OUT} parameter. Other parameters can be declared as + * {@code IN}, {@code OUT}, or {@code INOUT}. Parameters are referenced either by + * name or by a numerical index starting at 1. + * <p> + * The correct syntax is: + * <dd> + * <dl> + * { ?= call <procedurename> [( [parameter1,parameter2,...] )] } + * </dl> + * <dl> + * { call <procedurename> [( [parameter1,parameter2,...] )] } + * </dl> + * </code></dd> + * {@code IN} parameters are set before calling the procedure, + * using the setter methods which are inherited from {@code PreparedStatement}. + * For {@code OUT} parameters, their type must be registered before executing + * the stored procedure. The values are retrieved using the getter methods + * defined in the {@code CallableStatement} interface. + * <p> + * {@code CallableStatement}s can return one or more {@code ResultSets}. In the + * event that multiple {@code ResultSets} are returned, they are accessed using + * the methods inherited from the {@code Statement} interface. + */ +public interface CallableStatement extends PreparedStatement { + + /** + * Gets the value of a specified JDBC {@code ARRAY} parameter as a + * {@code java.sql.Array}. + * + * @param parameterIndex + * the parameter index, where the first parameter has + * index 1. + * @return a {@code java.sql.Array} containing the parameter value. + * @throws SQLException + * if a database error occurs. + */ + public Array getArray(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code ARRAY} parameter as a {@code + * java.sql.Array}. + * + * @param parameterName + * the desired parameter's name. + * @return a {@code java.sql.Array} containing the parameter's value. + * @throws SQLException + * if there is a problem accessing the database. + */ + public Array getArray(String parameterName) throws SQLException; + + /** + * Returns a new {@link BigDecimal} representation of the JDBC {@code + * NUMERIC} parameter specified by the input index. + * + * @param parameterIndex + * the parameter number index where the first parameter has index + * 1. + * @return a {@code java.math.BigDecimal} representing the value of the + * specified parameter. The value {@code null} is returned if + * the parameter in question is an SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public BigDecimal getBigDecimal(int parameterIndex) throws SQLException; + + /** + * Returns a new {@link BigDecimal} representation of the JDBC {@code + * NUMERIC} parameter specified by the input index. The number of digits + * after the decimal point is specified by {@code scale}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @param scale + * the number of digits after the decimal point to get. + * @return a {@code java.math.BigDecimal} representing the value of the + * specified parameter. The value {@code null} is returned if + * the parameter in question is an SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @deprecated Use {@link #getBigDecimal(int)} or + * {@link #getBigDecimal(String)} + */ + @Deprecated + public BigDecimal getBigDecimal(int parameterIndex, int scale) + throws SQLException; + + /** + * Returns a new {@link BigDecimal} representation of the JDBC {@code + * NUMERIC} parameter specified by the input name. + * + * @param parameterName + * the desired parameter's name. + * @return a {@code java.math.BigDecimal} representing the value of the + * specified parameter. The value {@code null} is returned if + * the parameter in question is an SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public BigDecimal getBigDecimal(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code BLOB} parameter as a {@code + * java.sql.Blob}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code java.sql.Blob} representing the value of the + * specified parameter. The value {@code null} is returned if + * the parameter in question is an SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public Blob getBlob(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code BLOB} parameter as a {@code + * java.sql.Blob}. + * + * @param parameterName + * the desired parameter's name. + * @return a {@code java.sql.Blob} representing the value of the + * specified parameter. The value {@code null} is returned if + * the parameter in question is an SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public Blob getBlob(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code BIT} parameter as a boolean. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code boolean} representing the parameter value. {@code false} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public boolean getBoolean(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code BIT} parameter as a {@code + * boolean}. + * + * @param parameterName + * the desired parameter's name. + * @return a {@code boolean} representation of the value of the parameter. + * {@code false} is returned if the SQL value is {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public boolean getBoolean(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TINYINT} parameter as a {@code + * byte}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code byte} representation of the value of the parameter. + * {@code 0} is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public byte getByte(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TINYINT} parameter as a Java + * {@code byte}. + * + * @param parameterName + * the desired parameter's name. + * @return a {@code byte} representation of the value of the parameter. + * {@code 0} is returned if the SQL value is {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public byte getByte(String parameterName) throws SQLException; + + /** + * Returns a byte array representation of the indexed JDBC {@code BINARY} or + * {@code VARBINARY} parameter. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return an array of bytes giving the value of the parameter. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public byte[] getBytes(int parameterIndex) throws SQLException; + + /** + * Returns a byte array representation of the named JDBC {@code BINARY} or + * {@code VARBINARY} parameter. + * + * @param parameterName + * the name of the parameter. + * @return an array of bytes giving the value of the parameter. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public byte[] getBytes(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code CLOB} parameter as a {@code + * java.sql.Clob}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code java.sql.Clob} representing the value of the + * parameter. {@code null} is returned if the value is SQL + * {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Clob + */ + public Clob getClob(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code CLOB} parameter as a {@code + * java.sql.Clob}. + * + * @param parameterName + * the name of the parameter. + * @return a {@code java.sql.Clob} with the value of the parameter. {@code + * null} is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Clob + */ + public Clob getClob(String parameterName) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DATE} parameter as a {@code + * java.sql.Date}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the {@code java.sql.Date} representing the parameter's value. + * {@code null} is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Date + */ + public Date getDate(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DATE} parameter as a {@code + * java.sql.Date}, using the specified {@code Calendar} to construct the date. + * <p> + * The JDBC driver uses the calendar to create the Date using a particular + * timezone and locale. The default behavior of the driver is to use the Java + * virtual machine default settings. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @param cal + * the {@code Calendar} to use to construct the date + * @return the {@code java.sql.Date} giving the parameter's value. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Date + */ + public Date getDate(int parameterIndex, Calendar cal) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DATE} parameter as a {@code + * java.sql.Date}. + * + * @param parameterName + * the name of the desired parameter. + * @return the {@code java.sql.Date} giving the parameter's value. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Date + */ + public Date getDate(String parameterName) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DATE} parameter as a {@code + * java.sql.Date}, using the specified {@code Calendar} to construct the date. + * <p> + * The JDBC driver uses the calendar to create the date using a particular + * timezone and locale. The default behavior of the driver is to use the Java + * virtual machine default settings. + * + * @param parameterName + * the name of the desired parameter. + * @param cal + * used for creating the returned {@code Date}. + * @return the {@code java.sql.Date} giving the parameter's value. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Date + */ + public Date getDate(String parameterName, Calendar cal) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DOUBLE} parameter as a + * {@code double}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the parameter's value as a {@code double}. {@code 0.0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public double getDouble(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code DOUBLE} parameter as a + * {@code double}. + * + * @param parameterName + * the name of the desired parameter. + * @return the parameter's value as a {@code double}. {@code 0.0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + */ + public double getDouble(String parameterName) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code FLOAT} parameter as a {@code + * float}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the parameter's value as a {@code float}. {@code 0.0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public float getFloat(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code FLOAT} parameter as a Java + * {@code float}. + * + * @param parameterName + * the name of the desired parameter. + * @return the parameter's value as a {@code float}. {@code 0.0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + */ + public float getFloat(String parameterName) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code INTEGER} parameter as an + * {@code int}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the {@code int} giving the parameter's value. {@code 0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public int getInt(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code INTEGER} parameter as an + * {@code int}. + * + * @param parameterName + * the name of the desired parameter. + * @return the {@code int} giving the parameter's value. {@code 0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public int getInt(String parameterName) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code BIGINT} parameter as a + * {@code long}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the {@code long} giving the parameter's value. {@code 0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public long getLong(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified JDBC {@code BIGINT} parameter as a + * {@code long}. + * + * @param parameterName + * the name of the desired parameter. + * @return the {@code long} giving the parameter's value. {@code 0} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public long getLong(String parameterName) throws SQLException; + + /** + * Gets the value of the specified parameter as a Java {@code Object}. + * <p> + * The object type returned is the JDBC type registered for the parameter + * with a {@code registerOutParameter} call. If a parameter was registered + * as a {@code java.sql.Types.OTHER} then it may hold abstract types that + * are particular to the connected database. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return an Object holding the value of the parameter. + * @throws SQLException + * if a database error occurs. + */ + public Object getObject(int parameterIndex) throws SQLException; + + /** + * Gets the value of the specified parameter as an {@code Object}. The + * {@code Map} gives the correspondence between SQL types and Java classes. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @param map + * the {@code Map} giving the correspondence between SQL + * types and Java classes. + * @return an Object holding the value of the parameter. + * @throws SQLException + * if a database error occurs. + */ + public Object getObject(int parameterIndex, Map<String, Class<?>> map) + throws SQLException; + + /** + * Gets the value of the specified parameter as an {@code Object}. + * <p> + * The object type returned is the JDBC type that was registered for + * the parameter by an earlier call to {@link #registerOutParameter}. + * If a parameter was registered as a {@code java.sql.Types.OTHER} + * then it may hold abstract types that are particular to the + * connected database. + * + * @param parameterName + * the parameter name. + * @return the Java {@code Object} representation of the value of the + * parameter. + * @throws SQLException + * if there is a problem accessing the database. + */ + public Object getObject(String parameterName) throws SQLException; + + /** + * Gets the value of a specified parameter as an {@code Object}. The + * actual return type is determined by the {@code Map} parameter which + * gives the correspondence between SQL types and Java classes. + * + * @param parameterName + * the parameter name. + * @param map + * the {@code Map} of SQL types to their Java counterparts + * @return an {@code Object} holding the value of the parameter. + * @throws SQLException + * if there is a problem accessing the database. + */ + public Object getObject(String parameterName, Map<String, Class<?>> map) + throws SQLException; + + /** + * Gets the value of a specified SQL {@code REF(<structured type>)} + * parameter as a {@code java.sql.Ref}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code java.sql.Ref} with the parameter value. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public Ref getRef(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified SQL {@code REF(<structured type>)} + * parameter as a {@code java.sql.Ref}. + * + * @param parameterName + * the desired parameter's name. + * @return the parameter's value in the form of a {@code + * java.sql.Ref}. A {@code null} reference is returned if the + * parameter's value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + * @see Ref + */ + public Ref getRef(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code SMALLINT} parameter as a + * {@code short}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the parameter's value as a {@code short}. 0 is returned + * if the parameter's value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + */ + public short getShort(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code SMALLINT} parameter as a + * {@code short}. + * + * @param parameterName + * the desired parameter's name. + * @return the parameter's value as a {@code short}. 0 is returned + * if the parameter's value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + */ + public short getShort(String parameterName) throws SQLException; + + /** + * Returns the indexed parameter's value as a {@code String}. The + * parameter value must be one of the JDBC types {@code CHAR}, + * {@code VARCHAR} or {@code LONGVARCHAR}. + * <p> + * The {@code String} corresponding to a {@code CHAR} of fixed length + * will be of identical length to the value in the database inclusive + * of padding characters. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the parameter's value as a {@code String}. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + */ + public String getString(int parameterIndex) throws SQLException; + + /** + * Returns the named parameter's value as a string. The parameter value must + * be one of the JDBC types {@code CHAR}, {@code VARCHAR} or {@code + * LONGVARCHAR}. + * <p> + * The string corresponding to a {@code CHAR} of fixed length will be of + * identical length to the value in the database inclusive of padding + * characters. + * + * @param parameterName + * the desired parameter's name. + * @return the parameter's value as a {@code String}. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if there is a problem accessing the database. + */ + public String getString(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TIME} parameter as a {@code + * java.sql.Time}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return the parameter's value as a {@code java.sql.Time}. + * {@code null} is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Time + */ + public Time getTime(int parameterIndex) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TIME} parameter as a {@code + * java.sql.Time}, using the supplied {@code Calendar} to construct the + * time. The JDBC driver uses the calendar to handle specific timezones + * and locales in order to determine {@code Time}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @param cal + * the calendar to use in constructing {@code Time}. + * @return the parameter's value as a {@code java.sql.Time}. + * {@code null} is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Time + * @see java.util.Calendar + */ + public Time getTime(int parameterIndex, Calendar cal) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TIME} parameter as a {@code + * java.sql.Time}. + * + * @param parameterName + * the name of the desired parameter. + * @return a new {@code java.sql.Time} with the parameter's value. A {@code + * null} reference is returned for an SQL value of {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Time + */ + public Time getTime(String parameterName) throws SQLException; + + /** + * Gets the value of a specified JDBC {@code TIME} parameter as a {@code + * java.sql.Time}, using the supplied {@code Calendar} to construct + * the time. The JDBC driver uses the calendar to handle specific + * timezones and locales when creating {@code Time}. + * + * @param parameterName + * the name of the desired parameter. + * @param cal + * used for creating the returned {@code Time} + * @return a new {@code java.sql.Time} with the parameter's value. A {@code + * null} reference is returned for an SQL value of {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see Time + * @see java.util.Calendar + */ + public Time getTime(String parameterName, Calendar cal) throws SQLException; + + /** + * Returns the indexed parameter's {@code TIMESTAMP} value as a {@code + * java.sql.Timestamp}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1 + * @return the parameter's value as a {@code java.sql.Timestamp}. A + * {@code null} reference is returned for an SQL value of {@code + * NULL}. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + */ + public Timestamp getTimestamp(int parameterIndex) throws SQLException; + + /** + * Returns the indexed parameter's {@code TIMESTAMP} value as a {@code + * java.sql.Timestamp}. The JDBC driver uses the supplied {@code Calendar} + * to handle specific timezones and locales when creating the result. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1 + * @param cal + * used for creating the returned {@code Timestamp} + * @return the parameter's value as a {@code java.sql.Timestamp}. A + * {@code null} reference is returned for an SQL value of {@code + * NULL}. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + */ + public Timestamp getTimestamp(int parameterIndex, Calendar cal) + throws SQLException; + + /** + * Returns the named parameter's {@code TIMESTAMP} value as a {@code + * java.sql.Timestamp}. + * + * @param parameterName + * the name of the desired parameter. + * @return the parameter's value as a {@code java.sql.Timestamp}. A + * {@code null} reference is returned for an SQL value of {@code + * NULL}. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + */ + public Timestamp getTimestamp(String parameterName) throws SQLException; + + /** + * Returns the indexed parameter's {@code TIMESTAMP} value as a {@code + * java.sql.Timestamp}. The JDBC driver uses the supplied {@code Calendar} + * to handle specific timezones and locales when creating the result. + * + * @param parameterName + * the name of the desired parameter. + * @param cal + * used for creating the returned {@code Timestamp} + * @return the parameter's value as a {@code java.sql.Timestamp}. A + * {@code null} reference is returned for an SQL value of {@code + * NULL}. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + */ + public Timestamp getTimestamp(String parameterName, Calendar cal) + throws SQLException; + + /** + * Gets the value of a specified JDBC {@code DATALINK} parameter as a + * {@code java.net.URL}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1. + * @return a {@code URL} giving the parameter's value. {@code null} + * is returned if the value is SQL {@code NULL}. + * @throws SQLException + * if a database error occurs. + * @see java.net.URL + */ + public URL getURL(int parameterIndex) throws SQLException; + + /** + * Returns the named parameter's JDBC {@code DATALINK} value in a new Java + * {@code java.net.URL}. + * + * @param parameterName + * the name of the desired parameter. + * @return a new {@code java.net.URL} encapsulating the parameter value. A + * {@code null} reference is returned for an SQL value of {@code + * NULL}. + * @throws SQLException + * if a database error occurs. + * @see java.net.URL + */ + public URL getURL(String parameterName) throws SQLException; + + /** + * Defines the type of a specified {@code OUT} parameter. All {@code OUT} + * parameters must have their type defined before a stored procedure is + * executed. + * <p> + * The type supplied in the {@code sqlType} parameter fixes the + * type that will be returned by the getter methods of + * {@code CallableStatement}. + * If a database specific type is expected for a parameter, the Type {@code + * java.sql.Types.OTHER} should be used. Note that there is another variant + * of this method for User Defined Types or a {@code REF} type. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1 + * @param sqlType + * the JDBC type as defined by {@code java.sql.Types}. The JDBC + * types {@code NUMERIC} and {@code DECIMAL} should be defined + * using {@link #registerOutParameter(int, int, int)}. + * @throws SQLException + * if a database error occurs. + * @see Types + */ + public void registerOutParameter(int parameterIndex, int sqlType) + throws SQLException; + + /** + * Defines the Type of a specified {@code OUT} parameter. All {@code OUT} + * parameters must have their type defined before a stored procedure is + * executed. This version of the {@code registerOutParameter} method, which + * has a scale parameter, should be used for the JDBC types {@code NUMERIC} + * and {@code DECIMAL}, where there is a need to specify the number of + * digits expected after the decimal point. + * <p> + * The type supplied in the {@code sqlType} parameter fixes the + * type that will be returned by the getter methods of + * {@code CallableStatement}. + * + * @param parameterIndex + * the parameter number index, where the first parameter has + * index 1 + * @param sqlType + * the JDBC type as defined by {@code java.sql.Types}. + * @param scale + * the number of digits after the decimal point. Must be greater + * than or equal to 0. + * @throws SQLException + * if a database error occurs. + * @see Types + */ + public void registerOutParameter(int parameterIndex, int sqlType, int scale) + throws SQLException; + + /** + * Defines the Type of a specified {@code OUT} parameter. This variant + * of the method is designed for use with parameters that are + * <i>User Defined Types</i> (UDT) or a {@code REF} type, although it + * can be used for any type. + * + * @param paramIndex + * the parameter number index, where the first parameter has + * index 1. + * @param sqlType + * a JDBC type expressed as a constant from {@link Types}. + * @param typeName + * an SQL type name. For a {@code REF} type, this name should be + * the fully qualified name of the referenced type. + * @throws SQLException + * if a database error occurs. + * @see Ref + */ + public void registerOutParameter(int paramIndex, int sqlType, + String typeName) throws SQLException; + + /** + * Defines the Type of a specified {@code OUT} parameter. All OUT parameters + * must have their Type defined before a stored procedure is executed. + * <p> + * The type supplied in the {@code sqlType} parameter fixes the + * type that will be returned by the getter methods of + * {@code CallableStatement}. + * If a database-specific type is expected for a parameter, the Type {@code + * java.sql.Types.OTHER} should be used. Note that there is another variant + * of this method for User Defined Types or a {@code REF} type. + * + * @param parameterName + * the parameter name. + * @param sqlType + * a JDBC type expressed as a constant from {@link Types}. Types + * {@code NUMERIC} and {@code DECIMAL} should be defined using + * the variant of this method that takes a {@code scale} + * parameter. + * @throws SQLException + * if a database error occurs. + */ + public void registerOutParameter(String parameterName, int sqlType) + throws SQLException; + + /** + * Defines the Type of a specified {@code OUT} parameter. All {@code OUT} + * parameters must have their Type defined before a stored procedure is + * executed. This version of the {@code registerOutParameter} method, which + * has a scale parameter, should be used for the JDBC types {@code NUMERIC} + * and {@code DECIMAL}, where there is a need to specify the number of + * digits expected after the decimal point. + * <p> + * The type supplied in the {@code sqlType} parameter fixes the + * type that will be returned by the getter methods of + * {@code CallableStatement}. + * + * @param parameterName + * the parameter name. + * @param sqlType + * a JDBC type expressed as a constant from {@link Types}. + * @param scale + * the number of digits after the decimal point. Must be greater + * than or equal to 0. + * @throws SQLException + * if a database error occurs. + */ + public void registerOutParameter(String parameterName, int sqlType, + int scale) throws SQLException; + + /** + * Defines the Type of a specified {@code OUT} parameter. This variant of + * the method is designed for use with parameters that are <i>User Defined + * Types</i> (UDT) or a {@code REF} type, although it can be used for any + * type. + * + * @param parameterName + * the parameter name + * @param sqlType + * a JDBC type expressed as a constant from {@link Types} + * @param typeName + * the fully qualified name of an SQL structured type. For a + * {@code REF} type, this name should be the fully qualified name + * of the referenced type. + * @throws SQLException + * if a database error occurs. + */ + public void registerOutParameter(String parameterName, int sqlType, + String typeName) throws SQLException; + + /** + * Sets the value of a specified parameter to the content of a supplied + * {@code InputStream}, which has a specified number of bytes. + * <p> + * This is a good method for setting an SQL {@code LONGVARCHAR} parameter + * where the length of the data is large. Data is read from the {@code + * InputStream} until end-of-file is reached or the specified number of + * bytes is copied. + * + * @param parameterName + * the parameter name + * @param theInputStream + * the ASCII input stream carrying the data to update the + * parameter with. + * @param length + * the number of bytes in the {@code InputStream} to copy to the + * parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setAsciiStream(String parameterName, + InputStream theInputStream, int length) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code + * java.math.BigDecimal} value. + * + * @param parameterName + * the name of the parameter. + * @param theBigDecimal + * the {@code java.math.BigInteger} value to set. + * @throws SQLException + * if a database error occurs. + */ + public void setBigDecimal(String parameterName, BigDecimal theBigDecimal) + throws SQLException; + + /** + * Sets the value of a specified parameter to the content of a supplied + * binary {@code InputStream}, which has a specified number of bytes. + * <p> + * Use this method when a large amount of data needs to be set into a + * {@code LONGVARBINARY} parameter. + * + * @param parameterName + * the name of the parameter. + * @param theInputStream + * the binary {@code InputStream} carrying the data to update the + * parameter. + * @param length + * the number of bytes in the {@code InputStream} to copy to the + * parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setBinaryStream(String parameterName, + InputStream theInputStream, int length) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code boolean} + * value. + * + * @param parameterName + * the parameter name. + * @param theBoolean + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setBoolean(String parameterName, boolean theBoolean) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code byte} value. + * + * @param parameterName + * the parameter name. + * @param theByte + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setByte(String parameterName, byte theByte) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied array of bytes. The + * array is mapped to {@code VARBINARY} or else {@code LONGVARBINARY} in the + * connected database. + * + * @param parameterName + * the parameter name. + * @param theBytes + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setBytes(String parameterName, byte[] theBytes) + throws SQLException; + + /** + * Sets the value of a specified parameter to the character content of a + * {@code Reader} object, with the specified length of character data. + * + * @param parameterName + * the parameter name. + * @param reader + * the new value with which to update the parameter. + * @param length + * a count of the characters contained in {@code reader}. + * @throws SQLException + * if a database error occurs. + */ + public void setCharacterStream(String parameterName, Reader reader, + int length) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code + * java.sql.Date} value. + * + * @param parameterName + * the parameter name. + * @param theDate + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setDate(String parameterName, Date theDate) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code + * java.sql.Date} value, using a supplied calendar to map the date. The + * calendar allows the application to control the timezone used to compute + * the SQL {@code DATE} in the database. In case that no calendar is + * supplied, the driver uses the default timezone of the Java virtual + * machine. + * + * @param parameterName + * the parameter name. + * @param theDate + * the new value with which to update the parameter. + * @param cal + * a {@code Calendar} to use to construct the SQL {@code DATE} + * value. + * @throws SQLException + * if a database error occurs. + * @see java.util.Calendar + * @see Date + */ + public void setDate(String parameterName, Date theDate, Calendar cal) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code double} + * value. + * + * @param parameterName + * the parameter name. + * @param theDouble + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setDouble(String parameterName, double theDouble) + throws SQLException; + + /** + * Sets the value of a specified parameter to to a supplied {@code float} + * value. + * + * @param parameterName + * the parameter name. + * @param theFloat + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setFloat(String parameterName, float theFloat) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code int} value. + * + * @param parameterName + * the parameter name. + * @param theInt + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setInt(String parameterName, int theInt) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code long} value. + * + * @param parameterName + * the parameter name. + * @param theLong + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setLong(String parameterName, long theLong) throws SQLException; + + /** + * Sets the value of a specified parameter to SQL {@code NULL}. Don't use + * this version of {@code setNull} for <i>User Defined Types</i> (UDT) or + * for {@code REF} type parameters. + * + * @param parameterName + * the parameter name. + * @param sqlType + * a JDBC type expressed as a constant from {@link Types}. + * @throws SQLException + * if a database error occurs. + */ + public void setNull(String parameterName, int sqlType) throws SQLException; + + /** + * Sets the value of a specified parameter to be SQL {@code NULL} where the + * parameter type is either {@code REF} or user defined (e.g. {@code STRUCT} + * , {@code JAVA_OBJECT} etc). + * <p> + * For reasons of portability, the caller is expected to supply both the SQL + * type code and type name (which is just the parameter name if the type is + * user defined, referred to as a {@code UDT}, or the name of the referenced + * type in case of a {@code REF} type). + * + * @param parameterName + * the parameter name. + * @param sqlType + * a JDBC type expressed as a constant from {@link Types}. + * @param typeName + * if the target parameter is a user defined type then this + * should contain the full type name. The fully qualified name of + * a {@code UDT} or {@code REF} type is ignored if the parameter + * is not a {@code UDT}. + * @throws SQLException + * if a database error occurs. + * @see Types + */ + public void setNull(String parameterName, int sqlType, String typeName) + throws SQLException; + + /** + * Sets the value of a specified parameter using a supplied object. Prior to + * issuing this request to the connected database {@code theObject} is + * transformed to the corresponding SQL type according to the standard Java + * to SQL mapping rules. + * <p> + * If the object's class implements the interface {@code SQLData}, the JDBC + * driver calls {@code SQLData.writeSQL} to write it to the SQL data stream. + * If {@code theObject} implements any of the following interfaces then the + * driver is in charge of mapping the value to the appropriate SQL type. + * <ul><li>{@link Ref}</li> + * <li>{@link Struct}</li> + * <li>{@link Array}</li> + * <li>{@link Clob}</li> + * <li>{@link Blob}</li> </ul> + * + * @param parameterName + * the parameter name + * @param theObject + * the new value with which to update the parameter + * @throws SQLException + * if a database error occurs. + * @see SQLData + */ + public void setObject(String parameterName, Object theObject) + throws SQLException; + + /** + * Sets the value of a specified parameter using a supplied object. + * <p> + * The parameter {@code theObject} is converted to the given {@code + * targetSqlType} before it is sent to the database. If the object has a + * custom mapping (its class implements the interface {@code SQLData}), the + * JDBC driver calls the method {@code SQLData.writeSQL} to write it to the + * SQL data stream. If {@code theObject} is an instance of one of the + * following types + * <ul> + * <li>{@link Ref}</li> + * <li>{@link Struct}</li> + * <li>{@link Array}</li> + * <li>{@link Clob}</li> + * <li>{@link Blob}</li> + * </ul> + * then the driver is in charge of mapping the value to the appropriate + * SQL type and deliver it to the database. + * + * @param parameterName + * the parameter name. + * @param theObject + * the new value with which to update the parameter. + * @param targetSqlType + * a JDBC type expressed as a constant from {@link Types}. + * @throws SQLException + * if a database error occurs. + * @see SQLData + */ + public void setObject(String parameterName, Object theObject, + int targetSqlType) throws SQLException; + + /** + * Sets the value of a specified parameter using a supplied object. + * <p> + * The object is converted to the given {@code targetSqlType} before it is + * sent to the database. If the object has a custom mapping (its class + * implements the interface {@code SQLData}), the JDBC driver calls the + * method {@code SQLData.writeSQL} to write it to the SQL data stream. If + * {@code theObject} implements any of the following interfaces + * <ul> + * <li>{@link Ref}</li> + * <li>{@link Struct}</li> + * <li>{@link Array}</li> + * <li>{@link Clob}</li> + * <li>{@link Blob}</li> + * </ul> + * then the driver is charge of mapping the value to the appropriate + * SQL type. + * + * @param parameterName + * the parameter name. + * @param theObject + * the new value with which to update the parameter. + * @param targetSqlType + * a JDBC type expressed as a constant from {@link Types}. + * @param scale + * where applicable, the number of digits after the decimal. + * point. + * @throws SQLException + * if a database error occurs. + * @see SQLData + */ + public void setObject(String parameterName, Object theObject, + int targetSqlType, int scale) throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code short} + * value. + * + * @param parameterName + * the name of the parameter. + * @param theShort + * a short value to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setShort(String parameterName, short theShort) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code String}. + * + * @param parameterName + * the name of the parameter. + * @param theString + * a {@code String} value to update the parameter. + * @throws SQLException + * if a database error occurs. + */ + public void setString(String parameterName, String theString) + throws SQLException; + + /** + * Sets the value of the parameter named {@code parameterName} to the value + * of the supplied {@code java.sql.Time}. + * + * @param parameterName + * the parameter name. + * @param theTime + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + * @see Time + */ + public void setTime(String parameterName, Time theTime) throws SQLException; + + /** + * Sets the value of the parameter named {@code parameterName} to the value + * of the supplied {@code java.sql.Time} using the supplied calendar. + * <p> + * The driver uses the supplied {@code Calendar} to create the SQL + * {@code TIME} value, which allows it to use a custom timezone - + * otherwise the driver uses the default timezone of the Java + * virtual machine. + * + * @param parameterName + * the parameter name. + * @param theTime + * the new value with which to update the parameter. + * @param cal + * used for creating the new SQL {@code TIME} value. + * @throws SQLException + * if a database error occurs. + * @see Time + */ + public void setTime(String parameterName, Time theTime, Calendar cal) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code + * java.sql.Timestamp} value. + * + * @param parameterName + * the parameter name. + * @param theTimestamp + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + */ + public void setTimestamp(String parameterName, Timestamp theTimestamp) + throws SQLException; + + /** + * Sets the value of a specified parameter to a supplied {@code + * java.sql.Timestamp} value, using the supplied calendar. + * <p> + * The driver uses the supplied calendar to create the SQL {@code TIMESTAMP} + * value, which allows it to use a custom timezone - otherwise the driver + * uses the default timezone of the Java virtual machine. + * + * @param parameterName + * the parameter name. + * @param theTimestamp + * the new value with which to update the parameter. + * @param cal + * used for creating the new SQL {@code TIME} value. + * @throws SQLException + * if a database error occurs. + * @see Timestamp + * @see java.util.Calendar + */ + public void setTimestamp(String parameterName, Timestamp theTimestamp, + Calendar cal) throws SQLException; + + /** + * Sets the value of a specified parameter to the supplied {@code + * java.net.URL}. + * + * @param parameterName + * the parameter name. + * @param theURL + * the new value with which to update the parameter. + * @throws SQLException + * if a database error occurs. + * @see java.net.URL + */ + public void setURL(String parameterName, URL theURL) throws SQLException; + + /** + * Gets whether the value of the last {@code OUT} parameter read was SQL + * {@code NULL}. + * + * @return true if the last parameter was SQL {@code NULL}, {@code false} + * otherwise. + * @throws SQLException + * if a database error occurs. + */ + public boolean wasNull() throws SQLException; +} |