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.
p_name => 'PX_MY_ITEM'
, p_value => 'wibble');