Within ApEx PL/SQL Processes, regions and items you can use the bind variable syntax (:PX_MY_ITEM
) both to read and set the value of that item held in session state. Like so:
:PX_MY_ITEM := 'wibble';
l_my_local_variable := :PX_MY_ITEM;
However, in stored PL/SQL packages, procedures and functions you cannot use the bind variable syntax. Rather, you must use the v('PX_MY_ITEM')
syntax. But this is read only.
So how do you set the value held in session state for a given page item from within a stored package, procedure or function?
The answer lies in the set_session_state
procedure found in the APEX_UTIL
package. E.g.
APEX_UTIL.set_session_state(
p_name => 'PX_MY_ITEM'
, p_value => 'wibble');