+ -
当前位置:首页 → 问答吧 → 一个关于游标的问题

一个关于游标的问题

时间:2011-09-20

来源:互联网

先上代码
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吗???怎么不进入这个呢

作者: ansn001   发布时间: 2011-09-20

要先FETCH 再判断!
SQL code

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;

作者: tangren   发布时间: 2011-09-20

热门下载

更多