我有一個具有輸入參數p_card_type的過程。基於輸入參數,where子句發生變化。這是查詢的樣子。我有4個不同的選項,他們都出錯了。在Oracle的Where子句中使用案例
SELECT * FROM table WHERE CARD_TYPE in (p_card_type)
- 這是我嘗試過的4個選項。
SELECT * FROM table WHERE
- Case p_card_type when 'EGC/VEGC' THEN CARD_TYPE in ('EGC', 'VEGC') else CARD_TYPE in (p_card_type) End
- Case WHEN p_card_type = 'EGC/VEGC' THEN CARD_TYPE in ('EGC', 'VEGC') else CARD_TYPE in (p_card_type) End
- CARD_TYPE in Case WHEN p_card_type = 'EGC/VEGC' THEN ('EGC', 'VEGC') else (p_card_type) End
- CARD_TYPE in Case p_card_type WHEN 'EGC/VEGC' THEN ('EGC', 'VEGC') else (p_card_type) End
我得到的錯誤是 ORA-06550:PL/SQL:ORA-00905:缺少關鍵字 ORA-06550:PL/SQL:SQL語句忽略
會很感激的任何形式的幫助在這。非常感謝。
非常感謝,這兩個解決方案工作。將看最適合的執行時間。 – TheRaoMeister
聯合看起來沒有必要 - 爲什麼在一次掃描可以完成兩次掃描基表?只需將where子句與OR運算符結合起來。 – mathguy
@mathguy:如果'p_card_type'(輸入參數)的條件無效,Oracle的優化器非常智能,因此不掃描表。 – Quassnoi