execQueryParams method

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

Executes a SQL query with binary parameters.

The connectionId must be a valid active connection. The sql should be a parameterized SQL statement. The params should be a binary buffer containing serialized parameters. When maxBufferBytes is set, caps the result buffer size; otherwise uses the package default.

Returns binary result data on success, null on failure.

Implementation

Uint8List? execQueryParams(
  int connectionId,
  String sql,
  Uint8List? params, {
  int? maxBufferBytes,
  ResultEncoding resultEncoding = ResultEncoding.rowMajor,
}) {
  final paramsOrEmpty =
      (params == null || params.isEmpty) ? Uint8List(0) : params;
  final useOptions = resultEncoding != ResultEncoding.rowMajor &&
      _bindings.supportsExecQueryParamsOptions;
  return _withSql(
    sql,
    (sqlPtr) {
      return _withParamsBuffer(
        paramsOrEmpty,
        (paramsPtr) => callWithBuffer(
          (buf, bufLen, outWritten) => useOptions
              ? _bindings.odbc_exec_query_params_options(
                  connectionId,
                  sqlPtr,
                  paramsPtr,
                  paramsOrEmpty.length,
                  resultEncoding.wireCode,
                  buf,
                  bufLen,
                  outWritten,
                )
              : _bindings.odbc_exec_query_params(
                  connectionId,
                  sqlPtr,
                  paramsPtr,
                  paramsOrEmpty.length,
                  buf,
                  bufLen,
                  outWritten,
                ),
          maxSize: maxBufferBytes,
        ),
      );
    },
  );
}