declare
  cursor v_cursor is select name from xiaoshou where num=7;
  v_name xiaoshou.name%type;
begin
  open v_cursor;
  loop
    fetch v_cursor into v_name;
    dbms_output.put_line(v_name);
    exit when v_cursor%notfound;
  end loop;
   close v_cursor;
end; 
我想在没找到任何数据时候,退出并输出字符串“没有记录”,如何解决,请各位大侠指教!

解决方案 »

  1.   

    DECLARE
      CURSOR V_CURSOR IS
        SELECT NAME FROM XIAOSHOU WHERE NUM = 7;
      V_NAME XIAOSHOU.NAME%TYPE;
      L_N    INT := 0;
    BEGIN
      OPEN V_CURSOR;
      LOOP
        FETCH V_CURSOR
          INTO V_NAME;
        EXIT WHEN V_CURSOR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_NAME);
        L_N := L_N + 1;
      END LOOP;
      IF L_N = 0 THEN
        DBMS_OUTPUT.PUT_LINE(没有记录);
      END IF;
      CLOSE V_CURSOR;
    END;
    /
      

  2.   

    DECLARE
      CURSOR V_CURSOR IS
        SELECT NAME FROM XIAOSHOU WHERE NUM = 7;
      V_NAME XIAOSHOU.NAME%TYPE;
      L_N    INT := 0;
    BEGIN
      OPEN V_CURSOR;
      LOOP
        FETCH V_CURSOR
          INTO V_NAME;
        EXIT WHEN V_CURSOR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_NAME);
        L_N := L_N + 1;
      END LOOP;
      IF L_N = 0 THEN
        DBMS_OUTPUT.PUT_LINE('没有记录');
      END IF;
      CLOSE V_CURSOR;
    END;
    /
      

  3.   

    --试试这个
    DECLARE
      CURSOR V_CURSOR IS
        SELECT NAME FROM XIAOSHOU WHERE NUM = 7;
      V_NAME XIAOSHOU.NAME%TYPE;
    BEGIN
      OPEN V_CURSOR;
      LOOP
        FETCH V_CURSOR
          INTO V_NAME;
        IF V_CURSOR%NOTFOUND AND V_CURSOR%ROWCOUNT=0    --判断没有数据
           THEN DBMS_OUTPUT.PUT_LINE('没有记录');
        END IF;
        EXIT WHEN V_CURSOR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_NAME);
      END LOOP;
      CLOSE V_CURSOR;
    END;
    /
      

  4.   

    DECLARE
      CURSOR V_CURSOR IS
        SELECT NAME FROM XIAOSHOU WHERE NUM = 7;
      V_NAME XIAOSHOU.NAME%TYPE;
    BEGIN
      OPEN V_CURSOR;
      LOOP
        FETCH V_CURSOR
          INTO V_NAME;
        EXIT WHEN V_CURSOR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_NAME);
      END LOOP;
      IF V_CURSOR%rowcount = 0 THEN
        DBMS_OUTPUT.PUT_LINE(没有记录);
      END IF;
      CLOSE V_CURSOR;
    END;
      

  5.   

    最简单的方法判断
    CURSOR%ROWCOUNT = 0