Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBCallableStatement

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

All Implemented Interfaces:
  `AutoCloseable`, `CallableStatement`, `PreparedStatement`, `Statement`, `Wrapper`, `FirebirdCallableStatement`, `FirebirdPreparedStatement`, `FirebirdStatement`

@InternalApi @NullMarked public class FBCallableStatement extends FBPreparedStatement implements CallableStatement, FirebirdCallableStatement
Implementation of `CallableStatement`.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `CallableStatement` and `FirebirdCallableStatement` interfaces.

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
  Modifier and Type
  Field
  Description
  `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

  `currentStatementResult, fbStatement, gdsHelper, isSingletonResult, specialResult, statementListener`

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

  `connection`

  ### 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_SAVEPOINT, 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
  Modifier
  Constructor
  Description
  `protected`
  `FBCallableStatement(FBConnection connection, String sql, ResultSetBehavior rsBehavior, StoredProcedureMetaData storedProcMetaData, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addBatch()`
  `protected ResultSet`
  `assertHasData(@Nullable ResultSet rs)`
  Asserts if the current statement has data to return.
  `void`
  `clearBatch()`
  `void`
  `close()`
  `protected FBResultSet`
  `createSpecialResultSet(@Nullable FBObjectListener.ResultSetListener resultSetListener)`
  Create the result set for `specialResult`.
  `boolean`
  `execute()`
  `protected List<Long>`
  `executeBatchInternal()`
  `ResultSet`
  `executeQuery()`
  `int`
  `executeUpdate()`
  `protected ResultSet`
  `getAndAssertSingletonResultSet()`
  Returns the result set for the singleton row of the callable statement and asserts it has data.
  `@Nullable Array`
  `getArray(int parameterIndex)`
  `@Nullable Array`
  `getArray(String colName)`
  `@Nullable BigDecimal`
  `getBigDecimal(int parameterIndex)`
  `@Nullable BigDecimal`
  `getBigDecimal(int parameterIndex, int scale)`
  Deprecated.
  `@Nullable BigDecimal`
  `getBigDecimal(String colName)`
  `@Nullable Blob`
  `getBlob(int parameterIndex)`
  `@Nullable Blob`
  `getBlob(String colName)`
  `boolean`
  `getBoolean(int parameterIndex)`
  `boolean`
  `getBoolean(String colName)`
  `byte`
  `getByte(int parameterIndex)`
  `byte`
  `getByte(String colName)`
  `byte @Nullable []`
  `getBytes(int parameterIndex)`
  `byte @Nullable []`
  `getBytes(String colName)`
  `@Nullable Reader`
  `getCharacterStream(int parameterIndex)`
  `@Nullable Reader`
  `getCharacterStream(String parameterName)`
  `@Nullable Clob`
  `getClob(int parameterIndex)`
  `@Nullable Clob`
  `getClob(String colName)`
  `Date`
  `getDate(int parameterIndex)`
  `@Nullable Date`
  `getDate(int parameterIndex, @Nullable Calendar cal)`
  `@Nullable Date`
  `getDate(String colName)`
  `@Nullable Date`
  `getDate(String colName, @Nullable Calendar cal)`
  `double`
  `getDouble(int parameterIndex)`
  `double`
  `getDouble(String colName)`
  `FirebirdParameterMetaData`
  `getFirebirdParameterMetaData()`
  `float`
  `getFloat(int parameterIndex)`
  `float`
  `getFloat(String colName)`
  `ResultSet`
  `getGeneratedKeys()`
  `int`
  `getInt(int parameterIndex)`
  `int`
  `getInt(String colName)`
  `long`
  `getLong(int parameterIndex)`
  `long`
  `getLong(String colName)`
  `@Nullable ResultSetMetaData`
  `getMetaData()`
  `@Nullable Reader`
  `getNCharacterStream(int parameterIndex)`
  `@Nullable Reader`
  `getNCharacterStream(String parameterName)`
  `@Nullable NClob`
  `getNClob(int parameterIndex)`
  `@Nullable NClob`
  `getNClob(String parameterName)`
  `@Nullable String`
  `getNString(int parameterIndex)`
  `@Nullable String`
  `getNString(String parameterName)`
  `@Nullable Object`
  `getObject(int parameterIndex)`
  `<T extends @Nullable Object>
  @Nullable T`
  `getObject(int parameterIndex, Class<T> type)`
  `@Nullable Object`
  `getObject(int parameterIndex, Map<String,Class<?>> map)`
  `@Nullable Object`
  `getObject(String colName)`
  `<T extends @Nullable Object>
  @Nullable T`
  `getObject(String parameterName, Class<T> type)`
  `@Nullable Object`
  `getObject(String colName, Map<String,Class<?>> map)`
  `@Nullable Ref`
  `getRef(int parameterIndex)`
  `@Nullable Ref`
  `getRef(String colName)`
  `@Nullable RowId`
  `getRowId(int parameterIndex)`
  `@Nullable RowId`
  `getRowId(String parameterName)`
  `short`
  `getShort(int parameterIndex)`
  `short`
  `getShort(String colName)`
  `@Nullable SQLXML`
  `getSQLXML(int parameterIndex)`
  `@Nullable SQLXML`
  `getSQLXML(String parameterName)`
  `@Nullable String`
  `getString(int parameterIndex)`
  `@Nullable String`
  `getString(String colName)`
  `@Nullable Time`
  `getTime(int parameterIndex)`
  `@Nullable Time`
  `getTime(int parameterIndex, @Nullable Calendar cal)`
  `@Nullable Time`
  `getTime(String colName)`
  `@Nullable Time`
  `getTime(String colName, @Nullable Calendar cal)`
  `@Nullable Timestamp`
  `getTimestamp(int parameterIndex)`
  `@Nullable Timestamp`
  `getTimestamp(int parameterIndex, @Nullable Calendar cal)`
  `@Nullable Timestamp`
  `getTimestamp(String colName)`
  `@Nullable Timestamp`
  `getTimestamp(String colName, @Nullable Calendar cal)`
  `@Nullable URL`
  `getURL(int parameterIndex)`
  `@Nullable URL`
  `getURL(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(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, String typeName)`
  `void`
  `registerOutParameter(int parameterIndex, SQLType sqlType)`
  `void`
  `registerOutParameter(int parameterIndex, SQLType sqlType, int scale)`
  `void`
  `registerOutParameter(int parameterIndex, SQLType sqlType, String typeName)`
  `void`
  `registerOutParameter(String param1, int param2)`
  `void`
  `registerOutParameter(String param1, int param2, int param3)`
  `void`
  `registerOutParameter(String param1, int param2, String param3)`
  `void`
  `registerOutParameter(String parameterName, SQLType sqlType)`
  `void`
  `registerOutParameter(String parameterName, SQLType sqlType, int scale)`
  `void`
  `registerOutParameter(String parameterName, SQLType sqlType, String typeName)`
  `void`
  `setAsciiStream(String parameterName, @Nullable InputStream x)`
  `void`
  `setAsciiStream(String param1, @Nullable InputStream param2, int param3)`
  `void`
  `setAsciiStream(String parameterName, @Nullable InputStream x, long length)`
  `void`
  `setBigDecimal(int parameterIndex, @Nullable BigDecimal x)`
  `void`
  `setBigDecimal(String param1, @Nullable BigDecimal param2)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, int length)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, long length)`
  `void`
  `setBinaryStream(String parameterName, @Nullable InputStream x)`
  `void`
  `setBinaryStream(String param1, @Nullable InputStream param2, int param3)`
  `void`
  `setBinaryStream(String parameterName, @Nullable InputStream x, long length)`
  `void`
  `setBlob(int parameterIndex, @Nullable InputStream inputStream)`
  `void`
  `setBlob(int parameterIndex, @Nullable InputStream inputStream, long length)`
  `void`
  `setBlob(int parameterIndex, @Nullable Blob blob)`
  `void`
  `setBlob(String parameterName, @Nullable InputStream inputStream)`
  `void`
  `setBlob(String parameterName, @Nullable InputStream inputStream, long length)`
  `void`
  `setBlob(String parameterName, @Nullable Blob x)`
  `void`
  `setBoolean(int parameterIndex, boolean x)`
  `void`
  `setBoolean(String param1, boolean param2)`
  `void`
  `setByte(int parameterIndex, byte x)`
  `void`
  `setByte(String param1, byte param2)`
  `void`
  `setBytes(int parameterIndex, byte @Nullable [] x)`
  `void`
  `setBytes(String param1, byte @Nullable [] param2)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader, int length)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader, long length)`
  `void`
  `setCharacterStream(String parameterName, @Nullable Reader reader)`
  `void`
  `setCharacterStream(String param1, @Nullable Reader param2, int param3)`
  `void`
  `setCharacterStream(String parameterName, @Nullable Reader reader, long length)`
  `void`
  `setClob(int parameterIndex, @Nullable Reader reader)`
  `void`
  `setClob(int parameterIndex, @Nullable Reader reader, long length)`
  `void`
  `setClob(int parameterIndex, @Nullable Clob x)`
  `void`
  `setClob(String parameterName, @Nullable Reader reader)`
  `void`
  `setClob(String parameterName, @Nullable Reader reader, long length)`
  `void`
  `setClob(String parameterName, @Nullable Clob x)`
  `void`
  `setDate(int parameterIndex, @Nullable Date x)`
  `void`
  `setDate(int parameterIndex, @Nullable Date x, @Nullable Calendar cal)`
  `void`
  `setDate(String param1, @Nullable Date param2)`
  `void`
  `setDate(String param1, @Nullable Date param2, @Nullable Calendar param3)`
  `void`
  `setDouble(int parameterIndex, double x)`
  `void`
  `setDouble(String param1, double param2)`
  `void`
  `setFloat(int parameterIndex, float x)`
  `void`
  `setFloat(String param1, float param2)`
  `void`
  `setInt(int parameterIndex, int x)`
  `void`
  `setInt(String param1, int param2)`
  `void`
  `setLong(int parameterIndex, long x)`
  `void`
  `setLong(String param1, long param2)`
  `void`
  `setNCharacterStream(String parameterName, @Nullable Reader value)`
  `void`
  `setNCharacterStream(String parameterName, @Nullable Reader value, long length)`
  `void`
  `setNClob(String parameterName, @Nullable Reader reader)`
  `void`
  `setNClob(String parameterName, @Nullable Reader reader, long length)`
  `void`
  `setNClob(String parameterName, @Nullable NClob value)`
  `void`
  `setNString(String parameterName, @Nullable String value)`
  `void`
  `setNull(int parameterIndex, int sqlType)`
  `void`
  `setNull(int parameterIndex, int sqlType, String typeName)`
  `void`
  `setNull(String param1, int param2)`
  `void`
  `setNull(String param1, int param2, String param3)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, int targetSqlType)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, int targetSqlType, int scaleOrLength)`
  `void`
  `setObject(String param1, @Nullable Object param2)`
  `void`
  `setObject(String param1, @Nullable Object param2, int param3)`
  `void`
  `setObject(String param1, @Nullable Object param2, int param3, int param4)`
  `protected void`
  `setRequiredTypes()`
  Set required types for output parameters.
  `void`
  `setRowId(String parameterName, @Nullable 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(String param1, short param2)`
  `void`
  `setSQLXML(String parameterName, @Nullable SQLXML xmlObject)`
  `void`
  `setString(int parameterIndex, @Nullable String x)`
  `void`
  `setString(String param1, @Nullable String param2)`
  `void`
  `setTime(int parameterIndex, @Nullable Time x)`
  `void`
  `setTime(int parameterIndex, @Nullable Time x, @Nullable Calendar cal)`
  `void`
  `setTime(String param1, @Nullable Time param2)`
  `void`
  `setTime(String param1, @Nullable Time param2, @Nullable Calendar param3)`
  `void`
  `setTimestamp(int parameterIndex, @Nullable Timestamp x)`
  `void`
  `setTimestamp(int parameterIndex, @Nullable Timestamp x, @Nullable Calendar cal)`
  `void`
  `setTimestamp(String param1, @Nullable Timestamp param2)`
  `void`
  `setTimestamp(String param1, @Nullable Timestamp param2, @Nullable Calendar param3)`
  `void`
  `setURL(String param1, @Nullable 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, getField, getParameterDescriptor, getParameterMetaData, isGeneratedKeyQuery, 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

  `cancel, createBatchUpdateException, createBatchUpdateException, createStatementListener, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, executeBatch, executeImpl, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getCurrentResultSet, getDeletedRowsCount, getExecutionPlan, getExplainedExecutionPlan, getInsertedRowsCount, getLargeUpdateCount, getLargeUpdateCountMinZero, getMaxFieldSize, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSet, getStatementHandle, getStatementType, getUpdateCount, getUpdateCountMinZero, getUpdatedRowsCount, hasOpenResultSet, internalExecute, internalExecute, isSimpleIdentifier, isValid, isWrapperFor, nativeSQL, notifyStatementCompleted, notifyStatementStarted, notifyStatementStarted, setEscapeProcessing, setMaxFieldSize, setQueryTimeout, unwrap`

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

  `addWarning, checkValidity, clearWarnings, closeOnCompletion, completeStatement, equals, fetchConfig, getConnection, getCursorName, getFetchDirection, getFetchSize, getLargeMaxRows, getLocalStatementId, getMaxRows, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getWarnings, hashCode, isClosed, isCloseOnCompletion, isPoolable, performCloseOnCompletion, resultSetBehavior, setCursorName, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxRows, setPoolable, 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

  `getStatementType`

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

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

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

  `clearParameters, executeLargeUpdate, getParameterMetaData, 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, 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 Details

  - ### selectableProcedure

    protected boolean selectableProcedure

  - ### procedureCall

    protected FBProcedureCall procedureCall

- ## Constructor Details

  - ### FBCallableStatement

    protected FBCallableStatement(FBConnection connection, String sql, ResultSetBehavior rsBehavior, StoredProcedureMetaData storedProcMetaData, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener) throws SQLException
    Throws:
      `SQLException`

- ## Method Details

  - ### close

    public void close() throws SQLException
    Description copied from class: `AbstractStatement`

    Subclasses overriding this method are expected to call this method with `super.close()` at an appropriate point to mark it closed.

    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Statement`
    Overrides:
      `close` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### getFirebirdParameterMetaData

    public FirebirdParameterMetaData getFirebirdParameterMetaData() throws SQLException
    Overrides:
      `getFirebirdParameterMetaData` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### addBatch

    public void addBatch() throws SQLException
    Specified by:
      `addBatch` in interface `PreparedStatement`
    Overrides:
      `addBatch` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### clearBatch

    public void clearBatch() throws SQLException
    Specified by:
      `clearBatch` in interface `Statement`
    Overrides:
      `clearBatch` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### executeBatchInternal

    protected List<Long> executeBatchInternal() throws SQLException
    Overrides:
      `executeBatchInternal` in class `FBPreparedStatement`
    Throws:
      `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 SQLException
    Set required types for output parameters.
    Throws:
      `SQLException` - if something went wrong.

  - ### prepareFixedStatement

    protected void prepareFixedStatement(String sql) throws 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:
      `SQLException`

  - ### getMetaData

    public @Nullable ResultSetMetaData getMetaData() throws 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 `PreparedStatement`
    Overrides:
      `getMetaData` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute() throws SQLException
    Specified by:
      `execute` in interface `PreparedStatement`
    Overrides:
      `execute` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### executeQuery

    public ResultSet executeQuery() throws SQLException
    Specified by:
      `executeQuery` in interface `PreparedStatement`
    Overrides:
      `executeQuery` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate() throws SQLException
    Specified by:
      `executeUpdate` in interface `PreparedStatement`
    Overrides:
      `executeUpdate` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### internalExecute

    protected boolean internalExecute(boolean sendOutParams) throws 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:
      `SQLException`

  - ### createSpecialResultSet

    protected FBResultSet createSpecialResultSet(@Nullable FBObjectListener.ResultSetListener resultSetListener) throws 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:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, int sqlType) throws SQLException
    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, int sqlType, int scale) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, SQLType sqlType) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, SQLType sqlType, int scale) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, SQLType sqlType, String typeName) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### wasNull

    public boolean wasNull() throws SQLException
    Specified by:
      `wasNull` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getString

    public @Nullable String getString(int parameterIndex) throws SQLException
    Specified by:
      `getString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBoolean

    public boolean getBoolean(int parameterIndex) throws SQLException
    Specified by:
      `getBoolean` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getByte

    public byte getByte(int parameterIndex) throws SQLException
    Specified by:
      `getByte` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getShort

    public short getShort(int parameterIndex) throws SQLException
    Specified by:
      `getShort` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getInt

    public int getInt(int parameterIndex) throws SQLException
    Specified by:
      `getInt` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getLong

    public long getLong(int parameterIndex) throws SQLException
    Specified by:
      `getLong` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getFloat

    public float getFloat(int parameterIndex) throws SQLException
    Specified by:
      `getFloat` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDouble

    public double getDouble(int parameterIndex) throws SQLException
    Specified by:
      `getDouble` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBigDecimal

    @Deprecated(since="1") public @Nullable BigDecimal getBigDecimal(int parameterIndex, int scale) throws SQLException
    Deprecated.
    Specified by:
      `getBigDecimal` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBytes

    public byte @Nullable [] getBytes(int parameterIndex) throws SQLException
    Specified by:
      `getBytes` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDate

    public Date getDate(int parameterIndex) throws SQLException
    Specified by:
      `getDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTime

    public @Nullable Time getTime(int parameterIndex) throws SQLException
    Specified by:
      `getTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTimestamp

    public @Nullable Timestamp getTimestamp(int parameterIndex) throws SQLException
    Specified by:
      `getTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public @Nullable Object getObject(int parameterIndex) throws SQLException

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

    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public @Nullable Object getObject(String colName) throws SQLException
    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public @Nullable Object getObject(int parameterIndex, Map<String,Class<?>> map) throws SQLException

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

    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public @Nullable Object getObject(String colName, Map<String,Class<?>> map) throws SQLException

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

    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public <T extends @Nullable Object> @Nullable T getObject(int parameterIndex, Class<T> type) throws SQLException
    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getObject

    public <T extends @Nullable Object> @Nullable T getObject(String parameterName, Class<T> type) throws SQLException
    Specified by:
      `getObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBigDecimal

    public @Nullable BigDecimal getBigDecimal(int parameterIndex) throws SQLException
    Specified by:
      `getBigDecimal` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getRef

    public @Nullable Ref getRef(int parameterIndex) throws SQLException
    Specified by:
      `getRef` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBlob

    public @Nullable Blob getBlob(int parameterIndex) throws SQLException
    Specified by:
      `getBlob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getClob

    public @Nullable Clob getClob(int parameterIndex) throws SQLException
    Specified by:
      `getClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getArray

    public @Nullable Array getArray(int parameterIndex) throws SQLException
    Specified by:
      `getArray` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDate

    public @Nullable Date getDate(int parameterIndex, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTime

    public @Nullable Time getTime(int parameterIndex, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTimestamp

    public @Nullable Timestamp getTimestamp(int parameterIndex, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getURL

    public @Nullable URL getURL(int parameterIndex) throws SQLException
    Specified by:
      `getURL` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getString

    public @Nullable String getString(String colName) throws SQLException
    Specified by:
      `getString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBoolean

    public boolean getBoolean(String colName) throws SQLException
    Specified by:
      `getBoolean` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getByte

    public byte getByte(String colName) throws SQLException
    Specified by:
      `getByte` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getShort

    public short getShort(String colName) throws SQLException
    Specified by:
      `getShort` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getInt

    public int getInt(String colName) throws SQLException
    Specified by:
      `getInt` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getLong

    public long getLong(String colName) throws SQLException
    Specified by:
      `getLong` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getFloat

    public float getFloat(String colName) throws SQLException
    Specified by:
      `getFloat` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDouble

    public double getDouble(String colName) throws SQLException
    Specified by:
      `getDouble` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBytes

    public byte @Nullable [] getBytes(String colName) throws SQLException
    Specified by:
      `getBytes` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDate

    public @Nullable Date getDate(String colName) throws SQLException
    Specified by:
      `getDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTime

    public @Nullable Time getTime(String colName) throws SQLException
    Specified by:
      `getTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTimestamp

    public @Nullable Timestamp getTimestamp(String colName) throws SQLException
    Specified by:
      `getTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBigDecimal

    public @Nullable BigDecimal getBigDecimal(String colName) throws SQLException
    Specified by:
      `getBigDecimal` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getRef

    public @Nullable Ref getRef(String colName) throws SQLException
    Specified by:
      `getRef` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getBlob

    public @Nullable Blob getBlob(String colName) throws SQLException
    Specified by:
      `getBlob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getClob

    public @Nullable Clob getClob(String colName) throws SQLException
    Specified by:
      `getClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getArray

    public @Nullable Array getArray(String colName) throws SQLException
    Specified by:
      `getArray` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getDate

    public @Nullable Date getDate(String colName, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTime

    public @Nullable Time getTime(String colName, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getTimestamp

    public @Nullable Timestamp getTimestamp(String colName, @Nullable Calendar cal) throws SQLException
    Specified by:
      `getTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getURL

    public @Nullable URL getURL(String colName) throws SQLException
    Specified by:
      `getURL` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getCharacterStream

    public @Nullable Reader getCharacterStream(int parameterIndex) throws SQLException
    Specified by:
      `getCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getCharacterStream

    public @Nullable Reader getCharacterStream(String parameterName) throws SQLException
    Specified by:
      `getCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getNCharacterStream

    public @Nullable Reader getNCharacterStream(int parameterIndex) throws SQLException

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

    Specified by:
      `getNCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getNCharacterStream

    public @Nullable Reader getNCharacterStream(String parameterName) throws SQLException

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

    Specified by:
      `getNCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getNString

    public @Nullable String getNString(int parameterIndex) throws SQLException

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

    Specified by:
      `getNString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getNString

    public @Nullable String getNString(String parameterName) throws SQLException

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

    Specified by:
      `getNString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setAsciiStream

    public void setAsciiStream(String parameterName, @Nullable InputStream x, long length) throws SQLException
    Specified by:
      `setAsciiStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setAsciiStream

    public void setAsciiStream(String parameterName, @Nullable InputStream x) throws SQLException
    Specified by:
      `setAsciiStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(String parameterName, @Nullable InputStream x, long length) throws SQLException
    Specified by:
      `setBinaryStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(String parameterName, @Nullable InputStream x) throws SQLException
    Specified by:
      `setBinaryStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(String parameterName, @Nullable Blob x) throws SQLException
    Specified by:
      `setBlob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(String parameterName, @Nullable InputStream inputStream, long length) throws SQLException
    Specified by:
      `setBlob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(String parameterName, @Nullable InputStream inputStream) throws SQLException
    Specified by:
      `setBlob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(String parameterName, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(String parameterName, @Nullable Reader reader) throws SQLException
    Specified by:
      `setCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(String parameterName, @Nullable Clob x) throws SQLException
    Specified by:
      `setClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(String parameterName, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(String parameterName, @Nullable Reader reader) throws SQLException
    Specified by:
      `setClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNCharacterStream

    public void setNCharacterStream(String parameterName, @Nullable Reader value, long length) throws SQLException

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

    Specified by:
      `setNCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNCharacterStream

    public void setNCharacterStream(String parameterName, @Nullable Reader value) throws SQLException

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

    Specified by:
      `setNCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(String parameterName, @Nullable Reader reader, long length) throws SQLException

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

    Specified by:
      `setNClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(String parameterName, @Nullable Reader reader) throws SQLException

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

    Specified by:
      `setNClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNString

    public void setNString(String parameterName, @Nullable String value) throws SQLException

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

    Specified by:
      `setNString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String param1, int param2) throws SQLException
    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String param1, int param2, int param3) throws SQLException
    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String param1, int param2, String param3) throws SQLException
    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String parameterName, SQLType sqlType) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String parameterName, SQLType sqlType, int scale) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(String parameterName, SQLType sqlType, String typeName) throws SQLException

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

    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setURL

    public void setURL(String param1, @Nullable URL param2) throws SQLException
    Specified by:
      `setURL` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(String param1, int param2) throws SQLException
    Specified by:
      `setNull` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBoolean

    public void setBoolean(String param1, boolean param2) throws SQLException
    Specified by:
      `setBoolean` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setByte

    public void setByte(String param1, byte param2) throws SQLException
    Specified by:
      `setByte` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setShort

    public void setShort(String param1, short param2) throws SQLException
    Specified by:
      `setShort` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setInt

    public void setInt(String param1, int param2) throws SQLException
    Specified by:
      `setInt` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setLong

    public void setLong(String param1, long param2) throws SQLException
    Specified by:
      `setLong` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setFloat

    public void setFloat(String param1, float param2) throws SQLException
    Specified by:
      `setFloat` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setDouble

    public void setDouble(String param1, double param2) throws SQLException
    Specified by:
      `setDouble` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBigDecimal

    public void setBigDecimal(String param1, @Nullable BigDecimal param2) throws SQLException
    Specified by:
      `setBigDecimal` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setString

    public void setString(String param1, @Nullable String param2) throws SQLException
    Specified by:
      `setString` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBytes

    public void setBytes(String param1, byte @Nullable [] param2) throws SQLException
    Specified by:
      `setBytes` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(String param1, @Nullable Date param2) throws SQLException
    Specified by:
      `setDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(String param1, @Nullable Time param2) throws SQLException
    Specified by:
      `setTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(String param1, @Nullable Timestamp param2) throws SQLException
    Specified by:
      `setTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setAsciiStream

    public void setAsciiStream(String param1, @Nullable InputStream param2, int param3) throws SQLException
    Specified by:
      `setAsciiStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(String param1, @Nullable InputStream param2, int param3) throws SQLException
    Specified by:
      `setBinaryStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(String param1, @Nullable Object param2, int param3, int param4) throws SQLException
    Specified by:
      `setObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(String param1, @Nullable Object param2, int param3) throws SQLException
    Specified by:
      `setObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(String param1, @Nullable Object param2) throws SQLException
    Specified by:
      `setObject` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(String param1, @Nullable Reader param2, int param3) throws SQLException
    Specified by:
      `setCharacterStream` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(String param1, @Nullable Date param2, @Nullable Calendar param3) throws SQLException
    Specified by:
      `setDate` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(String param1, @Nullable Time param2, @Nullable Calendar param3) throws SQLException
    Specified by:
      `setTime` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(String param1, @Nullable Timestamp param2, @Nullable Calendar param3) throws SQLException
    Specified by:
      `setTimestamp` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(String param1, int param2, String param3) throws SQLException
    Specified by:
      `setNull` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### registerOutParameter

    public void registerOutParameter(int parameterIndex, int sqlType, String typeName) throws SQLException
    Specified by:
      `registerOutParameter` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getGeneratedKeys

    public ResultSet getGeneratedKeys() throws SQLException
    Specified by:
      `getGeneratedKeys` in interface `Statement`
    Overrides:
      `getGeneratedKeys` in class `FBStatement`
    Throws:
      `SQLException`

  - ### assertHasData

    protected ResultSet assertHasData(@Nullable ResultSet rs) throws 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
    Returns:
      non-`null` result set (same object as `rs`)
    Throws:
      `SQLException` - when the result set has no data.

  - ### getAndAssertSingletonResultSet

    protected ResultSet getAndAssertSingletonResultSet() throws 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:
      `SQLException` - For database access errors

  - ### setBigDecimal

    public void setBigDecimal(int parameterIndex, @Nullable BigDecimal x) throws SQLException
    Specified by:
      `setBigDecimal` in interface `PreparedStatement`
    Overrides:
      `setBigDecimal` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, int length) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Overrides:
      `setBinaryStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, long length) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Overrides:
      `setBinaryStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Overrides:
      `setBinaryStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable Blob blob) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Overrides:
      `setBlob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable InputStream inputStream, long length) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Overrides:
      `setBlob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable InputStream inputStream) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Overrides:
      `setBlob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBoolean

    public void setBoolean(int parameterIndex, boolean x) throws SQLException
    Specified by:
      `setBoolean` in interface `PreparedStatement`
    Overrides:
      `setBoolean` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setByte

    public void setByte(int parameterIndex, byte x) throws SQLException
    Specified by:
      `setByte` in interface `PreparedStatement`
    Overrides:
      `setByte` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setBytes

    public void setBytes(int parameterIndex, byte @Nullable [] x) throws SQLException
    Specified by:
      `setBytes` in interface `PreparedStatement`
    Overrides:
      `setBytes` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader, int length) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Overrides:
      `setCharacterStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Overrides:
      `setCharacterStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Overrides:
      `setCharacterStream` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Clob x) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Overrides:
      `setClob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Overrides:
      `setClob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Reader reader) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Overrides:
      `setClob` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(int parameterIndex, @Nullable Date x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setDate` in interface `PreparedStatement`
    Overrides:
      `setDate` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(int parameterIndex, @Nullable Date x) throws SQLException
    Specified by:
      `setDate` in interface `PreparedStatement`
    Overrides:
      `setDate` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setDouble

    public void setDouble(int parameterIndex, double x) throws SQLException
    Specified by:
      `setDouble` in interface `PreparedStatement`
    Overrides:
      `setDouble` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setFloat

    public void setFloat(int parameterIndex, float x) throws SQLException
    Specified by:
      `setFloat` in interface `PreparedStatement`
    Overrides:
      `setFloat` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setInt

    public void setInt(int parameterIndex, int x) throws SQLException
    Specified by:
      `setInt` in interface `PreparedStatement`
    Overrides:
      `setInt` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setLong

    public void setLong(int parameterIndex, long x) throws SQLException
    Specified by:
      `setLong` in interface `PreparedStatement`
    Overrides:
      `setLong` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException
    Specified by:
      `setNull` in interface `PreparedStatement`
    Overrides:
      `setNull` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(int parameterIndex, int sqlType) throws SQLException
    Specified by:
      `setNull` in interface `PreparedStatement`
    Overrides:
      `setNull` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, int targetSqlType, int scaleOrLength) throws SQLException

    Implementation note: ignores `scaleOrLength` and `targetSqlType` and works as `FBPreparedStatement.setObject(int, Object)`, `scaleOrLength` is not ignored if `x` is a `Reader` or `InputStream`.

    Implementation note: ignores `scaleOrLength` and `targetSqlType` and works as `setObject(int, Object)`, `scaleOrLength` is not ignored if `x` is a `Reader` or `InputStream`.

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

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, int targetSqlType) throws SQLException
    Description copied from class: `FBPreparedStatement`

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

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

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x) throws SQLException
    Specified by:
      `setObject` in interface `PreparedStatement`
    Overrides:
      `setObject` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setShort

    public void setShort(int parameterIndex, short x) throws SQLException
    Specified by:
      `setShort` in interface `PreparedStatement`
    Overrides:
      `setShort` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setString

    public void setString(int parameterIndex, @Nullable String x) throws SQLException
    Specified by:
      `setString` in interface `PreparedStatement`
    Overrides:
      `setString` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(int parameterIndex, @Nullable Time x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setTime` in interface `PreparedStatement`
    Overrides:
      `setTime` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(int parameterIndex, @Nullable Time x) throws SQLException
    Specified by:
      `setTime` in interface `PreparedStatement`
    Overrides:
      `setTime` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(int parameterIndex, @Nullable Timestamp x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setTimestamp` in interface `PreparedStatement`
    Overrides:
      `setTimestamp` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(int parameterIndex, @Nullable Timestamp x) throws SQLException
    Specified by:
      `setTimestamp` in interface `PreparedStatement`
    Overrides:
      `setTimestamp` in class `FBPreparedStatement`
    Throws:
      `SQLException`

  - ### getNClob

    public @Nullable NClob getNClob(int parameterIndex) throws SQLException

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

    Specified by:
      `getNClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getNClob

    public @Nullable NClob getNClob(String parameterName) throws SQLException

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

    Specified by:
      `getNClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getRowId

    public @Nullable RowId getRowId(int parameterIndex) throws SQLException
    Specified by:
      `getRowId` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getRowId

    public @Nullable RowId getRowId(String parameterName) throws SQLException
    Specified by:
      `getRowId` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getSQLXML

    public @Nullable SQLXML getSQLXML(int parameterIndex) throws SQLException
    Specified by:
      `getSQLXML` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### getSQLXML

    public @Nullable SQLXML getSQLXML(String parameterName) throws SQLException
    Specified by:
      `getSQLXML` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(String parameterName, @Nullable NClob value) throws SQLException

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

    Specified by:
      `setNClob` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setRowId

    public void setRowId(String parameterName, @Nullable RowId x) throws SQLException
    Specified by:
      `setRowId` in interface `CallableStatement`
    Throws:
      `SQLException`

  - ### setSQLXML

    public void setSQLXML(String parameterName, @Nullable SQLXML xmlObject) throws SQLException
    Specified by:
      `setSQLXML` in interface `CallableStatement`
    Throws:
      `SQLException`