Package org.firebirdsql.jdbc

## Class FBCallableStatement

- java.lang.Object
- - org.firebirdsql.jdbc.FBStatement
  - - org.firebirdsql.jdbc.FBPreparedStatement
    - - org.firebirdsql.jdbc.FBCallableStatement

All Implemented Interfaces:
  `java.lang.AutoCloseable`, `java.sql.CallableStatement`, `java.sql.PreparedStatement`, `java.sql.Statement`, `java.sql.Wrapper`, `FirebirdCallableStatement`, `FirebirdPreparedStatement`, `FirebirdStatement`

    public class FBCallableStatement
    extends FBPreparedStatement
    implements java.sql.CallableStatement, FirebirdCallableStatement

Implementation of `CallableStatement`.

Author:
  David Jencks, Roman Rokytskyy, Steven Jardine, Mark Rotteveel

### Nested Class Summary

### Nested classes/interfaces inherited from class org.firebirdsql.jdbc.FBStatement

`FBStatement.StatementResult`

### Field Summary

Fields
`protected FBProcedureCall` `procedureCall`
`protected boolean` `selectableProcedure`

### Fields inherited from class org.firebirdsql.jdbc.FBPreparedStatement

`METHOD_NOT_SUPPORTED`

### Fields inherited from class org.firebirdsql.jdbc.FBStatement

`connection, currentStatementResult, fbStatement, fetchSize, firstWarning, gdsHelper, isSingletonResult, maxRows, specialResult, statementListener`

### Fields inherited from interface org.firebirdsql.jdbc.FirebirdPreparedStatement

`TYPE_COMMIT, TYPE_DDL, TYPE_DELETE, TYPE_EXEC_PROCEDURE, TYPE_GET_SEGMENT, TYPE_INSERT, TYPE_PUT_SEGMENT, TYPE_ROLLBACK, TYPE_SELECT, TYPE_SELECT_FOR_UPDATE, TYPE_SET_GENERATOR, TYPE_START_TRANS, TYPE_UPDATE`

### Fields inherited from interface java.sql.Statement

`CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO`

### Constructor Summary

