【发布时间】:2021-05-06 20:01:17
【问题描述】:
我正在尝试修改从系统中删除用户的过程,添加一个位以生成他们是唯一管理员的任何区域的列表。我已经读过游标可以在找到 0 个结果时工作,所以我假设我的查询是问题所在。表 1 (A) 和 2 (B&C) 由表 A 的主键连接。子查询 B 是用户管理的所有区域的列表,子查询 C 是只有一个管理员的所有区域的列表。在我正在测试的特定实例中,子查询 B 和 C 之间没有匹配的 area_id。有没有办法可以修改此查询以使其正常工作?我尝试将光标的开头移到 if 语句后面,但仍然收到错误,所以我假设它是导致抛出异常的光标的声明。
CURSOR AA_CUR IS
SELECT AREA_NAME
FROM FILE_TRANSFER.AREA_LU A,
(SELECT AREA_ID
FROM FILE_TRANSFER.USER_AREA_ACCESS
WHERE AREA_ADMIN='Y'
AND USERNAME IN (SELECT USERNAME
FROM FILE_TRANSFER.USER_INFORMATION
WHERE USER_INFORMATION_ID = v_UIID)) B,
(SELECT AREA_ID, AREA_ADMIN, COUNT(*)
FROM FILE_TRANSFER.USER_AREA_ACCESS
WHERE AREA_ADMIN='Y'
HAVING COUNT(*) = 1
GROUP BY AREA_ID, AREA_ADMIN) C
WHERE A.AREA_ID = B.AREA_ID
AND B.AREA_ID = C.AREA_ID;
【问题讨论】:
标签: oracle plsql database-cursor