Execute
Client
Int32—p_operation-
Operation code
op_execute—62DDL and DML statements
op_execute2—76Executable stored procedures with return values, or singleton
RETURNING(i.e. statements described asisc_info_sql_stmt_exec_procedure) Int32—p_sqldata_statement-
Statement handle
Int32—p_sqldata_transaction-
Transaction handle
Buffer—p_sqldata_blr-
Parameters in BLR format
If there are no parameters, send a zero-length buffer.
Int32—p_sqldata_message_number-
Unused, always use
0 Int32—p_sqldata_messages-
Number of messages —
1if there are parameters,0if there are no parameters Buffer— no name-
Parameter values
If
p_sqldata_messagesis0, this buffer must not be sent (not even as a zero-length buffer)TODO: Might not even be a buffer, verify.
If using op_execute2 — 76 (the statement is a stored procedure and there are output parameters):
Buffer—p_sqldata_out_blr-
Output parameters in BLR format
Int32—p_sqldata_out_message_number-
Output message number (0) ??
Additions in protocol 16
UInt32—p_sqldata_timeout-
Statement timeout value in milliseconds (
0— use connection-level statement timeout)
Additions in protocol 18
UInt32—p_sqldata_cursor_flags-
Cursor flags
CURSOR_TYPE_SCROLLABLE—0x01request scrollable cursor
Additions in protocol 19
UInt32--p_sqldata_inline_blob_size-
Maximum inline blob size
A value of
0disables inline blobs.The server may use a lower limit than requested.In the Firebird 5.0.3 and Firebird 6 implementation at the time of writing, the server has a maximum of 65535 bytes.TODO: Describe
op_inline_blobsomewhere
Server
For op_execute — 63:
For op_execute2 — 76:
Success response: [wireprotocol-responses-sql] followed by [wireprotocol-responses-generic]
Failure response: only [wireprotocol-responses-generic]