Uses of PER_STMT_EXEC memory duration

The PER_STMT_EXEC memory duration is useful for communications between UDRs, parallel execution, user-defined aggregates, and named memory, and for memory allocations within an end-of-statement callback (if you have information to pass to the callback).

Important: Any memory with a duration higher than PER_COMMAND can have multiple threads access it. Consider whether you need to handle concurrency issues for any PER_STMT_EXEC memory you allocate. For more information, see Handling concurrency issues.
Several DataBlade® API constructor functions allocate their DataBlade API data type structure with a PER_STMT_EXEC memory duration. The following table lists DataBlade API data type structures that have a memory duration of PER_STMT_EXEC.
Table 1. DataBlade API data type structures with a PER_STMT_EXEC memory duration
DataBlade API data type structure DataBlade API constructor function DataBlade API destructor function
Connection descriptor (MI_CONNECTION) mi_open() mi_close()
Save-set structure (MI_SAVE_SET) mi_save_set_create() mi_save_set_destroy()
Switching the current memory duration before one of the constructor functions in DataBlade API data type structures with a PER_STMT_EXEC memory duration does not change the PER_STMT_EXEC memory duration of the allocated DataBlade API structure. These data type structures are freed by their destructor function or when execution of the current SQL statement completes. To retain access to some of these DataBlade API data type structures after the statement completes, you must save them at the per-session level.
Tip: The DataBlade API supports the ability to save information at a per-session level. This ability, however, is an advanced feature of the DataBlade API. For more information, see Obtain a session-duration connection descriptor.