选择:LOV报告/使用LOV作为table_name绑定变量

时间:2016-02-11 13:56:56

标签: oracle-apex

我正在尝试创建一个包含值列表(chrome.downloads.download)的页面和一个根据此列表中的表名显示表内容的区域 e.g。

P2_LIST

但是我无法保存它:

select * from :P2_LIST

ORA-06550: line 1, column 21: ORA-00903: invalid table name 是一个LOV,其列表仅包含有效的表名。

有办法做到这一点吗?

当我从双重中选择P2_LIST时,我可以看到它保持正确的P2_LIST,如果我对表名进行硬编码,那么它也会返回。

我的想法是,只需在共享组件中添加一个条目,就可以向此页面添加更多表格。

如果可以解决这个问题我的下一部分是我也想为此使用连接值:

e.g。如果我有两张桌子:

  • thisistable_1 - 提交此专有
  • thisisnottable_1 - 提交thisisnottable

然后我想要使用以下内容:

TABLE_NAME

这样我可以在其他地方使用相同的LOV。

我正在运行:Application Express 5.0.3.00.03

2 个答案:

答案 0 :(得分:1)

是的,使用动态SQL查询。

而不是select * from :P2_LIST定义报告,如下所示:

declare
   q long;
begin
   q := 'select * from ' || :P2_LIST || ';';
   return q;
end;

您还需要:

  • 检查"使用通用列名称(仅在运行时解析查询)"在区域来源下设置
  • 确保源类型为" SQL查询(PL / SQL函数体返回SQL查询)"
  • 将标题类型设置为"列名称(InitCap)"

(PL / SQL中的NB long是一个定义为varchar2(32760)的子类型,我只是用它来保存输入!)

这是一个快速演示:apex.oracle.com/pls/apex/f?p=22644:10

答案 1 :(得分:0)

我可以在这里建议只跟随。为每个表创建一个区域,然后在Conditions选项卡上的区域属性中选择

  • Condition Type - Value of Item / Column in Expression 1 = Expression 2
  • Expression 1 - P2_LIST(没有冒号)
  • Expression 2 - 此区域中的表名称

提交后,您的页面将显示所选表格的查询结果。

相关问题