View 在视图中有条件地执行SQL查询

View 在视图中有条件地执行SQL查询,view,db2,db2-400,rpgle,View,Db2,Db2 400,Rpgle,我们有两个巨大的SQL语句(在嵌入式sqlrpgle程序中执行),我们为它们创建了单独的视图——每个SQL对应一个视图 SQL语句在程序中有条件地执行。也就是说,程序中有一些条件逻辑(用RPG编写),这些逻辑将决定我们是执行一个查询还是执行另一个查询 现在我们要做的是创建一个与RPG程序等效的单一视图 这就是在视图代码中包含条件逻辑 下面是最简单的伪代码,我可以想象我要实现的目标 if (condition 1 is true) Select * from table1; else

我们有两个巨大的SQL语句(在嵌入式sqlrpgle程序中执行),我们为它们创建了单独的视图——每个SQL对应一个视图

SQL语句在程序中有条件地执行。也就是说,程序中有一些条件逻辑(用RPG编写),这些逻辑将决定我们是执行一个查询还是执行另一个查询

现在我们要做的是创建一个与RPG程序等效的单一视图

这就是在视图代码中包含条件逻辑

下面是最简单的伪代码,我可以想象我要实现的目标

if (condition 1 is true)
   Select * from table1;
else
   Select * from table2;
if条件逻辑需要成为我试图创建的视图的一部分。在DB2中这样做可能吗

请注意,上面使用的条件1是一个非常高级的表示。逻辑实际上由几个程序调用等组成


任何建议都将不胜感激。

如果这两部分返回相同数量的列,并且它们是兼容的类型,那么您可以这样对视图进行编码

CREATE VIEW V AS
WITH C(C) AS ( VALUES (condition) )
SELECT * FROM table1, C WHERE C = 1 
UNION ALL
SELECT * FROM table2, C WHERE C = 0

<>或者也许考虑使用< /p>为什么?你希望通过整合这段经文和你现在拥有的两种不同的观点来获得什么?重要的是要注意,无论哪种方式都必须兼容。有关基于视图的表函数的一些示例,请查看QSYS2中的
message\u queue\u info
view&UTDF。