如何创建APEX_COLLECTION?

时间:2018-10-18 11:20:53

标签: oracle-sqldeveloper oracle-apex oracle12c

我想在Oracle SQL Developer中为我的apex Web应用程序创建apex_collection。 这是我的代码:

 apex_collections.create_or_truncate_collection('TEST');

运行该语句后,我得到以下信息:

enter image description here

如果我输入选择语句:

SELECT *
  FROM apex_collections
 WHERE collection_name = 'TEST';

然后,我得到了:

enter image description here

在我看来,尽管没有错误代码,但尚未创建任何集合。我究竟做错了什么?为什么未创建收藏集?我也尝试在Oracle APEX的SQL Workshop中运行该语句,但是该命令在该位置未知。我正在使用Oracle 12c版本。

1 个答案:

答案 0 :(得分:4)

您将需要一个有效的APEX会话来创建集合。如果您使用的是APEX 18.1或更高版本,请使用过程apex_session.create_session(请参阅answer)来创建一个。确保app_id对分配了您的架构的工作空间有效。

对于18.1之前的版本,OraOpenSource documentation的操作步骤与之相同:oos_util_apex.create_session(请参阅oos-utils)。您将需要安装oos-utils,或者至少在您的模式中编译此软件包。或者,复制此过程中包含的活动。

更新:另外,我刚刚注意到Jeff Smith的评论。您需要将成员添加到集合中,以获得有意义的结果。

begin
  apex_session.create_session(
    p_app_id => 100
    , p_page_id => 1
    , p_username => 'somebody'
  );
end;
/

select * from apex_collections; -- shows nothing

begin
  apex_collection.create_or_truncate_collection(
    p_collection_name => 'test'
  );

  apex_collection.add_member(
    p_collection_name => 'test'
    , p_c001 => 'test row'
  );
end;
/

select * from apex_collections; -- shows one record

此外,如果您正在使用SQLDEV对APEX会话中的集合进行故障排除,那么您将根据所运行的APEX的版本使用apex_session.attachoos_util_apex.join_session过程。使用分配给浏览器会话的APEX会话ID。 HTH。