COM_STMT_EXECUTE
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.
Direction
Client to server.
Fields
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
Statement ID is the identifier of the prepared statement (from COM_STMT_PREPARE answer).
Specific "-1" statement id value
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.
Flag
0
no cursor
1
read only
2
cursor for update
4
scrollable cursor
Cursors
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 Flag
Parameter type flag byte:
128
unsigned
NULL-Bitmap
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
Binary Parameter Encoding
The encoding of the COM_STMT_EXECUTE
parameters are the same as the encoding of the binary result sets.
Response
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
Last updated
Was this helpful?