如何从IF语句中返回数据?我有一个IF语句,它意味着返回一个不同于该语句结果的结果。
IF :Value = 1 THEN
SELECT Name FROM TABLE_A
ELSEIF :Value = 2 THEN
SELECT Name FROM TABLE_B
ELSEIF :Value = 3 THEN
SELECT Name FROM TABLE_C
但这不起作用。它期望在这些选择中使用INTO语句。我怀疑这是因为Oracle无法退出一个块?
有没有更快的方法来返回那些select语句而不创建表变量来存储数据或搞乱函数?
答案 0 :(得分:0)
您可以通过纯SQL执行此操作:
SELECT
':Value' user_input,
CASE
WHEN ':Value' IN('a1','a2','a3')
THEN (select name from table_a)
WHEN ':Value' = 'i'
THEN (select name from table_b)
END AS output
FROM
dual
答案 1 :(得分:0)
如果您的案例中需要多个结果,那么您可以选择智能UNION
:
SELECT t1_Col_1, t1_Col_2,'&VALUE' from TABLE_1
WHERE '&VALUE' = '1'
UNION ALL
SELECT t2_Col_1, t2_Col_2,'&VALUE' from TABLE_2
WHERE '&VALUE' = '2'
在此解决方案中,tx_Coln
的类型和数量必须相同。