execute static method

Future<OracleStatement> execute({
  1. required DpiOracle dpiOracle,
  2. required Pointer<dpiConn> connection,
  3. required Pointer<dpiContext> context,
  4. required String sql,
  5. List? params,
  6. Map<String, dynamic>? namedParams,
})

Execute a SQL statement

Implementation

static Future<OracleStatement> execute({
  required DpiOracle dpiOracle,
  required Pointer<dpiConn> connection,
  required Pointer<dpiContext> context,
  required String sql,
  List<dynamic>? params,
  Map<String, dynamic>? namedParams,
}) async {
  final statement = await prepare(
    dpiOracle: dpiOracle,
    connection: connection,
    context: context,
    sql: sql,
  );

  try {
    // Bind positional parameters if provided
    if (params != null && params.isNotEmpty) {
      await statement._bindParams(params);
    }

    // Bind named parameters if provided
    if (namedParams != null && namedParams.isNotEmpty) {
      await statement._bindParamsByName(namedParams);
    }

    // Execute statement
    await statement.executeStatement();

    return statement;
  } catch (e) {
    // Properly clean up the statement on error
    await statement.close();
    rethrow;
  }
}