我有一个Map表 VW_MAPPING
. VW_MAPPING
有如下列和数据:
Metric Table
A VW_A
B VW_B
C VW_C
D VW_D
E VW_E
现在我要执行条件选择。就像
when Metric = A then SELECT * FROM VW_A;
when Metric = B then SELECT * FROM VW_B;
i) 所有表的列数都相同。
ii)基础表没有公制列
基本上,我将从输入表单中获取度量值。所以我想显示相应的数据。如果 A
然后我将显示 VW_A
. 对于哪个响应,我们必须使用哪个表 VW_MAPPING
.
我想要的是这样的:
SELECT * FROM variable_table_name;
variable_table_name = SELECT TABLE FROM VW_MAPPING WHERE METRIC = form input
这是伪代码
我不能使用pl/sql。
3条答案
按热度按时间0vvn1miw1#
虽然可能不是最有效的方法,但我倾向于:
也就是说,Map表实际上并不有用。您应该有一个包含所有度量的表和一个标识度量的附加列,而不是一个Map表。也可以使用视图而不是表来完成此操作。
ars1skjm2#
这是你想要的吗?
xnifntxz3#
有几种方法可以做到这一点。
到目前为止,最好的方法是在用户界面层处理这个问题——输入表单后面的代码应该决定执行哪个查询。这有很多好处:代码更简单,可能更快,而且您的数据库执行“存储和修改数据”任务,而不是“对用户选择作出React”任务。
如果你真的做不到,你可以用工会
这将决策嵌入到查询中,而不是查看Map表。
如果您真的想使用Map表,则需要使用动态sql,但您说不能使用pl/sql。
我不知道还有其他选择。