【发布时间】:2020-02-28 11:13:53
【问题描述】:
我有 2 个游标,我想将一个作为一个游标的输出返回的字段与另一个作为另一个游标的输出返回的字段进行比较。
下面是我的代码:
CREATE OR REPLACE PROCEDURE CHECK_STUDENT AS
CURSOR SCHOOL_REG IS
SELECT STUDENT_ID FROM SCHOOL WHERE CLASSROOM IN (1,2,3,4,5);
CURSOR CLASS_REG IS
SELECT STUDENT_ID, STUDENT_NAME FROM REGISTER WHERE CLASSROOM = 1;
FOR X IN CLASS_REG LOOP
IF X.STUDENT_ID <> SCHOOL_REG.STUDENT_ID THEN
DBMS_OUTPUT.PUT_LINE(X.STUDENT_ID || ' IS NOT REGISTERED IN SCHOOL');
END IF;
END LOOP;
CHECK_STUDENT END;
我不确定,如何比较这些字段。这些游标有复杂的查询,为了便于理解,我进行了简化。
提前感谢您的时间和帮助。
【问题讨论】:
-
是否需要使用显式游标,您是否对结果进行了其他操作?您可能已经简化到看起来您使用了错误的方法;或者实际上可能是这种情况,您根本不需要这些游标/循环(甚至 PL/SQL)。
-
您的代码也缺少
BEGIN并且最后一行是错误的;当你尝试这样做时,你没有包括你得到的错误。样本数据和预期结果也会有所帮助。
标签: oracle plsql oracle11g oracle-sqldeveloper