Oracle:IF...IN (SELECT ... FROM ...) 之子查询不被允许

IF (ACC IN (SELECT ACC FROM ... WHERE ...)) THEN

...

END IF;

报错:
PLS-00405:subquery not allowed in this context

想使用SELECT ACC FROM ... WHERE ...的返回值作为 IN 的参数是不被允许的吗?

那是否可以将 SELECT 语句的查询结果放入变量再作为 IN 的参数呢?

阅读 9.3k
1 个回答

我理解IN是sql语句的写法,不能放到PL/SQL的程序代码中
可以换另外一种写法:

SELECT count(*) 
INTO v_count
FROM (
    SELECT acc FROM ... WHERE ...)
)
WHERE acc = v_acc;

IF v_count > 0 THEN
  ...
END IF;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进