Constructors
`protected` `FBCallableStatement​(GDSHelper c, java.lang.String sql, int rsType, int rsConcurrency, int rsHoldability, StoredProcedureMetaData storedProcMetaData, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener)`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `addBatch()`
`protected void` `assertHasData​(java.sql.ResultSet rs)` Asserts if the current statement has data to return.
`void` `clearBatch()`
`protected FBResultSet` `createSpecialResultSet​(FBObjectListener.ResultSetListener resultSetListener)` Create the result set for `specialResult`.
`boolean` `execute()`
`protected java.util.List<java.lang.Long>` `executeBatchInternal()`
`java.sql.ResultSet` `executeQuery()`
`int` `executeUpdate()`
`protected int` `findOutParameter​(java.lang.String paramName)` Deprecated. use `getAndAssertSingletonResultSet().findColumn(paramName)` (but verify if that is the right thing to do); method will be removed in Jaybird 6
`protected java.sql.ResultSet` `getAndAssertSingletonResultSet()` Returns the result set for the singleton row of the callable statement and asserts it has data.
`java.sql.Array` `getArray​(int parameterIndex)`
`java.sql.Array` `getArray​(java.lang.String colName)`
`java.math.BigDecimal` `getBigDecimal​(int parameterIndex)`
`java.math.BigDecimal` `getBigDecimal​(int parameterIndex, int scale)` Deprecated.
`java.math.BigDecimal` `getBigDecimal​(java.lang.String colName)`
`java.sql.Blob` `getBlob​(int parameterIndex)`
`java.sql.Blob` `getBlob​(java.lang.String colName)`
`boolean` `getBoolean​(int parameterIndex)`
`boolean` `getBoolean​(java.lang.String colName)`
`byte` `getByte​(int parameterIndex)`
`byte` `getByte​(java.lang.String colName)`
`byte[]` `getBytes​(int parameterIndex)`
`byte[]` `getBytes​(java.lang.String colName)`
`java.io.Reader` `getCharacterStream​(int parameterIndex)`
`java.io.Reader` `getCharacterStream​(java.lang.String parameterName)`
`java.sql.Clob` `getClob​(int parameterIndex)`
`java.sql.Clob` `getClob​(java.lang.String colName)`
`java.sql.Date` `getDate​(int parameterIndex)`
`java.sql.Date` `getDate​(int parameterIndex, java.util.Calendar cal)`
`java.sql.Date` `getDate​(java.lang.String colName)`
`java.sql.Date` `getDate​(java.lang.String colName, java.util.Calendar cal)`
`double` `getDouble​(int parameterIndex)`
`double` `getDouble​(java.lang.String colName)`
`float` `getFloat​(int parameterIndex)`
`float` `getFloat​(java.lang.String colName)`
`java.sql.ResultSet` `getGeneratedKeys()`
`int` `getInt​(int parameterIndex)`
`int` `getInt​(java.lang.String colName)`
`long` `getLong​(int parameterIndex)`
`long` `getLong​(java.lang.String colName)`
`java.sql.ResultSetMetaData` `getMetaData()`
`java.io.Reader` `getNCharacterStream​(int parameterIndex)`
`java.io.Reader` `getNCharacterStream​(java.lang.String parameterName)`
`java.sql.NClob` `getNClob​(int parameterIndex)`
`java.sql.NClob` `getNClob​(java.lang.String parameterName)`
`java.lang.String` `getNString​(int parameterIndex)`
`java.lang.String` `getNString​(java.lang.String parameterName)`
`java.lang.Object` `getObject​(int parameterIndex)`
`<T> T` `getObject​(int parameterIndex, java.lang.Class<T> type)`
`java.lang.Object` `getObject​(int parameterIndex, java.util.Map<java.lang.String,​java.lang.Class<?>> map)`
`java.lang.Object` `getObject​(java.lang.String colName)`
`<T> T` `getObject​(java.lang.String parameterName, java.lang.Class<T> type)`
`java.lang.Object` `getObject​(java.lang.String colName, java.util.Map<java.lang.String,​java.lang.Class<?>> map)`
`java.sql.ParameterMetaData` `getParameterMetaData()`
`java.sql.Ref` `getRef​(int parameterIndex)`
`java.sql.Ref` `getRef​(java.lang.String colName)`
`java.sql.RowId` `getRowId​(int parameterIndex)`
`java.sql.RowId` `getRowId​(java.lang.String parameterName)`
`short` `getShort​(int parameterIndex)`
`short` `getShort​(java.lang.String colName)`
`java.sql.SQLXML` `getSQLXML​(int parameterIndex)`
`java.sql.SQLXML` `getSQLXML​(java.lang.String parameterName)`
`java.lang.String` `getString​(int parameterIndex)`
`java.lang.String` `getString​(java.lang.String colName)`
`java.sql.Time` `getTime​(int parameterIndex)`
`java.sql.Time` `getTime​(int parameterIndex, java.util.Calendar cal)`
`java.sql.Time` `getTime​(java.lang.String colName)`
`java.sql.Time` `getTime​(java.lang.String colName, java.util.Calendar cal)`
`java.sql.Timestamp` `getTimestamp​(int parameterIndex)`
`java.sql.Timestamp` `getTimestamp​(int parameterIndex, java.util.Calendar cal)`
`java.sql.Timestamp` `getTimestamp​(java.lang.String colName)`
`java.sql.Timestamp` `getTimestamp​(java.lang.String colName, java.util.Calendar cal)`
`java.net.URL` `getURL​(int parameterIndex)`
`java.net.URL` `getURL​(java.lang.String colName)`
`protected boolean` `internalExecute​(boolean sendOutParams)` Execute this statement.
`boolean` `isSelectableProcedure()` Retrieve if this callable statement has been marked as selectable.
`protected void` `prepareFixedStatement​(java.lang.String sql)` We allow multiple calls to this method without re-preparing the statement.
`void` `registerOutParameter​(int parameterIndex, int sqlType)`
`void` `registerOutParameter​(int parameterIndex, int sqlType, int scale)`
`void` `registerOutParameter​(int parameterIndex, int sqlType, java.lang.String typeName)`
`void` `registerOutParameter​(int parameterIndex, java.sql.SQLType sqlType)`
`void` `registerOutParameter​(int parameterIndex, java.sql.SQLType sqlType, int scale)`
`void` `registerOutParameter​(int parameterIndex, java.sql.SQLType sqlType, java.lang.String typeName)`
`void` `registerOutParameter​(java.lang.String param1, int param2)`
`void` `registerOutParameter​(java.lang.String param1, int param2, int param3)`
`void` `registerOutParameter​(java.lang.String param1, int param2, java.lang.String param3)`
`void` `registerOutParameter​(java.lang.String parameterName, java.sql.SQLType sqlType)`
`void` `registerOutParameter​(java.lang.String parameterName, java.sql.SQLType sqlType, int scale)`
`void` `registerOutParameter​(java.lang.String parameterName, java.sql.SQLType sqlType, java.lang.String typeName)`
`void` `setAsciiStream​(java.lang.String parameterName, java.io.InputStream x)`
`void` `setAsciiStream​(java.lang.String param1, java.io.InputStream param2, int param3)`
`void` `setAsciiStream​(java.lang.String parameterName, java.io.InputStream x, long length)`
`void` `setBigDecimal​(int parameterIndex, java.math.BigDecimal x)`
`void` `setBigDecimal​(java.lang.String param1, java.math.BigDecimal param2)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream inputStream)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream inputStream, int length)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream inputStream, long length)`
`void` `setBinaryStream​(java.lang.String parameterName, java.io.InputStream x)`
`void` `setBinaryStream​(java.lang.String param1, java.io.InputStream param2, int param3)`
`void` `setBinaryStream​(java.lang.String parameterName, java.io.InputStream x, long length)`
`void` `setBlob​(int parameterIndex, java.io.InputStream inputStream)`
`void` `setBlob​(int parameterIndex, java.io.InputStream inputStream, long length)`
`void` `setBlob​(int parameterIndex, java.sql.Blob blob)`
`void` `setBlob​(java.lang.String parameterName, java.io.InputStream inputStream)`
`void` `setBlob​(java.lang.String parameterName, java.io.InputStream inputStream, long length)`
`void` `setBlob​(java.lang.String parameterName, java.sql.Blob x)`
`void` `setBoolean​(int parameterIndex, boolean x)`
`void` `setBoolean​(java.lang.String param1, boolean param2)`
`void` `setByte​(int parameterIndex, byte x)`
`void` `setByte​(java.lang.String param1, byte param2)`
`void` `setBytes​(int parameterIndex, byte[] x)`
`void` `setBytes​(java.lang.String param1, byte[] param2)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader, int length)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader, long length)`
`void` `setCharacterStream​(java.lang.String parameterName, java.io.Reader reader)`
`void` `setCharacterStream​(java.lang.String param1, java.io.Reader param2, int param3)`
`void` `setCharacterStream​(java.lang.String parameterName, java.io.Reader reader, long length)`
`void` `setClob​(int parameterIndex, java.io.Reader reader)`
`void` `setClob​(int parameterIndex, java.io.Reader reader, long length)`
`void` `setClob​(int parameterIndex, java.sql.Clob x)`
`void` `setClob​(java.lang.String parameterName, java.io.Reader reader)`
`void` `setClob​(java.lang.String parameterName, java.io.Reader reader, long length)`
`void` `setClob​(java.lang.String parameterName, java.sql.Clob x)`
`void` `setDate​(int parameterIndex, java.sql.Date x)`
`void` `setDate​(int parameterIndex, java.sql.Date x, java.util.Calendar cal)`
`void` `setDate​(java.lang.String param1, java.sql.Date param2)`
`void` `setDate​(java.lang.String param1, java.sql.Date param2, java.util.Calendar param3)`
`void` `setDouble​(int parameterIndex, double x)`
`void` `setDouble​(java.lang.String param1, double param2)`
`void` `setFloat​(int parameterIndex, float x)`
`void` `setFloat​(java.lang.String param1, float param2)`
`void` `setInt​(int parameterIndex, int x)`
`void` `setInt​(java.lang.String param1, int param2)`
`void` `setLong​(int parameterIndex, long x)`
`void` `setLong​(java.lang.String param1, long param2)`
`void` `setNCharacterStream​(java.lang.String parameterName, java.io.Reader value)`
`void` `setNCharacterStream​(java.lang.String parameterName, java.io.Reader value, long length)`
`void` `setNClob​(java.lang.String parameterName, java.io.Reader reader)`
`void` `setNClob​(java.lang.String parameterName, java.io.Reader reader, long length)`
`void` `setNClob​(java.lang.String parameterName, java.sql.NClob value)`
`void` `setNString​(java.lang.String parameterName, java.lang.String value)`
`void` `setNull​(int parameterIndex, int sqlType)`
`void` `setNull​(int parameterIndex, int sqlType, java.lang.String typeName)`
`void` `setNull​(java.lang.String param1, int param2)`
`void` `setNull​(java.lang.String param1, int param2, java.lang.String param3)`
`void` `setObject​(int parameterIndex, java.lang.Object x)`
`void` `setObject​(int parameterIndex, java.lang.Object x, int targetSqlType)`
`void` `setObject​(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)`
`void` `setObject​(java.lang.String param1, java.lang.Object param2)`
`void` `setObject​(java.lang.String param1, java.lang.Object param2, int param3)`
`void` `setObject​(java.lang.String param1, java.lang.Object param2, int param3, int param4)`
`protected void` `setRequiredTypes()` Set required types for output parameters.
`void` `setRowId​(java.lang.String parameterName, java.sql.RowId x)`
`void` `setSelectableProcedure​(boolean selectableProcedure)` Mark this callable statement as a call of the selectable procedure.
`void` `setShort​(int parameterIndex, short x)`
`void` `setShort​(java.lang.String param1, short param2)`
`void` `setSQLXML​(java.lang.String parameterName, java.sql.SQLXML xmlObject)`
`void` `setString​(int parameterIndex, java.lang.String x)`
`void` `setString​(java.lang.String param1, java.lang.String param2)`
`void` `setTime​(int parameterIndex, java.sql.Time x)`
`void` `setTime​(int parameterIndex, java.sql.Time x, java.util.Calendar cal)`
`void` `setTime​(java.lang.String param1, java.sql.Time param2)`
`void` `setTime​(java.lang.String param1, java.sql.Time param2, java.util.Calendar param3)`
`void` `setTimestamp​(int parameterIndex, java.sql.Timestamp x)`
`void` `setTimestamp​(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal)`
`void` `setTimestamp​(java.lang.String param1, java.sql.Timestamp param2)`
`void` `setTimestamp​(java.lang.String param1, java.sql.Timestamp param2, java.util.Calendar param3)`
`void` `setURL​(java.lang.String param1, java.net.URL param2)`
`boolean` `wasNull()`

