executeQueryNamed method

Future<Uint8List?> executeQueryNamed(
  1. int connectionId,
  2. String sql,
  3. Map<String, Object?> namedParams, {
  4. int? maxBufferBytes,
})

Executes sql on connectionId using named parameters.

Supports @name and :name syntax, converting placeholders to positional order before sending the query to the worker.

Throws AsyncError with AsyncErrorCode.invalidParameter when any required named parameter is missing.

Implementation

Future<Uint8List?> executeQueryNamed(
  int connectionId,
  String sql,
  Map<String, Object?> namedParams, {
  int? maxBufferBytes,
}) async {
  try {
    final extract = NamedParameterParser.extract(sql);
    final positional = NamedParameterParser.toPositionalParams(
      namedParams: namedParams,
      paramNames: extract.paramNames,
    );
    final paramValues = paramValuesFromObjects(positional);
    return executeQueryParams(
      connectionId,
      extract.cleanedSql,
      paramValues,
      maxBufferBytes: maxBufferBytes,
    );
  } on ParameterMissingException catch (e) {
    throw AsyncError(
      code: AsyncErrorCode.invalidParameter,
      message: e.message,
    );
  }
}