wrap static method

OracleLob wrap({
  1. required DpiOracle dpiOracle,
  2. required Pointer<dpiLob> lobPtr,
  3. required Pointer<dpiContext> context,
  4. required LobType lobType,
  5. bool isTemporary = false,
})

Wrap an existing LOB pointer

This method is used when retrieving LOB values from query results. It adds a reference to the LOB to keep it alive beyond the statement's lifetime.

Note: Wrapped LOBs are assumed to be non-temporary (persistent LOBs from database). Always call dispose() when done to release the reference.

Implementation

static OracleLob wrap({
  required DpiOracle dpiOracle,
  required Pointer<dpiLob> lobPtr,
  required Pointer<dpiContext> context,
  required LobType lobType,
  bool isTemporary = false,
}) {
  final memoryManager = MemoryManager();

  // Add a reference to keep the LOB alive
  // This is necessary when the LOB comes from a query result
  dpiOracle.dpiLob_addRef(lobPtr);

  return OracleLob._(
    dpiOracle,
    lobPtr,
    context,
    memoryManager,
    lobType,
    isTemporary,
  );
}