### Methods inherited from class org.firebirdsql.jdbc.FBPreparedStatement

`addBatch, clearParameters, completeStatement, execute, execute, execute, execute, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getExecutionPlan, getExplainedExecutionPlan, getField, getFirebirdParameterMetaData, getParameterDescriptor, getStatementType, isGeneratedKeyQuery, needsScrollableCursorEnabled, notifyStatementCompleted, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNString, setObject, setObject, setRef, setRowId, setSQLXML, setUnicodeStream, setURL`

### Methods inherited from class org.firebirdsql.jdbc.FBStatement

`addWarning, cancel, checkValidity, clearWarnings, close, closeOnCompletion, completeStatement, createBatchUpdateException, createBatchUpdateException, createStatementListener, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, equals, executeBatch, executeImpl, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getConnection, getCurrentResultSet, getDeletedRowsCount, getFetchDirection, getFetchSize, getInsertedRowsCount, getLargeMaxRows, getLargeUpdateCount, getLargeUpdateCountMinZero, getLastExecutionPlan, getLastExplainedExecutionPlan, getLocalStatementId, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getUpdateCountMinZero, getUpdatedRowsCount, getWarnings, hashCode, hasOpenResultSet, internalExecute, internalExecute, isClosed, isCloseOnCompletion, isPoolable, isSimpleIdentifier, isValid, isWrapperFor, nativeSQL, notifyStatementCompleted, notifyStatementStarted, notifyStatementStarted, requireStatement, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout, unwrap, withLock`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.sql.CallableStatement

`setObject, setObject`

### Methods inherited from interface org.firebirdsql.jdbc.FirebirdPreparedStatement

