execute method
Uint8List?
execute(
- int stmtId, [
- Uint8List? params,
- int timeoutOverrideMs = 0,
- int fetchSize = 1000,
- int? maxBufferBytes,
- int? initialBufferBytes,
- ResultEncoding resultEncoding = ResultEncoding.rowMajor,
inherited
Executes a prepared statement with optional binary parameters.
The stmtId must be a valid prepared statement identifier.
The params should be a binary buffer containing serialized parameters,
or null if no parameters are needed.
The timeoutOverrideMs overrides statement timeout (0 = use stored).
The fetchSize specifies rows per batch (default: 1000).
When maxBufferBytes is set, caps the result buffer size.
Returns binary result data on success, null on failure.
Implementation
Uint8List? execute(
int stmtId, [
Uint8List? params,
int timeoutOverrideMs = 0,
int fetchSize = 1000,
int? maxBufferBytes,
int? initialBufferBytes,
ResultEncoding resultEncoding = ResultEncoding.rowMajor,
]) {
if (resultEncoding != ResultEncoding.rowMajor) {
_requireResultEncodingSupport(
resultEncoding: resultEncoding,
supported: _bindings.supportsExecuteOptions,
symbol: 'odbc_execute_options',
);
}
int invoke(
ffi.Pointer<ffi.Uint8> buf,
int bufLen,
ffi.Pointer<ffi.Uint32> outWritten,
ffi.Pointer<ffi.Uint8>? paramsPtr,
int paramsLen,
) {
if (resultEncoding != ResultEncoding.rowMajor) {
return _bindings.odbc_execute_options(
stmtId,
paramsPtr,
paramsLen,
timeoutOverrideMs,
fetchSize,
resultEncoding.wireCode,
buf,
bufLen,
outWritten,
);
}
return _bindings.odbc_execute(
stmtId,
paramsPtr,
paramsLen,
timeoutOverrideMs,
fetchSize,
buf,
bufLen,
outWritten,
);
}
if (params == null || params.isEmpty) {
return callWithBuffer(
(buf, bufLen, outWritten) =>
invoke(buf, bufLen, outWritten, ffi.nullptr, 0),
maxSize: maxBufferBytes,
initialSize: initialBufferBytes,
);
}
return _withParamsBuffer(
params,
(paramsPtr) => callWithBuffer(
(buf, bufLen, outWritten) =>
invoke(buf, bufLen, outWritten, paramsPtr, params.length),
maxSize: maxBufferBytes,
initialSize: initialBufferBytes,
preferTransient: preferTransientFfiBufferForParams(params),
),
);
}