在我的顶尖应用程序中,我有一个要存储为应用程序项的数组。当我尝试这样做时(APP_ITEM_ARRAY是一个“应用程序项”):
declare
TYPE array_t IS TABLE OF VARCHAR2(255);
lv_arr array_t;
begin
:APP_ITEM_ARRAY := lv_arr;
end;我得到一个错误(表达式的类型错误)。因此,现在我使用apex_collection进行测试,它在我的页面上似乎是可用的。但我有点不确定,这些是用户会话的一部分吗?
如何最好地在会话状态下存储(pl/sql)数组,以便Apex跨页面使用?
在我的用例中,数组实际上是一个组列表,登录的用户是in...so我还需要一种简单的方法来确定用户是否在组中,以及某种“存在”或“成员”,然后在我的页面上,我将使用that...show隐藏按钮,导航项目等。
发布于 2021-09-29 20:05:49
在顶端,页面项始终是一个隐藏在引擎盖下的字符串,因此不可能将复杂数据类型的值赋给它(这也解释了错误)。使用集合也是可能的,但对于这种功能来说那就太夸张了。要在单个页面项中存储多个值(例如,对于checkbox类型的项,您可以选择多个值,或者像本例中那样),可以使用冒号分隔的字符串。有一个pl/sql API APEX_STRING,它有一些函数和过程可以将apex_t_varchar2类型的对象(基本上是一个数组)转换为字符串,然后再转换回来。
示例:
DECLARE
l_groups apex_t_varchar2;
BEGIN
l_groups := apex_t_varchar2('user','administrator','manager');
:P1_PAGE_ITEM := apex_string.join(l_string1);
END;
/附注:我刚才解释的内容回答了您的问题,但是您为什么要将该信息存储在页面项目中?只需将其留在数据库中,当您需要知道用户是否在组中时,只需使用数据库函数。或者更好的是,使用authorization方案来根据用户所在的组来确定用户可以使用哪些功能-这就是创建这些功能的目的。
https://stackoverflow.com/questions/69378906
复制相似问题