`getExecutionPlan, getExplainedExecutionPlan, getStatementType`

### Methods inherited from interface org.firebirdsql.jdbc.FirebirdStatement

`getCurrentResultSet, getDeletedRowsCount, getInsertedRowsCount, getLastExecutionPlan, getLastExplainedExecutionPlan, getLocalStatementId, getUpdatedRowsCount, hasOpenResultSet, isValid`

### Methods inherited from interface java.sql.PreparedStatement

`clearParameters, executeLargeUpdate, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNString, setObject, setObject, setRef, setRowId, setSQLXML, setUnicodeStream, setURL`

### Methods inherited from interface java.sql.Statement

`addBatch, cancel, clearWarnings, close, closeOnCompletion, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, execute, execute, execute, execute, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isCloseOnCompletion, isPoolable, isSimpleIdentifier, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout`

### Methods inherited from interface java.sql.Wrapper

`isWrapperFor, unwrap`

### Field Detail

#### selectableProcedure

    protected boolean selectableProcedure

#### procedureCall

    protected FBProcedureCall procedureCall

### Constructor Detail

#### FBCallableStatement

    protected FBCallableStatement​(GDSHelper c,
                                  java.lang.String sql,
                                  int rsType,
                                  int rsConcurrency,
                                  int rsHoldability,
                                  StoredProcedureMetaData storedProcMetaData,
                                  FBObjectListener.StatementListener statementListener,
                                  FBObjectListener.BlobListener blobListener)
                           throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

### Method Detail

#### getParameterMetaData

    public java.sql.ParameterMetaData getParameterMetaData()
                                                    throws java.sql.SQLException

Specified by:
  `getParameterMetaData` in interface `java.sql.PreparedStatement`
Overrides:
  `getParameterMetaData` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### addBatch

    public void addBatch()
                  throws java.sql.SQLException

Specified by:
  `addBatch` in interface `java.sql.PreparedStatement`
Overrides:
  `addBatch` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### clearBatch

    public void clearBatch()
                    throws java.sql.SQLException

Specified by:
  `clearBatch` in interface `java.sql.Statement`
Overrides:
  `clearBatch` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### executeBatchInternal

    protected java.util.List<java.lang.Long> executeBatchInternal()
                                                           throws java.sql.SQLException

Overrides:
  `executeBatchInternal` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setSelectableProcedure

    public void setSelectableProcedure​(boolean selectableProcedure)

Description copied from interface: `FirebirdCallableStatement`
Mark this callable statement as a call of the selectable procedure. By default, callable statement uses "EXECUTE PROCEDURE" SQL statement to invoke stored procedures that return single row of output parameters or a result set. In former case it retrieves only the first row of the result set.

Specified by:
  `setSelectableProcedure` in interface `FirebirdCallableStatement`
Parameters:
  `selectableProcedure` - `true` if the called procedure is selectable.
See Also:
  `FirebirdCallableStatement.isSelectableProcedure()`

#### isSelectableProcedure

    public boolean isSelectableProcedure()

Description copied from interface: `FirebirdCallableStatement`
Retrieve if this callable statement has been marked as selectable.

Starting from Firebird 2.1, this value is set automatically from metadata stored in the database. Prior to Firebird 2.1, it must be set manually.

Specified by:
  `isSelectableProcedure` in interface `FirebirdCallableStatement`
Returns:
  `true` if the called procedure is selectable, false otherwise
See Also:
  `FirebirdCallableStatement.setSelectableProcedure(boolean)`

#### setRequiredTypes

    protected void setRequiredTypes()
                             throws java.sql.SQLException

Set required types for output parameters.

Throws:
  `java.sql.SQLException` - if something went wrong.

#### prepareFixedStatement

    protected void prepareFixedStatement​(java.lang.String sql)
                                  throws java.sql.SQLException

We allow multiple calls to this method without re-preparing the statement. This is a workaround to the issue that the statement is actually prepared only after all OUT parameters are registered.

Overrides:
  `prepareFixedStatement` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### getMetaData

    public java.sql.ResultSetMetaData getMetaData()
                                           throws java.sql.SQLException

Since we deferred the statement preparation until all OUT params are registered, we ensure that the statement is prepared before the meta data for the callable statement is obtained.

Specified by:
  `getMetaData` in interface `java.sql.PreparedStatement`
Overrides:
  `getMetaData` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### execute

    public boolean execute()
                    throws java.sql.SQLException

Specified by:
  `execute` in interface `java.sql.PreparedStatement`
Overrides:
  `execute` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### executeQuery

    public java.sql.ResultSet executeQuery()
                                    throws java.sql.SQLException

Specified by:
  `executeQuery` in interface `java.sql.PreparedStatement`
Overrides:
  `executeQuery` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### executeUpdate

    public int executeUpdate()
                      throws java.sql.SQLException

Specified by:
  `executeUpdate` in interface `java.sql.PreparedStatement`
Overrides:
  `executeUpdate` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### internalExecute

    protected boolean internalExecute​(boolean sendOutParams)
                               throws java.sql.SQLException

Description copied from class: `FBPreparedStatement`
Execute this statement. Method checks whether all parameters are set, flushes all "flushable" fields that might contain cached data and executes the statement.

Overrides:
  `internalExecute` in class `FBPreparedStatement`
Parameters:
  `sendOutParams` - Determines if the XSQLDA structure should be sent to the database
Returns:
  `true` if the statement has more result sets.
Throws:
  `java.sql.SQLException`

#### createSpecialResultSet

    protected FBResultSet createSpecialResultSet​(FBObjectListener.ResultSetListener resultSetListener)
                                          throws java.sql.SQLException

