【发布时间】:2021-04-11 19:22:04
【问题描述】:
我有以下疑问:
SELECT * FROM My_table
WHERE type_id IN
CASE WHEN :P1_type IS NULL THEN (SELECT id FROM type)
ELSE (:P1_type)
END
当我尝试运行它时,我得到了这个错误:
ORA-01427: Subquery returns more than one row
我认为我的查询不正确所以我尝试了这个
SELECT * FROM My_table
WHERE type_id IN (SELECT id FROM type)
这一次它运行得很好,这意味着(在我看来)case 语句不能正常处理返回多于一行的查询。那么有没有解决这个问题的方法,或者我必须找到 CASE 语句以外的东西才能使用。 我也想使用 PL/SQL 但我不能,因为此查询将在 APEX 应用程序中使用,并且在这种情况下 PL\SQL 不是一个选项。
【问题讨论】: