CallableStatement 用于執(zhí)行 SQL 存儲過程。
JDBC 提供了一個存儲過程 SQL escape,它允許以所有 RDBMS 的標準方式調(diào)用存儲過程。該 escape 語法具有一個包含結(jié)果參數(shù)的格式和一個不包含結(jié)果參數(shù)的格式。如果使用結(jié)果參數(shù),它必須被注冊為一個 OUT 參數(shù)。其它的參數(shù)可以用于輸入、輸出或同時用于兩者。參數(shù)通過編號被順序的引用。第一個參數(shù)是 1。
{?= call [,, ...]}
{call [,, ...]}
用從 PreparedStatement 繼承的設置方法設置 IN 參數(shù)。所有 OUT 參數(shù)的類型必須在執(zhí)行該存儲過程之前注冊;執(zhí)行后的參數(shù)值用該類提供的
get 方法獲得。
Callable 語句可能返回一個 ResultSet 或多個 ResultSet。多
ResultSets 由從 Statement 繼承的操作處理。
為了最大的限度的可移植性,調(diào)用的 ResultSet 和修改次數(shù)必須在獲得輸出參數(shù)值之前處理。
接口 java.sql.CallableStatement
- public interface CallableStatement
- extends PreparedStatement
- 參見:
- prepareCall, ResultSet
方法索引
- getBigDecimal(int, int)
-
獲得一個 NUMERIC 參數(shù)的值,作為一個 java.math.BigDecimal 對象。
- getBoolean(int)
- 獲得一個 BIT 參數(shù)的值,作為一個 Java boolean。
- getByte(int)
- 獲得一個 TINYINT 參數(shù)的值,作為一個 Java byte。
- getBytes(int)
- 獲得一個 SQL BINARY 或 VARBINARY 參數(shù)的值,作為一個 Java byte []。
- getDate(int)
- 獲得一個 SQL DATE 參數(shù)的值,作為一個 java.sql.Date 對象。
- getDouble(int)
- 獲得一個 DOUBLE 參數(shù)的值,作為一個 Java double。
- getFloat(int)
- 獲得一個 FLOAT 參數(shù)的值,作為一個 Java float。
- getInt(int)
- 獲得一個 INTEGER 參數(shù)的值,作為一個 Java int。
- getLong(int)
- 獲得一個 BIGINT 參數(shù)的值,作為一個 Java long。
- getObject(int)
- 獲得一個參數(shù)的值,作為一個 Java object。
- getShort(int)
- 獲得一個 SMALLINT 參數(shù)的值,作為一個 Java short。
- getString(int)
- 獲得一個 CHAR、VARCHAR 或 LONGVARCHAR 參數(shù)的值,作為一個
Java String。
- getTime(int)
- 獲得一個 SQL TIME 參數(shù)的值,作為一個 java.sql.Time 對象。
- getTimestamp(int)
- 獲得一個 SQL TIMESTAMP 參數(shù)的值,作為一個 java.sql.Timestamp 對象。
- registerOutParameter(int, int)
- 在執(zhí)行存儲過程調(diào)用之前,必須顯式的調(diào)用 registerOutParameter
為每個輸出參數(shù)的 java.sql.Type 進行注冊。
- registerOutParameter(int, int, int)
- 使用 registerOutParameter 的這個版本為 Numeric 或 Decimal
輸出參數(shù)注冊。
- wasNull()
- 一個 OUT 參數(shù)可能的值是 SQL NULL ;wasNull 報告最后讀的值是否為這個特殊的值。
方法
registerOutParameter
public abstract void registerOutParameter(int parameterIndex,
int sqlType) throws SQLException
- 在執(zhí)行存儲過程調(diào)用之前,必須顯式的調(diào)用 registerOutParameter
為每個輸出參數(shù)的 java.sql.Type 進行注冊。
注意: 當讀取一個輸出參數(shù)的值時,必須使用 getXXX 方法,它的 Java 類型 XXX 與該參數(shù)注冊的 SQL 類型相應。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- sqlType - 由 java.sql.Types 決定的 SQL 類型代碼;對于
Numeric 或 Decimal 類型的參數(shù)使用可以接受小數(shù)位數(shù)的
registerOutParameter 版本。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
- 參見:
- Type
registerOutParameter
public abstract void registerOutParameter(int parameterIndex,
int sqlType,
int scale) throws SQLException
- 使用 registerOutParameter 的這個版本為 Numeric 或 Decimal
輸出參數(shù)注冊。
注意: 當讀取一個輸出參數(shù)的值時,必須使用 getXXX 方法,它的 Java 類型 XXX 與該參數(shù)注冊的 SQL 類型相應。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- sqlType - 使用 java.sql.Type.NUMERIC 或 java.sql.Type.DECIMAL
- scale - 一個大于等于零的值,表示期望的小數(shù)點右邊數(shù)字的數(shù)目
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
- 參見:
- Type
wasNull
public abstract boolean wasNull() throws SQLException
- 一個 OUT 參數(shù)可能的值是 SQL NULL ;wasNull 報告最后讀的值是否為這個特殊的值。
注意:必須首先對一個參數(shù)調(diào)用 getXXX 方法讀取它的值,然后調(diào)用
wasNull() 方法檢查該值是否為 SQL NULL。
- 返回值:
- 如果讀的最后的參數(shù)為 SQL NULL 則為 true
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getString
public abstract String getString(int parameterIndex) throws SQLException
- 獲得一個 CHAR、VARCHAR 或 LONGVARCHAR 參數(shù)的值,作為一個
Java String。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getBoolean
public abstract boolean getBoolean(int parameterIndex) throws SQLException
- 獲得一個 BIT 參數(shù)的值,作為一個 Java boolean。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 false
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getByte
public abstract byte getByte(int parameterIndex) throws SQLException
- 獲得一個 TINYINT 參數(shù)的值,作為一個 Java byte。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getShort
public abstract short getShort(int parameterIndex) throws SQLException
- 獲得一個 SMALLINT 參數(shù)的值,作為一個 Java short。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getInt
public abstract int getInt(int parameterIndex) throws SQLException
- 獲得一個 INTEGER 參數(shù)的值,作為一個 Java int。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getLong
public abstract long getLong(int parameterIndex) throws SQLException
- 獲得一個 BIGINT 參數(shù)的值,作為一個 Java long。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getFloat
public abstract float getFloat(int parameterIndex) throws SQLException
- 獲得一個 FLOAT 參數(shù)的值,作為一個 Java float。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getDouble
public abstract double getDouble(int parameterIndex) throws SQLException
- 獲得一個 DOUBLE 參數(shù)的值,作為一個 Java double。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getBigDecimal
public abstract BigDecimal getBigDecimal(int parameterIndex,
int scale) throws SQLException
- 獲得一個 NUMERIC 參數(shù)的值,作為一個 java.math.BigDecimal 對象。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- scale - 一個大于等于零的值,表示期望的小數(shù)點右邊數(shù)字的數(shù)目
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getBytes
public abstract byte[] getBytes(int parameterIndex) throws SQLException
- 獲得一個 SQL BINARY 或 VARBINARY 參數(shù)的值,作為一個 Java byte []。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getDate
public abstract Date getDate(int parameterIndex) throws SQLException
- 獲得一個 SQL DATE 參數(shù)的值,作為一個 java.sql.Date 對象。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getTime
public abstract Time getTime(int parameterIndex) throws SQLException
- 獲得一個 SQL TIME 參數(shù)的值,作為一個 java.sql.Time 對象。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getTimestamp
public abstract Timestamp getTimestamp(int parameterIndex) throws SQLException
- 獲得一個 SQL TIMESTAMP 參數(shù)的值,作為一個 java.sql.Timestamp 對象。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- 返回值:
- 參數(shù)值;如果該值是 SQL NULL 則結(jié)果為 null
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
getObject
public abstract Object getObject(int parameterIndex) throws SQLException
- 獲得一個參數(shù)的值,作為一個 Java object。
該方法返回一個 Java 對象,它的類型與用 SQL 類型相應,該 SQL 類型是用
registerOutParameter 為該參數(shù)注冊的類型。
注意該方法可以用于讀數(shù)據(jù)庫特定的抽象數(shù)據(jù)類型。 可以指定一個
java.sql.types.OTHER 的 targetSqlType 進行讀取,該類型允許驅(qū)動程序返回一個數(shù)據(jù)庫特定的 Java 類型。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個參數(shù)是 2, ...
- 返回值:
- 保持該 OUT 參數(shù)值的 java.lang.Object。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
- 參見:
- Types