Description copied from class: `FBStatement`
Create the result set for `specialResult`.

Should only be called from `FBStatement.getResultSet(boolean)`. This exists because `FBCallableStatement` needs to create the result set in a slightly different way to account for the fact that the blobs were already cached earlier.

Overrides:
  `createSpecialResultSet` in class `FBStatement`
Parameters:
  `resultSetListener` - result set listener (can be `null`)
Returns:
  result set wrapping `specialResult`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     int sqlType)
                              throws java.sql.SQLException

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     int sqlType,
                                     int scale)
                              throws java.sql.SQLException

Implementation note: This method will behave the same as calling `registerOutParameter(int, int)`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     java.sql.SQLType sqlType)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(int, int)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     java.sql.SQLType sqlType,
                                     int scale)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(int, int, int)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     java.sql.SQLType sqlType,
                                     java.lang.String typeName)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(int, int, String)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### wasNull

    public boolean wasNull()
                    throws java.sql.SQLException

Specified by:
  `wasNull` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getString

    public java.lang.String getString​(int parameterIndex)
                               throws java.sql.SQLException

Specified by:
  `getString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBoolean

    public boolean getBoolean​(int parameterIndex)
                       throws java.sql.SQLException

Specified by:
  `getBoolean` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getByte

    public byte getByte​(int parameterIndex)
                 throws java.sql.SQLException

Specified by:
  `getByte` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getShort

    public short getShort​(int parameterIndex)
                   throws java.sql.SQLException

Specified by:
  `getShort` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getInt

    public int getInt​(int parameterIndex)
               throws java.sql.SQLException

Specified by:
  `getInt` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getLong

    public long getLong​(int parameterIndex)
                 throws java.sql.SQLException

Specified by:
  `getLong` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getFloat

    public float getFloat​(int parameterIndex)
                   throws java.sql.SQLException

Specified by:
  `getFloat` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDouble

    public double getDouble​(int parameterIndex)
                     throws java.sql.SQLException

Specified by:
  `getDouble` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBigDecimal

    @Deprecated
    public java.math.BigDecimal getBigDecimal​(int parameterIndex,
                                              int scale)
                                       throws java.sql.SQLException

Deprecated.

Specified by:
  `getBigDecimal` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBytes

    public byte[] getBytes​(int parameterIndex)
                    throws java.sql.SQLException

Specified by:
  `getBytes` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDate

    public java.sql.Date getDate​(int parameterIndex)
                          throws java.sql.SQLException

Specified by:
  `getDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTime

    public java.sql.Time getTime​(int parameterIndex)
                          throws java.sql.SQLException

Specified by:
  `getTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTimestamp

    public java.sql.Timestamp getTimestamp​(int parameterIndex)
                                    throws java.sql.SQLException

Specified by:
  `getTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public java.lang.Object getObject​(int parameterIndex)
                               throws java.sql.SQLException

Implementation note: the registered type is ignored, and the type derived from the actual datatype will be used.

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public java.lang.Object getObject​(java.lang.String colName)
                               throws java.sql.SQLException

Implementation note: the registered type is ignored, and the type derived from the actual datatype will be used.

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public java.lang.Object getObject​(int parameterIndex,
                                      java.util.Map<java.lang.String,​java.lang.Class<?>> map)
                               throws java.sql.SQLException

Implementation note: the registered type is ignored, and the type derived from the actual datatype will be used.

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public java.lang.Object getObject​(java.lang.String colName,
                                      java.util.Map<java.lang.String,​java.lang.Class<?>> map)
                               throws java.sql.SQLException

Implementation note: the registered type is ignored, and the type derived from the actual datatype will be used.

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public <T> T getObject​(int parameterIndex,
                           java.lang.Class<T> type)
                    throws java.sql.SQLException

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getObject

    public <T> T getObject​(java.lang.String parameterName,
                           java.lang.Class<T> type)
                    throws java.sql.SQLException

Specified by:
  `getObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBigDecimal

    public java.math.BigDecimal getBigDecimal​(int parameterIndex)
                                       throws java.sql.SQLException

Specified by:
  `getBigDecimal` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getRef

    public java.sql.Ref getRef​(int parameterIndex)
                        throws java.sql.SQLException

Specified by:
  `getRef` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBlob

    public java.sql.Blob getBlob​(int parameterIndex)
                          throws java.sql.SQLException

Specified by:
  `getBlob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getClob

    public java.sql.Clob getClob​(int parameterIndex)
                          throws java.sql.SQLException

Specified by:
  `getClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getArray

    public java.sql.Array getArray​(int parameterIndex)
                            throws java.sql.SQLException

Specified by:
  `getArray` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDate

    public java.sql.Date getDate​(int parameterIndex,
                                 java.util.Calendar cal)
                          throws java.sql.SQLException

Specified by:
  `getDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTime

    public java.sql.Time getTime​(int parameterIndex,
                                 java.util.Calendar cal)
                          throws java.sql.SQLException

Specified by:
  `getTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTimestamp

    public java.sql.Timestamp getTimestamp​(int parameterIndex,
                                           java.util.Calendar cal)
                                    throws java.sql.SQLException

Specified by:
  `getTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getURL

    public java.net.URL getURL​(int parameterIndex)
                        throws java.sql.SQLException

Specified by:
  `getURL` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getString

    public java.lang.String getString​(java.lang.String colName)
                               throws java.sql.SQLException

