![]() |
MySQL 8.0.43
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.