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