Specified by:
  `getString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBoolean

    public boolean getBoolean​(java.lang.String colName)
                       throws java.sql.SQLException

Specified by:
  `getBoolean` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getByte

    public byte getByte​(java.lang.String colName)
                 throws java.sql.SQLException

Specified by:
  `getByte` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getShort

    public short getShort​(java.lang.String colName)
                   throws java.sql.SQLException

Specified by:
  `getShort` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getInt

    public int getInt​(java.lang.String colName)
               throws java.sql.SQLException

Specified by:
  `getInt` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getLong

    public long getLong​(java.lang.String colName)
                 throws java.sql.SQLException

Specified by:
  `getLong` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getFloat

    public float getFloat​(java.lang.String colName)
                   throws java.sql.SQLException

Specified by:
  `getFloat` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDouble

    public double getDouble​(java.lang.String colName)
                     throws java.sql.SQLException

Specified by:
  `getDouble` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBytes

    public byte[] getBytes​(java.lang.String colName)
                    throws java.sql.SQLException

Specified by:
  `getBytes` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDate

    public java.sql.Date getDate​(java.lang.String colName)
                          throws java.sql.SQLException

Specified by:
  `getDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTime

    public java.sql.Time getTime​(java.lang.String colName)
                          throws java.sql.SQLException

Specified by:
  `getTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTimestamp

    public java.sql.Timestamp getTimestamp​(java.lang.String colName)
                                    throws java.sql.SQLException

Specified by:
  `getTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBigDecimal

    public java.math.BigDecimal getBigDecimal​(java.lang.String colName)
                                       throws java.sql.SQLException

Specified by:
  `getBigDecimal` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getRef

    public java.sql.Ref getRef​(java.lang.String colName)
                        throws java.sql.SQLException

Specified by:
  `getRef` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getBlob

    public java.sql.Blob getBlob​(java.lang.String colName)
                          throws java.sql.SQLException

Specified by:
  `getBlob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getClob

    public java.sql.Clob getClob​(java.lang.String colName)
                          throws java.sql.SQLException

Specified by:
  `getClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getArray

    public java.sql.Array getArray​(java.lang.String colName)
                            throws java.sql.SQLException

Specified by:
  `getArray` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getDate

    public java.sql.Date getDate​(java.lang.String colName,
                                 java.util.Calendar cal)
                          throws java.sql.SQLException

Specified by:
  `getDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTime

    public java.sql.Time getTime​(java.lang.String colName,
                                 java.util.Calendar cal)
                          throws java.sql.SQLException

Specified by:
  `getTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getTimestamp

    public java.sql.Timestamp getTimestamp​(java.lang.String colName,
                                           java.util.Calendar cal)
                                    throws java.sql.SQLException

Specified by:
  `getTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getURL

    public java.net.URL getURL​(java.lang.String colName)
                        throws java.sql.SQLException

Specified by:
  `getURL` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getCharacterStream

    public java.io.Reader getCharacterStream​(int parameterIndex)
                                      throws java.sql.SQLException

Specified by:
  `getCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getCharacterStream

    public java.io.Reader getCharacterStream​(java.lang.String parameterName)
                                      throws java.sql.SQLException

Specified by:
  `getCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getNCharacterStream

    public java.io.Reader getNCharacterStream​(int parameterIndex)
                                       throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getCharacterStream(int)`.

Specified by:
  `getNCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getNCharacterStream

    public java.io.Reader getNCharacterStream​(java.lang.String parameterName)
                                       throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getCharacterStream(String)` .

Specified by:
  `getNCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getNString

    public java.lang.String getNString​(int parameterIndex)
                                throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getString(int)`.

Specified by:
  `getNString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getNString

    public java.lang.String getNString​(java.lang.String parameterName)
                                throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getString(String)`.

Specified by:
  `getNString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(java.lang.String parameterName,
                               java.io.InputStream x,
                               long length)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(java.lang.String parameterName,
                               java.io.InputStream x)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(java.lang.String parameterName,
                                java.io.InputStream x,
                                long length)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(java.lang.String parameterName,
                                java.io.InputStream x)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(java.lang.String parameterName,
                        java.sql.Blob x)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(java.lang.String parameterName,
                        java.io.InputStream inputStream,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(java.lang.String parameterName,
                        java.io.InputStream inputStream)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(java.lang.String parameterName,
                                   java.io.Reader reader,
                                   long length)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(java.lang.String parameterName,
                                   java.io.Reader reader)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(java.lang.String parameterName,
                        java.sql.Clob x)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(java.lang.String parameterName,
                        java.io.Reader reader,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(java.lang.String parameterName,
                        java.io.Reader reader)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNCharacterStream

    public void setNCharacterStream​(java.lang.String parameterName,
                                    java.io.Reader value,
                                    long length)
                             throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setCharacterStream(String, Reader, long)`.

Specified by:
  `setNCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNCharacterStream

    public void setNCharacterStream​(java.lang.String parameterName,
                                    java.io.Reader value)
                             throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setCharacterStream(String, Reader)`.

Specified by:
  `setNCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(java.lang.String parameterName,
                         java.io.Reader reader,
                         long length)
                  throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setClob(String, Reader, long)`.

Specified by:
  `setNClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(java.lang.String parameterName,
                         java.io.Reader reader)
                  throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setClob(String, Reader)`.

Specified by:
  `setNClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNString

    public void setNString​(java.lang.String parameterName,
                           java.lang.String value)
                    throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setString(String, String)`.

