通过练习,我在EXCEPTION块中检查打开的游标。
DECLARE
CURSOR curUSERS IS
SELECT USERNAME FROM
USERS;
BEGIN
OPEN curUSERS;
--statements truncated
CLOSE curUSERS;
EXCEPTION WHEN OTHERS THEN
IF curUSERS%ISOPEN THEN
CLOSE curUSERS;
END IF;
END;
/
我在LOB(BLOB,CLOB和BFILE)上尝试过它但是当我抛出NO_DATA_FOUND异常时,它也抛出了一个无效的LOB定位器异常。
DECLARE
objBFILE BFILE NOT NULL DEFAULT BFILENAME('DIR_USERS', 'user.jpg');
BEGIN
DBMS_LOB.OPEN(objBFILE);
DBMS_LOB.CLOSE(objBFILE);
RAISE NO_DATA_FOUND;
EXCEPTION WHEN OTHERS THEN
IF DBMS_LOB.ISOPEN(objBFILE)=1 THEN
DBMS_LOB.CLOSE(objBFILE);
END IF;
END;
/
有没有一种好方法可以检查游标等已打开的LOB? 如果发生异常,我想关闭打开的LOB。
答案 0 :(得分:0)
我已经找到了答案here。如果objBFILE不为null,则包括。它奏效了!
IF objBFILE IS NOT NULL
AND DBMS_LOB.ISOPEN(objBFILE)=1 THEN
DBMS_LOB.CLOSE(objBFILE);
END IF;