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. Repeated placeholders reuse the same value from namedParams.

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,
    );
  }
}