我想在Oracle SQL Developer中为我的apex Web应用程序创建apex_collection。 这是我的代码:
apex_collections.create_or_truncate_collection('TEST');
运行该语句后,我得到以下信息:
如果我输入选择语句:
SELECT *
FROM apex_collections
WHERE collection_name = 'TEST';
然后,我得到了:
在我看来,尽管没有错误代码,但尚未创建任何集合。我究竟做错了什么?为什么未创建收藏集?我也尝试在Oracle APEX的SQL Workshop中运行该语句,但是该命令在该位置未知。我正在使用Oracle 12c版本。
答案 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.attach
或oos_util_apex.join_session
过程。使用分配给浏览器会话的APEX会话ID。
HTH。