Execute
Client
Int32
—p_operation
-
Operation code
op_execute
—62
DDL and DML statements
op_execute2
—76
Executable 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 —
1
if there are parameters,0
if there are no parameters Buffer
— no name-
Parameter values
If
p_sqldata_messages
is0
, 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
—0x01
request scrollable cursor
Additions in protocol 19
UInt32
--p_sqldata_inline_blob_size
-
Maximum inline blob size
A value of
0
disables 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_blob
somewhere
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]