MySQL 8.0.39
Source Code Documentation
|
COM_STMT_EXECUTE asks the server to execute a prepared statement as identified by statement_id
.
It sends the values for the placeholders of the prepared statement (if it contained any) in Binary Protocol Value form. The type of each parameter is made up of two bytes:
The num_params
used for this packet refers to num_params
of the COM_STMT_PREPARE_OK of the corresponding prepared statement.
The server will use the first num_params (from prepare) parameter values to satisfy the positional anonymous question mark parameters in the statement executed regardless of whether they have names supplied or not. The rest num_remaining_attrs parameter values will just be stored into the THD and if they have a name they can later be accessed as query attributes. If any of the first num_params parameter values has a name supplied they could then be accessed as a query attribute too. If supplied, parameter_count will overwrite the num_params value by eventually adding a non-zero num_params_remaining value to the original num_params.
Type | Name | Description |
---|---|---|
int<1> | status | [0x17] COM_STMT_EXECUTE |
int<4> | statement_id | ID of the prepared statement to execute |
int<1> | flags | Flags. See enum_cursor_type |
int<4> | iteration_count | Number of times to execute the statement. Currently always 1. |
if (num_params > 0 || (CLIENT_QUERY_ATTRIBUTES && (flags & PARAMETER_COUNT_AVAILABLE)) { | ||
if CLIENT_QUERY_ATTRIBUTES is on { | ||
int<lenenc> | parameter_count | The number of parameter metadata and values supplied. Overrides the count coming from prepare (num_params) if present. |
} – if CLIENT_QUERY_ATTRIBUTES is on | ||
if (parameter_count > 0) { | ||
binary<var> | null_bitmap | NULL bitmap, length= (paramater_count + 7) / 8 |
int<1> | new_params_bind_flag | Flag if parameters must be re-bound |
if new_params_bind_flag, for each parameter { | ||
int<2> | parameter_type | Type of the parameter value. See enum_field_type |
if CLIENT_QUERY_ATTRIBUTES is on { | ||
string<lenenc> | parameter_name | Name of the parameter or empty if not present |
} – if CLIENT_QUERY_ATTRIBUTES is on | ||
} – if new_params_bind_flag is on | ||
binary<var> | parameter_values | value of each parameter |
} – if (parameter_count > 0) | ||
} – if (num_params > 0 || (CLIENT_QUERY_ATTRIBUTES && (flags & PARAMETER_COUNT_AVAILABLE)) |
null_bitmap
is like the NULL-bitmap for the Binary Protocol Resultset Row just that it has a bit_offset of 0.