createTemp static method
Create a new temporary LOB
Implementation
static Future<OracleLob> createTemp({
required DpiOracle dpiOracle,
required Pointer<dpiConn> connection,
required Pointer<dpiContext> context,
required LobType lobType,
}) async {
final memoryManager = MemoryManager();
try {
final lobPtr = memoryManager.allocate<Pointer<dpiLob>>(sizeOf<Pointer<dpiLob>>());
final errorInfo = memoryManager.allocate<dpiErrorInfo>(sizeOf<dpiErrorInfo>());
// Map LOB type to Oracle type
final oracleType = _lobTypeToOracleType(lobType);
// Create temporary LOB
final result = dpiOracle.dpiConn_newTempLob(
connection,
oracleType,
lobPtr,
);
if (result == DPI_FAILURE) {
dpiOracle.dpiContext_getError(context, errorInfo);
final errorMsg = StringUtils.fromNativeUtf8(errorInfo.ref.message.cast<Char>());
throw OracleException(
'Failed to create temporary LOB',
errorMessage: errorMsg,
);
}
return OracleLob._(
dpiOracle,
lobPtr.value,
context,
memoryManager,
lobType,
true, // isTemporary = true for createTemp
);
} catch (e) {
memoryManager.dispose();
if (e is OracleException) {
rethrow;
}
throw OracleException('LOB creation failed: $e');
}
}