executeAsyncStartParams method

int? executeAsyncStartParams(
  1. int connectionId,
  2. String sql,
  3. Uint8List? params, {
  4. ResultEncoding resultEncoding = ResultEncoding.rowMajor,
})

Starts non-blocking parameterized query execution.

Returns null when API is unavailable. Returns 0 on native failure.

Implementation

int? executeAsyncStartParams(
  int connectionId,
  String sql,
  Uint8List? params, {
  ResultEncoding resultEncoding = ResultEncoding.rowMajor,
}) {
  if (!_bindings.supportsAsyncExecuteParamsApi) {
    return null;
  }
  return _withSql(
    sql,
    (sqlPtr) {
      if (_bindings.supportsAsyncExecuteParamsOptionsApi) {
        final wire = resultEncoding.wireCode;
        if (params == null || params.isEmpty) {
          return _bindings.odbc_execute_async_params_options(
            connectionId,
            sqlPtr,
            ffi.nullptr.cast<ffi.Uint8>(),
            0,
            wire,
          );
        }
        return _withParamsBuffer(
          params,
          (paramsPtr) => _bindings.odbc_execute_async_params_options(
            connectionId,
            sqlPtr,
            paramsPtr,
            params.length,
            wire,
          ),
        );
      }
      if (resultEncoding != ResultEncoding.rowMajor) {
        return null;
      }
      if (params == null || params.isEmpty) {
        return _bindings.odbc_execute_async_params(
          connectionId,
          sqlPtr,
          ffi.nullptr.cast<ffi.Uint8>(),
          0,
        );
      }
      return _withParamsBuffer(
        params,
        (paramsPtr) => _bindings.odbc_execute_async_params(
          connectionId,
          sqlPtr,
          paramsPtr,
          params.length,
        ),
      );
    },
  );
}