+ -
当前位置:首页 → 问答吧 → oracle游标问题-求救大哥大姐们

oracle游标问题-求救大哥大姐们

时间:2011-12-12

来源:互联网

代码:
declare
  sp varchar2(10);
  cursor c_sp is
  select sp from t_sp s;
begin
  open c_sp;
  fetch c_sp
  into sp;
  while c_sp %found loop
  fetch c_sp
  into sp;
  dbms_output.put_line('我是游标:' || sp);
  end loop;
  close c_sp;
end;

游标建立过程没有报错 输出结果:
我是游标:
我是游标:
我是游标:
我是游标:
我是游标:
我是游标:
我是游标:
我是游标:
---上传图片要搞链接地址?原谅我没搞出来来。

表:t_sp是有数据的
为什么输出结果不是‘我是游标:(数数据集合行的值)’
求解?

作者: y112102   发布时间: 2011-12-12

你的SP字段是有值的么?
建议定义变量的时候,变量不要和字段名同名:
sp varchar2(10);

作者: yixilan   发布时间: 2011-12-12

while c_sp %found loop
  fetch c_sp
into sp; dbms_output.put_line('我是游标:' || sp);
  end loop;
****************************
while循环里不用再次获取游标。

作者: s3068770   发布时间: 2011-12-12

引用 1 楼 yixilan 的回复:
你的SP字段是有值的么?
建议定义变量的时候,变量不要和字段名同名:
sp varchar2(10);


它输出的结果就是没有值
我改成这样就报错了
declare
  t_sp varchar2(50);
  cursor c_sp is
  select into t_sp from t_sp s;
begin
  open c_sp;
  fetch c_sp
  into t_sp;
  while c_sp %found loop
  fetch c_sp
  into t_sp;
  dbms_output.put_line('我是游标:' || t_sp);
  end loop;
  close c_sp;
end;
 
我在申明游标的时候那个查询语句加了into 就错了 
t_sp的是 肯定是来源表 而表里面肯定是有数据的
恩 关于不要用sp 我知道了 我习惯了这2个字母 

作者: y112102   发布时间: 2011-12-12

引用 2 楼 s3068770 的回复:
while c_sp %found loop
fetch c_sp
into sp; dbms_output.put_line('我是游标:' || sp);
end loop;
****************************
while循环里不用再次获取游标。


我去掉fetch c_sp
  into sp;
就报错了 提示:
pls-00103出现符号"end-of-file"在需要下列只时:
<an identifier>
<a double-quoted delimited-identifier>
符号":"被替换"end-of-line"继续

作者: y112102   发布时间: 2011-12-12

试试这个:
declare
  sp t_sp.sp%type;
  cursor c_sp is select sp from t_sp;
begin
  open c_sp;
  loop 
  fetch c_sp into sp;
  exit when c_sp%notfound;
   
  dbms_output.put_line('我是游标:' || sp);
  end loop;
  close c_sp;
end;

作者: andyguan01_2   发布时间: 2011-12-12