先上代码
DECLARE
  id integer;
  name varchar2(50);
  --定义游标
  CURSOR cursor_name is
      select id,name 
      from TEM_USER
      where id=11;
BEGIN
  --打开游标
  OPEN cursor_name;
  --判断游标是否返回记录
  IF cursor_name%NOTFOUND THEN
    DBMS_OUTPUT.put_line('没有找到相应的记录');
  ELSE
      --从游标中读取记录
      FETCH cursor_name into id,name;
      DBMS_OUTPUT.put_line(id||' '||name);
 END IF;
 --关闭游标
  CLOSE cursor_name;
  END;如果有数据的时候会正确输出。如果没有查到数据的时候为什么。不输出'没有找到相应的记录'
迷糊了一下午,求大虾指点。。
没有记录%notfound 不应该为true吗???怎么不进入这个呢

解决方案 »

  1.   

    要先FETCH 再判断!DECLARE
      id   INTEGER;
      NAME VARCHAR2(50);
      --定义游标
      CURSOR cursor_name IS
        SELECT id, NAME FROM TEM_USER WHERE id = 11;
    BEGIN
      --打开游标
      OPEN cursor_name;
      FETCH cursor_name
        INTO id, NAME;
      --判断游标是否返回记录
      IF cursor_name%NOTFOUND THEN
        DBMS_OUTPUT.put_line('没有找到相应的记录');
      ELSE
        --从游标中读取记录
        DBMS_OUTPUT.put_line(id || ' ' || NAME);
      END IF;
      --关闭游标
      CLOSE cursor_name;
    END;