Specified by:
  `setNString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String param1,
                                     int param2)
                              throws java.sql.SQLException

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String param1,
                                     int param2,
                                     int param3)
                              throws java.sql.SQLException

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String param1,
                                     int param2,
                                     java.lang.String param3)
                              throws java.sql.SQLException

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String parameterName,
                                     java.sql.SQLType sqlType)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(String, int)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String parameterName,
                                     java.sql.SQLType sqlType,
                                     int scale)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(String, int, int)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(java.lang.String parameterName,
                                     java.sql.SQLType sqlType,
                                     java.lang.String typeName)
                              throws java.sql.SQLException

Implementation note: behaves as `registerOutParameter(String, int, String)` called with `SQLType.getVendorTypeNumber()`.

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setURL

    public void setURL​(java.lang.String param1,
                       java.net.URL param2)
                throws java.sql.SQLException

Specified by:
  `setURL` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(java.lang.String param1,
                        int param2)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBoolean

    public void setBoolean​(java.lang.String param1,
                           boolean param2)
                    throws java.sql.SQLException

Specified by:
  `setBoolean` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setByte

    public void setByte​(java.lang.String param1,
                        byte param2)
                 throws java.sql.SQLException

Specified by:
  `setByte` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setShort

    public void setShort​(java.lang.String param1,
                         short param2)
                  throws java.sql.SQLException

Specified by:
  `setShort` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setInt

    public void setInt​(java.lang.String param1,
                       int param2)
                throws java.sql.SQLException

Specified by:
  `setInt` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setLong

    public void setLong​(java.lang.String param1,
                        long param2)
                 throws java.sql.SQLException

Specified by:
  `setLong` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setFloat

    public void setFloat​(java.lang.String param1,
                         float param2)
                  throws java.sql.SQLException

Specified by:
  `setFloat` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setDouble

    public void setDouble​(java.lang.String param1,
                          double param2)
                   throws java.sql.SQLException

Specified by:
  `setDouble` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBigDecimal

    public void setBigDecimal​(java.lang.String param1,
                              java.math.BigDecimal param2)
                       throws java.sql.SQLException

Specified by:
  `setBigDecimal` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setString

    public void setString​(java.lang.String param1,
                          java.lang.String param2)
                   throws java.sql.SQLException

Specified by:
  `setString` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBytes

    public void setBytes​(java.lang.String param1,
                         byte[] param2)
                  throws java.sql.SQLException

Specified by:
  `setBytes` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(java.lang.String param1,
                        java.sql.Date param2)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(java.lang.String param1,
                        java.sql.Time param2)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(java.lang.String param1,
                             java.sql.Timestamp param2)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(java.lang.String param1,
                               java.io.InputStream param2,
                               int param3)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(java.lang.String param1,
                                java.io.InputStream param2,
                                int param3)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(java.lang.String param1,
                          java.lang.Object param2,
                          int param3,
                          int param4)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(java.lang.String param1,
                          java.lang.Object param2,
                          int param3)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(java.lang.String param1,
                          java.lang.Object param2)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(java.lang.String param1,
                                   java.io.Reader param2,
                                   int param3)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(java.lang.String param1,
                        java.sql.Date param2,
                        java.util.Calendar param3)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(java.lang.String param1,
                        java.sql.Time param2,
                        java.util.Calendar param3)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(java.lang.String param1,
                             java.sql.Timestamp param2,
                             java.util.Calendar param3)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(java.lang.String param1,
                        int param2,
                        java.lang.String param3)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### registerOutParameter

    public void registerOutParameter​(int parameterIndex,
                                     int sqlType,
                                     java.lang.String typeName)
                              throws java.sql.SQLException

Specified by:
  `registerOutParameter` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getGeneratedKeys

    public java.sql.ResultSet getGeneratedKeys()
                                        throws java.sql.SQLException

Specified by:
  `getGeneratedKeys` in interface `java.sql.Statement`
Overrides:
  `getGeneratedKeys` in class `FBStatement`
Throws:
  `java.sql.SQLException`

#### assertHasData

    protected void assertHasData​(java.sql.ResultSet rs)
                          throws java.sql.SQLException

Asserts if the current statement has data to return. It checks if the result set has a row with data.

Parameters:
  `rs` - result set to test
Throws:
  `java.sql.SQLException` - when the result set has no data.

#### getAndAssertSingletonResultSet

    protected java.sql.ResultSet getAndAssertSingletonResultSet()
                                                         throws java.sql.SQLException

Returns the result set for the singleton row of the callable statement and asserts it has data. If this is a selectable procedure, or there is no singleton row, it will return the normal result set.

This should fix the problem described in JDBC-350 in most circumstances.

Returns:
  Either the singleton result set, or the current result set as described above
Throws:
  `java.sql.SQLException` - For database access errors

#### setBigDecimal

    public void setBigDecimal​(int parameterIndex,
                              java.math.BigDecimal x)
                       throws java.sql.SQLException

Specified by:
  `setBigDecimal` in interface `java.sql.PreparedStatement`
Overrides:
  `setBigDecimal` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream inputStream,
                                int length)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setBinaryStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream inputStream,
                                long length)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setBinaryStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream inputStream)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setBinaryStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int parameterIndex,
                        java.sql.Blob blob)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Overrides:
  `setBlob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int parameterIndex,
                        java.io.InputStream inputStream,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Overrides:
  `setBlob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int parameterIndex,
                        java.io.InputStream inputStream)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Overrides:
  `setBlob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBoolean

    public void setBoolean​(int parameterIndex,
                           boolean x)
                    throws java.sql.SQLException

Specified by:
  `setBoolean` in interface `java.sql.PreparedStatement`
Overrides:
  `setBoolean` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setByte

    public void setByte​(int parameterIndex,
                        byte x)
                 throws java.sql.SQLException

Specified by:
  `setByte` in interface `java.sql.PreparedStatement`
