【发布时间】:2016-04-27 15:35:06
【问题描述】:
我有一个带有输入参数 p_card_type 的过程。根据输入参数,where 子句会发生变化。这是查询的样子。我有 4 个不同的选项,它们都出错了。
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 语句被忽略
非常感谢您对此提供的任何帮助。非常感谢。
【问题讨论】:
标签: oracle plsql where-clause case-when