Executes a previously prepared statement.
If specific data is large, it can be sent separately prior to this command (see COM_STMT_SEND_LONG_DATA).
If a statement is re-executed without changing the bind types, the types do not need to be sent to the server again.
Client to server.
int<1> 0x17
: COM_STMT_EXECUTE
header.
int<1> flags.
int<4> Iteration count (always 1).
If (param_count
> 0
)
byte<(param_count + 7)/8> null bitmap.
byte<1>: send type to server (0 / 1).
If (send type to server):
For each parameter:
byte<1>: field type.
byte<1>: parameter flag.
For each parameter (for instance, param_count
times):
If parameter is not null:
byte binary parameter value.
Statement ID is the identifier of the prepared statement (from COM_STMT_PREPARE answer).
Value -1
(0xFFFFFFFF
) can be used to indicate to use the last statement prepared on current connection if no COM_STMT_PREPARE
has failed since.
This permit pipelining :
Send COM_STMT_PREPARE
+ COM_STMT_EXECUTE
with statement ID -1
.
Read COM_STMT_PREPARE
+ COM_STMT_EXECUTE
response.
In case COM_STMT_PREPARE
returns an error, COM_STMT_EXECUTE
returns an error that statement ID -1
is unknown. This permits to avoid much of the network latency.
0
no cursor
1
read only
2
cursor for update
4
scrollable cursor
If the flags of the COM_STMT_EXECUTE
request a cursor to be opened, the returned result only contains the column definitions and the EOF
that terminates it, and the result set rows are fetched using separate COM_STMT_FETCH
commands.
Whether a cursor is actually opened is indicated by the SERVER_STATUS_CURSOR_EXISTS
bit in the first EOF packet in the response to the COM_STMT_EXECUTE
. If it is not set in, no cursor is opened and a normal result set is returned.
Parameter type flag byte:
128
unsigned
The NULL-Bitmap
indicates if parameters are null (one bit per parameter). If the parameter is NULL
, the bit is set in the bitmap and the parameter value is not sent.
The size in bytes of the NULL-bitmap
can be calculated with: (parameter number + 7) / 8
The encoding of the COM_STMT_EXECUTE
parameters are the same as the encoding of the binary result sets.
The server can answer with 3 different responses:
0xff
: ERR_Packet if any errors occur.
0x00
: OK_packet when query execution works without result set.
One (or more) result set, when query execution return rows (in case of SELECT
query, for example).
This page is licensed: CC BY-SA / Gnu FDL