Overrides:
  `setByte` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBytes

    public void setBytes​(int parameterIndex,
                         byte[] x)
                  throws java.sql.SQLException

Specified by:
  `setBytes` in interface `java.sql.PreparedStatement`
Overrides:
  `setBytes` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader,
                                   int length)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setCharacterStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader,
                                   long length)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setCharacterStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Overrides:
  `setCharacterStream` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int parameterIndex,
                        java.sql.Clob x)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Overrides:
  `setClob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int parameterIndex,
                        java.io.Reader reader,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Overrides:
  `setClob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int parameterIndex,
                        java.io.Reader reader)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Overrides:
  `setClob` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(int parameterIndex,
                        java.sql.Date x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.PreparedStatement`
Overrides:
  `setDate` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(int parameterIndex,
                        java.sql.Date x)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.PreparedStatement`
Overrides:
  `setDate` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDouble

    public void setDouble​(int parameterIndex,
                          double x)
                   throws java.sql.SQLException

Specified by:
  `setDouble` in interface `java.sql.PreparedStatement`
Overrides:
  `setDouble` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setFloat

    public void setFloat​(int parameterIndex,
                         float x)
                  throws java.sql.SQLException

Specified by:
  `setFloat` in interface `java.sql.PreparedStatement`
Overrides:
  `setFloat` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setInt

    public void setInt​(int parameterIndex,
                       int x)
                throws java.sql.SQLException

Specified by:
  `setInt` in interface `java.sql.PreparedStatement`
Overrides:
  `setInt` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setLong

    public void setLong​(int parameterIndex,
                        long x)
                 throws java.sql.SQLException

Specified by:
  `setLong` in interface `java.sql.PreparedStatement`
Overrides:
  `setLong` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(int parameterIndex,
                        int sqlType,
                        java.lang.String typeName)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.PreparedStatement`
Overrides:
  `setNull` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(int parameterIndex,
                        int sqlType)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.PreparedStatement`
Overrides:
  `setNull` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType,
                          int scale)
                   throws java.sql.SQLException

Description copied from class: `FBPreparedStatement`

Implementation note: ignores `scale` and `targetSqlType` and works as `FBPreparedStatement.setObject(int, Object)`.

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Overrides:
  `setObject` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType)
                   throws java.sql.SQLException

Description copied from class: `FBPreparedStatement`

Implementation note: ignores `targetSqlType` and works as `FBPreparedStatement.setObject(int, Object)`.

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Overrides:
  `setObject` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Overrides:
  `setObject` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setShort

    public void setShort​(int parameterIndex,
                         short x)
                  throws java.sql.SQLException

Specified by:
  `setShort` in interface `java.sql.PreparedStatement`
Overrides:
  `setShort` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setString

    public void setString​(int parameterIndex,
                          java.lang.String x)
                   throws java.sql.SQLException

Specified by:
  `setString` in interface `java.sql.PreparedStatement`
Overrides:
  `setString` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(int parameterIndex,
                        java.sql.Time x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.PreparedStatement`
Overrides:
  `setTime` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(int parameterIndex,
                        java.sql.Time x)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.PreparedStatement`
Overrides:
  `setTime` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(int parameterIndex,
                             java.sql.Timestamp x,
                             java.util.Calendar cal)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.PreparedStatement`
Overrides:
  `setTimestamp` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(int parameterIndex,
                             java.sql.Timestamp x)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.PreparedStatement`
Overrides:
  `setTimestamp` in class `FBPreparedStatement`
Throws:
  `java.sql.SQLException`

#### findOutParameter

    @Deprecated
    protected int findOutParameter​(java.lang.String paramName)
                            throws java.sql.SQLException

Deprecated.
use `getAndAssertSingletonResultSet().findColumn(paramName)` (but verify if that is the right thing to do); method will be removed in Jaybird 6
Helper method to identify the right result set column for an OUT parameter name.

Parameters:
  `paramName` - name of the OUT parameter
Throws:
  `java.sql.SQLException`

#### getNClob

    public java.sql.NClob getNClob​(int parameterIndex)
                            throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getClob(int)`.

Specified by:
  `getNClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getNClob

    public java.sql.NClob getNClob​(java.lang.String parameterName)
                            throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `getClob(String)`.

Specified by:
  `getNClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getRowId

    public java.sql.RowId getRowId​(int parameterIndex)
                            throws java.sql.SQLException

Specified by:
  `getRowId` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getRowId

    public java.sql.RowId getRowId​(java.lang.String parameterName)
                            throws java.sql.SQLException

Specified by:
  `getRowId` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getSQLXML

    public java.sql.SQLXML getSQLXML​(int parameterIndex)
                              throws java.sql.SQLException

Specified by:
  `getSQLXML` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### getSQLXML

    public java.sql.SQLXML getSQLXML​(java.lang.String parameterName)
                              throws java.sql.SQLException

Specified by:
  `getSQLXML` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(java.lang.String parameterName,
                         java.sql.NClob value)
                  throws java.sql.SQLException

Implementation note: This method behaves exactly the same as `setClob(String, Clob)`.

Specified by:
  `setNClob` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setRowId

    public void setRowId​(java.lang.String parameterName,
                         java.sql.RowId x)
                  throws java.sql.SQLException

Specified by:
  `setRowId` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`

#### setSQLXML

    public void setSQLXML​(java.lang.String parameterName,
                          java.sql.SQLXML xmlObject)
                   throws java.sql.SQLException

Specified by:
  `setSQLXML` in interface `java.sql.CallableStatement`
Throws:
  `java.sql.SQLException`