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

问题描述

我们有几个巨大的 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

或者考虑使用 table function

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...