【发布时间】:2022-01-22 18:49:24
【问题描述】:
我想根据变量的值执行不同的查询。我有一个包含很多列的表,我想根据变量选择和重命名不同数量的字段。
类似
var varbl VARCHAR2
exec :varbl := 'XX'
if :varbl = 'XX'
(select a, b, c from table1 where cond)
elsif :varbl = 'XXXX'
(select d, e, f, g from table1 where cond)
end
我试图达到这个低谷
decode( :varbl, 'XX',
(QUERY 1),
(decode( :varbl, 'XXX',
(QUERY 2), default)),
default)
但它不起作用,因为decode 应该在 SELECT 子句中使用,并且我丢失了列的名称。此外,如果我在内部查询中选择多于一列,则会收到“值过多”错误。
我正在研究 Oracle SQL。
This 答案对我不起作用,因为在 3 种不同的情况下,我至少有 30 个字段需要区分。我只想要一些允许我执行不同查询的解决方案。
【问题讨论】:
-
你到底想在哪里做呢?您发布的代码建议使用 SQL*Plus。 “IF”在那里不起作用(但在 PL/SQL 中)。如果你能描述得更好一点,也许有人可以提供帮助。