Oracle11g 在from子句用例中,当语句

Oracle11g 在from子句用例中,当语句,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我正在尝试执行下一个查询: select * from (case when :p1 = '1' then t1 when :p1=2 then t2); 但它不起作用。我假设在from子句中不允许使用语句?有没有其他办法解决这个问题。 谢谢不,你不能那样做。解析查询时,必须固定对象和标识符,因此不能绑定它们 可以使用union检查每个分支中的变量: select * from t1 where :p1 = 1 union all select * from t2 where :p1 = 2

我正在尝试执行下一个查询:

select * from (case when :p1 = '1' then t1 when :p1=2 then t2);
但它不起作用。我假设在from子句中不允许使用语句?有没有其他办法解决这个问题。
谢谢不,你不能那样做。解析查询时,必须固定对象和标识符,因此不能绑定它们

可以使用union检查每个分支中的变量:

select * from t1
where :p1 = 1
union all 
select * from t2
where :p1 = 2;

假设表的结构相同。

不,不能这样做。解析查询时,必须固定对象和标识符,因此不能绑定它们

可以使用union检查每个分支中的变量:

select * from t1
where :p1 = 1
union all 
select * from t2
where :p1 = 2;

假设表的结构相同。

是的,表的结构相同。谢谢:)是的,桌子的结构是一样的。谢谢:)假设您尝试使用的表名应该是有条件的,对吗?Well PL/SQL是一个选项,或者您也可以创建一个函数。@user75ponic True,tablename是可选的。当参数等于1时,从t1收集数据;当参数等于2时,从t2收集数据。可以帮助我吗?使用PL/SQL块或创建函数来验证参数为1或2。假设您尝试使用的表名应该是有条件的,对吗?Well PL/SQL是一个选项,或者您也可以创建一个函数。@user75ponic True,tablename是可选的。当参数等于1时,从t1收集数据;当参数等于2时,从t2收集数据。可以帮我吗?使用PL/SQL块或创建函数来验证参数为1或2。