CallableStatement 用于执行 SQL 存储过程。
JDBC 提供了一个存储过程 SQL escape,它允许以所有 RDBMS 的标准方式调用存储过程。该 escape 语法具有一个包含结果参数的格式和一个不包含结果参数的格式。如果使用结果参数,它必须被注册为一个 OUT 参数。其它的参数可以用于输入、输出或同时用于两者。参数通过编号被顺序的引用。第一个参数是 1。
{?= call [,, ...]}
{call [,, ...]}
用从 PreparedStatement 继承的设置方法设置 IN 参数。所有 OUT 参数的类型必须在执行该存储过程之前注册;执行后的参数值用该类提供的
get 方法获得。
Callable 语句可能返回一个 ResultSet 或多个 ResultSet。多
ResultSets 由从 Statement 继承的操作处理。
为了最大的限度的可移植性,调用的 ResultSet 和修改次数必须在获得输出参数值之前处理。
接口 java.sql.CallableStatement
- public interface CallableStatement
- extends PreparedStatement
- 参见:
- prepareCall, ResultSet
方法索引
- getBigDecimal(int, int)
-
获得一个 NUMERIC 参数的值,作为一个 java.math.BigDecimal 对象。
- getBoolean(int)
- 获得一个 BIT 参数的值,作为一个 Java boolean。
- getByte(int)
- 获得一个 TINYINT 参数的值,作为一个 Java byte。
- getBytes(int)
- 获得一个 SQL BINARY 或 VARBINARY 参数的值,作为一个 Java byte []。
- getDate(int)
- 获得一个 SQL DATE 参数的值,作为一个 java.sql.Date 对象。
- getDouble(int)
- 获得一个 DOUBLE 参数的值,作为一个 Java double。
- getFloat(int)
- 获得一个 FLOAT 参数的值,作为一个 Java float。
- getInt(int)
- 获得一个 INTEGER 参数的值,作为一个 Java int。
- getLong(int)
- 获得一个 BIGINT 参数的值,作为一个 Java long。
- getObject(int)
- 获得一个参数的值,作为一个 Java object。
- getShort(int)
- 获得一个 SMALLINT 参数的值,作为一个 Java short。
- getString(int)
- 获得一个 CHAR、VARCHAR 或 LONGVARCHAR 参数的值,作为一个
Java String。
- getTime(int)
- 获得一个 SQL TIME 参数的值,作为一个 java.sql.Time 对象。
- getTimestamp(int)
- 获得一个 SQL TIMESTAMP 参数的值,作为一个 java.sql.Timestamp 对象。
- registerOutParameter(int, int)
- 在执行存储过程调用之前,必须显式的调用 registerOutParameter
为每个输出参数的 java.sql.Type 进行注册。
- registerOutParameter(int, int, int)
- 使用 registerOutParameter 的这个版本为 Numeric 或 Decimal
输出参数注册。
- wasNull()
- 一个 OUT 参数可能的值是 SQL NULL ;wasNull 报告最后读的值是否为这个特殊的值。
方法
registerOutParameter
public abstract void registerOutParameter(int parameterIndex,
int sqlType) throws SQLException
- 在执行存储过程调用之前,必须显式的调用 registerOutParameter
为每个输出参数的 java.sql.Type 进行注册。
注意: 当读取一个输出参数的值时,必须使用 getXXX 方法,它的 Java 类型 XXX 与该参数注册的 SQL 类型相应。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- sqlType - 由 java.sql.Types 决定的 SQL 类型代码;对于
Numeric 或 Decimal 类型的参数使用可以接受小数位数的
registerOutParameter 版本。
- 抛出:
SQLException
- 如果发生了数据访问错误。
- 参见:
- Type
registerOutParameter
public abstract void registerOutParameter(int parameterIndex,
int sqlType,
int scale) throws SQLException
- 使用 registerOutParameter 的这个版本为 Numeric 或 Decimal
输出参数注册。
注意: 当读取一个输出参数的值时,必须使用 getXXX 方法,它的 Java 类型 XXX 与该参数注册的 SQL 类型相应。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- sqlType - 使用 java.sql.Type.NUMERIC 或 java.sql.Type.DECIMAL
- scale - 一个大于等于零的值,表示期望的小数点右边数字的数目
- 抛出:
SQLException
- 如果发生了数据访问错误。
- 参见:
- Type
wasNull
public abstract boolean wasNull() throws SQLException
- 一个 OUT 参数可能的值是 SQL NULL ;wasNull 报告最后读的值是否为这个特殊的值。
注意:必须首先对一个参数调用 getXXX 方法读取它的值,然后调用
wasNull() 方法检查该值是否为 SQL NULL。
- 返回值:
- 如果读的最后的参数为 SQL NULL 则为 true
- 抛出:
SQLException
- 如果发生了数据访问错误。
getString
public abstract String getString(int parameterIndex) throws SQLException
- 获得一个 CHAR、VARCHAR 或 LONGVARCHAR 参数的值,作为一个
Java String。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBoolean
public abstract boolean getBoolean(int parameterIndex) throws SQLException
- 获得一个 BIT 参数的值,作为一个 Java boolean。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 false
- 抛出:
SQLException
- 如果发生了数据访问错误。
getByte
public abstract byte getByte(int parameterIndex) throws SQLException
- 获得一个 TINYINT 参数的值,作为一个 Java byte。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getShort
public abstract short getShort(int parameterIndex) throws SQLException
- 获得一个 SMALLINT 参数的值,作为一个 Java short。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getInt
public abstract int getInt(int parameterIndex) throws SQLException
- 获得一个 INTEGER 参数的值,作为一个 Java int。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getLong
public abstract long getLong(int parameterIndex) throws SQLException
- 获得一个 BIGINT 参数的值,作为一个 Java long。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getFloat
public abstract float getFloat(int parameterIndex) throws SQLException
- 获得一个 FLOAT 参数的值,作为一个 Java float。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDouble
public abstract double getDouble(int parameterIndex) throws SQLException
- 获得一个 DOUBLE 参数的值,作为一个 Java double。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBigDecimal
public abstract BigDecimal getBigDecimal(int parameterIndex,
int scale) throws SQLException
- 获得一个 NUMERIC 参数的值,作为一个 java.math.BigDecimal 对象。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- scale - 一个大于等于零的值,表示期望的小数点右边数字的数目
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBytes
public abstract byte[] getBytes(int parameterIndex) throws SQLException
- 获得一个 SQL BINARY 或 VARBINARY 参数的值,作为一个 Java byte []。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDate
public abstract Date getDate(int parameterIndex) throws SQLException
- 获得一个 SQL DATE 参数的值,作为一个 java.sql.Date 对象。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTime
public abstract Time getTime(int parameterIndex) throws SQLException
- 获得一个 SQL TIME 参数的值,作为一个 java.sql.Time 对象。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTimestamp
public abstract Timestamp getTimestamp(int parameterIndex) throws SQLException
- 获得一个 SQL TIMESTAMP 参数的值,作为一个 java.sql.Timestamp 对象。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- 返回值:
- 参数值;如果该值是 SQL NULL 则结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getObject
public abstract Object getObject(int parameterIndex) throws SQLException
- 获得一个参数的值,作为一个 Java object。
该方法返回一个 Java 对象,它的类型与用 SQL 类型相应,该 SQL 类型是用
registerOutParameter 为该参数注册的类型。
注意该方法可以用于读数据库特定的抽象数据类型。 可以指定一个
java.sql.types.OTHER 的 targetSqlType 进行读取,该类型允许驱动程序返回一个数据库特定的 Java 类型。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个参数是 2, ...
- 返回值:
- 保持该 OUT 参数值的 java.lang.Object。
- 抛出:
SQLException
- 如果发生了数据访问错误。
- 参见:
- Types