fromPointer static method

OracleStatement fromPointer({
  1. required DpiOracle dpiOracle,
  2. required Pointer<dpiConn> connection,
  3. required Pointer<dpiContext> context,
  4. required Pointer<Pointer<dpiStmt>> statementPtr,
  5. required MemoryManager memoryManager,
  6. required String sql,
  7. bool executed = true,
})

Create an OracleStatement from an existing statement pointer (for REF CURSOR)

When executed is true (default), the statement is marked as executed, which is required for REF CURSOR statements that are returned from stored procedures with data ready to fetch.

Implementation

static OracleStatement fromPointer({
  required DpiOracle dpiOracle,
  required Pointer<dpiConn> connection,
  required Pointer<dpiContext> context,
  required Pointer<Pointer<dpiStmt>> statementPtr,
  required MemoryManager memoryManager,
  required String sql,
  bool executed = true,
}) {
  final stmt = OracleStatement._(
    dpiOracle,
    connection,
    context,
    statementPtr,
    sql,
    memoryManager,
  );
  stmt._executed = executed;

  // For REF CURSOR, we need to get the column count from the statement
  if (executed) {
    final colCountPtr = memoryManager.allocate<Uint32>(sizeOf<Uint32>());
    final result = dpiOracle.dpiStmt_getNumQueryColumns(
      statementPtr.value,
      colCountPtr,
    );
    if (result == DPI_SUCCESS) {
      stmt._columnCount = colCountPtr.value;
    }
  }

  return stmt;
}