我在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