【发布时间】:2015-10-06 21:30:13
【问题描述】:
我有一个带有输入变量的 plsql 过程。这个变量 (my_plsql_var) 我需要决定我的 select 语句的 where 子句。如果我的变量是 A,那么我需要查询特定的 where 子句,如果是 B,它使用特定的 where 子句,C 也是如此。我尝试了一些查询,但它们不起作用。我得到的最接近的是这个,但似乎存在语法错误,甚至不确定查询是否会产生我需要的内容。
SELECT ID,
CASE(CAST WHEN my_col1 in ('A') and my_col2 = 'A' then 'A GROUP'
WHEN my_col1 in ('B') and my_col2 = 'B' then 'B GROUP'
WHEN my_col1 in ('C') and my_col2 = 'C' then 'C GROUP'
else null
end as varachar2)) as my_awesome_col
FROM
my_table
WHERE
id= 100 and
name = 'Smith' and
CASE (WHEN my_plsql_var = 'A' then my_col1 in ('A') and my_col2 = 'A'
WHEN my_plsql_var = 'B' then my_col1 in ('B') and my_col2 = 'B' and my_special_col = 'B'
WHEN my_plsql_var = 'C' then my_col1 in ('C') and my_col2 = 'C'
end as varachar2)
【问题讨论】: