All pages
Powered by GitBook
1 of 1

Loading...

COM_STMT_EXECUTE

This command executes a prepared statement using parameter values provided in the binary protocol format.

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

  • 0x17 : COM_STMT_EXECUTE header.

  • .

  • flags.

Statement ID

Statement ID is the identifier of the prepared statement (from ).

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

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:

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 .

Response

The server can answer with 3 different responses:

  • 0xff: if any errors occur.

  • 0x00: when query execution works without result set.

  • One (or more) , when query execution return rows (in case of SELECT query, for example).

This page is licensed: CC BY-SA / Gnu FDL

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>: .

        • byte<1>: .

    • For each parameter (for instance, param_count times):

      • If parameter is not null:

        • byte .

  • 0

    no cursor

    1

    read only

    2

    cursor for update

    4

    scrollable cursor

    128

    unsigned

    int<1>
    int<4>
    statement ID
    int<1>
    COM_STMT_PREPARE answer
    binary result sets
    ERR_Packet
    OK_packet
    result set
    int<4>
    field type
    parameter flag
    binary parameter value