首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从中选择:LOV /使用LOV作为table_name绑定变量

从中选择:LOV /使用LOV作为table_name绑定变量
EN

Stack Overflow用户
提问于 2016-02-11 13:56:55
回答 2查看 1.5K关注 0票数 2

我试图创建一个具有值列表(P2_LIST)的页面,并创建一个区域,该区域根据列表中的表名显示表的内容。

代码语言:javascript
复制
select * from :P2_LIST

然而,我无法保存它,因为我得到:

代码语言:javascript
复制
ORA-06550: line 1, column 21: ORA-00903: invalid table name

P2_LIST是一个LOV,其列表仅包含有效的表名。

有办法这样做吗?

当我从dual中选择P2_LIST时,我可以看到它持有正确的TABLE_NAME,如果我硬编码表名,那么它也会返回。

这样我就可以向这个页面添加更多的表,只需在共享组件中添加一个条目即可。

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

如果我有两张桌子:

  • thisistable_1 -提交耐硫性
  • thisisnottable_1 -提交硫磺化

然后我想用一些类似于:

代码语言:javascript
复制
select * from :P2_LIST||_1

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

我正在运行: Application 5.0.3.00.03

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 16:31:12

是的,使用动态SQL查询。

而不是select * from :P2_LIST,而是像这样定义报告:

代码语言:javascript
复制
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/峰/f?P=22644:10

票数 1
EN

Stack Overflow用户

发布于 2016-02-11 15:33:29

我只能在这里建议如下。为每个表创建一个区域,然后在Conditions选项卡的“区域属性”中选择

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

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

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

https://stackoverflow.com/questions/35341305

复制
相关文章

相似问题

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