Exception When No_data_found then Dbms_output.put_line(‘不存在’);
参考代码(请适当补充异常处理的知识)DECLARE VARSEC_RIGHT_SID NVARCHAR2(100); BEGIN SELECT SEC_RIGHT_SID INTO VARSEC_RIGHT_SID FROM USER_RIGHT IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('存在:' || VARSEC_RIGHT_SID); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('没有数据'); END;
嗯!謝謝,如果是這種結構呢?DECLARE --變量聲明 VARSEC_RIGHT_SID NVARCHAR2 (100); QVARSEC_RIGHT_SID NVARCHAR2 (100); CURSOR CUR_MES_GRP IS SELECT SEC_RIGHT_SID FROM MES_SEC_RIGHT ORDER BY SEC_RIGHT_SID DESC; --權限維護表 BEGIN OPEN CUR_MES_GRP; FETCH CUR_MES_GRP INTO VARSEC_RIGHT_SID; WHILE CUR_MES_GRP%FOUND LOOP SELECT SEC_RIGHT_SID INTO QVARSEC_RIGHT_SID FROM MES_SEC_GRP WHERE SEC_RIGHT_SID=VARSEC_RIGHT_SID 里面查詢遊標沒讀取數據也會報錯。用上面方法不能解決問題。
BEGIN
SELECT SEC_RIGHT_SID INTO VARSEC_RIGHT_SID FROM USER_RIGHT
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('存在:' || VARSEC_RIGHT_SID);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('没有数据');
END;
--變量聲明
VARSEC_RIGHT_SID NVARCHAR2 (100);
QVARSEC_RIGHT_SID NVARCHAR2 (100);
CURSOR CUR_MES_GRP IS
SELECT SEC_RIGHT_SID FROM MES_SEC_RIGHT ORDER BY SEC_RIGHT_SID DESC; --權限維護表
BEGIN
OPEN CUR_MES_GRP;
FETCH CUR_MES_GRP INTO VARSEC_RIGHT_SID;
WHILE CUR_MES_GRP%FOUND
LOOP
SELECT SEC_RIGHT_SID INTO QVARSEC_RIGHT_SID FROM MES_SEC_GRP WHERE SEC_RIGHT_SID=VARSEC_RIGHT_SID
里面查詢遊標沒讀取數據也會報錯。用上面方法不能解決問題。
循环至少要包在FETCH语句的外面啊。一般都使用光标FOR循环了。
参考代码如下: