我写了一个存储过程,大概如下:
CREATE OR REPLACE PROCEDURE BT0410(IN_NUM_SYORI_UKETUKE_NO IN NUMBER, RETURN_CODE OUT CHAR) IS
         
         --变量声明省略。         CURSOR CUR1 IS
SELECT
                           A.PC_ID -- A.PC_ID FROM TH0410 A
WHERE 0 = 0;         PROCEDURE PROCE1(CUR1_REC CUR1%ROWTYPE) IS
BEGIN
                   NULL;--操作CUR1_REC更新DWHT0410表,这里省略
         END PROCE1;         PROCEDURE PROCE2(CUR1_REC CUR1%ROWTYPE) IS
BEGIN
                   NULL;--操作CUR1_REC插入DWHT0410表,这里省略
         END PROCE2;
BEGIN
/* 変数の初期化 */
RETURN_CODE := '00';

FOR CUR1_REC IN CUR1 LOOP
PROCE1(CUR1_REC);
IF SQL%ROWCOUNT = 0 THEN
PROCE2(CUR1_REC);
END IF;
END LOOP;
        /* コミット */
        COMMIT;
EXCEPTION
        这里EXCEPTION处理省略。
END;
/1:在很多书上看到说显式游标使用前要OPEN,用后要CLOSE,可是我并没有打开游标的语句“OPEN CUR1;”,PROCE1或者PROCE2照样可以运行成功操作DB,说明游标确实被OPEN,那么显式游标使用前是否必须要“OPEN CUR1;”这个语句?这里怎么解释?
2:这样运行结束后游标是什么状态?是否已经关闭?还需要“CLOSE CUR1;”这样的语句吗?
3:不使用“OPEN CUR1;”和“CLOSE CUR1;”与使用他们在性能上有什么区别?