本帖最后由 softzhongshi 于 2011-04-07 17:29:50 编辑

解决方案 »

  1.   

    游标关闭了,当然会抛cursor is not open的异常啊,游标是打开的,就可以正常访问%notfound呀。
      

  2.   

    附加一句,sql作为隐式游标是指写select into 或是update,insert语句的这种,就是不用open cursor的写法。
      

  3.   


    DECLARE
      TYPE tmp IS TABLE OF hs_user.users%ROWTYPE;
      tmpdata tmp;
      v_cursor hstype.t_cursor;
    BEGIN
      OPEN v_cursor FOR SELECT * FROM hs_user.users WHERE ROWNUM<5;
      CLOSE v_cursor;
      IF v_cursor%NOTFOUND  
      THEN
      DBMS_OUTPUT.put_line('t_curosr not found');
      ELSE
      DBMS_OUTPUT.put_line('found');
      END IF;
      SELECT a.* BULK COLLECT INTO tmpdata FROM hs_user.users a WHERE ROWNUM<6;
      IF SQL%NOTFOUND  
      THEN
      DBMS_OUTPUT.put_line('abccccc');
      ELSE
      DBMS_OUTPUT.put_line('else');
      END IF;
      EXCEPTION
      WHEN OTHERS THEN
      DBMS_OUTPUT.put_line('exception');

    --CLOSE v_cursor; 应该放这里
    END;你还没用游标呢 你就给close了 能不异常么 应当放到最后close