首页 > 解决方案 > 比较 Oracle PL SQL 中 2 个游标的输出

问题描述

我有 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;

我不确定,如何比较这些字段。这些游标有复杂的查询,为了便于理解,我进行了简化。

提前感谢您的时间和帮助。

标签: oracleplsqloracle11goracle-sqldeveloper

解决方案


您可以使用 MINUS 运算符

SELECT STUDENT_ID FROM REGISTER WHERE CLASSROOM = 1
minus
SELECT STUDENT_ID FROM SCHOOL WHERE CLASSROOM IN (1,2,3,4,5);

或检查 student_id 是否像这样不在学校

SELECT STUDENT_ID FROM REGISTER WHERE CLASSROOM = 1
and STUDENT_ID not in (SELECT STUDENT_ID FROM SCHOOL WHERE CLASSROOM IN (1,2,3,4,5)) ;

推荐阅读