我在WHERE
第一个DECODE
像这样使用解码:在where子句
Where id = decode('&flag','Yes',(Select id from tab where id > 10),0)
此代码的工作,如果子查询返回一个职位。如果我返回几个,我得到一个错误,如ORA-01427,“单行子查询返回多个行”
我试图将'='更改为'in',但我仍然得到相同错误!
任何想法?
扩展的例子:
WHERE Dop_id = (DECODE ('&prep_flag', 'Yes',
(SELECT Dop_id FROM
(SELECT DOP_id, name FROM TABLE)
WHERE name IS NOT NULL)
, Dop_id))
如提及这个作品,如果在行选择statmen的回报,而不是几个。
这是不可能的'='或'用,因为IN'' DECODE()'不能返回一个集合作为单个结果。你必须改变你的设计,或者使用'SELECT MAX(id)...'将你的设置限制为单个结果。 – wweicker