closeResource method

Future<void> closeResource()

Close the LOB resource and flush buffered writes

Flushes any buffered writes to the database and closes the LOB resource. Must be called after openResource() to ensure all writes are persisted.

Example:

await lob.openResource();
await lob.write('Large data...');
await lob.closeResource(); // Flushes buffered writes

Implementation

Future<void> closeResource() async {
  _ensureNotDisposed();

  if (!_resourceOpen) {
    return; // Not open
  }

  final result = _dpiOracle.dpiLob_closeResource(_lobPtr);

  if (result == DPI_FAILURE) {
    final errorInfo = _memoryManager.allocate<dpiErrorInfo>(sizeOf<dpiErrorInfo>());
    _dpiOracle.dpiContext_getError(_context, errorInfo);
    final errorMsg = StringUtils.fromNativeUtf8(errorInfo.ref.message.cast<Char>());

    throw OracleException(
      'Failed to close LOB resource',
      errorMessage: errorMsg,
    );
  }

  _resourceOpen = false;
}