2017-05-04 86 views
0

我試圖做一個查詢:是在FROM子句使用情況下,它可能在聲明

select * from (case when :p1 = '1' then t1 when :p1=2 then t2); 

但它不工作。我假設在from子句中不允許聲明的情況?有沒有其他任何方法可以解決這個問題。 謝謝

+0

假設您正在嘗試使用應該是有條件的表名,是否正確?那麼PL/SQL是一個選項,或者你也可以創建一個函數。 – user75ponic

+0

@ user75ponic真,表名是可選的。當參數等於1時,從t1收集數據,當參數等於2時,則從t2收集數據。可以幫助我嗎? – Savke

+0

使用PL/SQL塊或創建函數來驗證參數是1或2. – user75ponic

回答

2

不,你不能那樣做。查詢被解析時,對象和標識符必須被修復,所以你不能綁定這些對象和標識符。

你可以使用一個聯盟與支票在每個分支變量:

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

假設表的結構是一樣的。

+0

是的,表的結構是相同的。謝謝 :) – Savke

相關問題