我试图创建一个具有值列表(P2_LIST)的页面,并创建一个区域,该区域根据列表中的表名显示表的内容。
select * from :P2_LIST然而,我无法保存它,因为我得到:
ORA-06550: line 1, column 21: ORA-00903: invalid table nameP2_LIST是一个LOV,其列表仅包含有效的表名。
有办法这样做吗?
当我从dual中选择P2_LIST时,我可以看到它持有正确的TABLE_NAME,如果我硬编码表名,那么它也会返回。
这样我就可以向这个页面添加更多的表,只需在共享组件中添加一个条目即可。
如果可以解决这个问题,我的下一个部分是,我也想为此使用一个级联值:
如果我有两张桌子:
然后我想用一些类似于:
select * from :P2_LIST||_1这样我就可以在其他地方使用同样的LOV了。
我正在运行: Application 5.0.3.00.03
发布于 2016-02-11 16:31:12
是的,使用动态SQL查询。
而不是select * from :P2_LIST,而是像这样定义报告:
declare
q long;
begin
q := 'select * from ' || :P2_LIST || ';';
return q;
end;你还需要:
( PL/SQL中的NB long是一个定义为varchar2(32760)的子类型,我只是用来保存输入!)
下面是一个简单的演示:Apex.oracle.com/pls/峰/f?P=22644:10
发布于 2016-02-11 15:33:29
我只能在这里建议如下。为每个表创建一个区域,然后在Conditions选项卡的“区域属性”中选择
Condition Type - Value of Item / Column in Expression 1 = Expression 2Expression 1 - P2_LIST (没有冒号)Expression 2 -此区域中表的名称提交后,页面将显示所选表的查询结果。
https://stackoverflow.com/questions/35341305
复制相似问题