首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle APEX阵列

Oracle APEX阵列
EN

Stack Overflow用户
提问于 2021-09-29 15:01:44
回答 1查看 155关注 0票数 0

在我的顶尖应用程序中,我有一个要存储为应用程序项的数组。当我尝试这样做时(APP_ITEM_ARRAY是一个“应用程序项”):

代码语言:javascript
复制
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隐藏按钮,导航项目等。

EN

回答 1

Stack Overflow用户

发布于 2021-09-29 20:05:49

在顶端,页面项始终是一个隐藏在引擎盖下的字符串,因此不可能将复杂数据类型的值赋给它(这也解释了错误)。使用集合也是可能的,但对于这种功能来说那就太夸张了。要在单个页面项中存储多个值(例如,对于checkbox类型的项,您可以选择多个值,或者像本例中那样),可以使用冒号分隔的字符串。有一个pl/sql API APEX_STRING,它有一些函数和过程可以将apex_t_varchar2类型的对象(基本上是一个数组)转换为字符串,然后再转换回来。

示例:

代码语言:javascript
复制
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方案来根据用户所在的组来确定用户可以使用哪些功能-这就是创建这些功能的目的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69378906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档