为什么游标会读出两条数?

gelinlanka 2014-09-09 10:22:53
create or replace procedure aaaa is
type sp_test1_cursor is ref cursor;
test1_cursor sp_test1_cursor;
v_name t_gxp_apply_main%rowtype;
begin
open test1_cursor for
select * from t_gxp_apply_main where cbillcode in ('OPACG20144000100');--只能查询出一条数据
loop
fetch test1_cursor
into v_name;
if v_name.cbillcode is not null or v_name.cbillcode='' then
dbms_output.put_line(v_name.cpurchaseuse);
end if;
exit when test1_cursor%notfound;
end loop;
close test1_cursor;
end aaaa;
...全文
368 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sych888 2014-09-16
  • 打赏
  • 举报
回复
推荐用其他的控制结构,先判断后操作,比较符合正常思维,比如:FOR 比较好理解
yiyongle 2014-09-15
  • 打赏
  • 举报
回复
你的exit when放在输出语句的后面了,所以会输出两条
binsweet 2014-09-11
  • 打赏
  • 举报
回复
exit when应紧跟在loop 中的 fetch into 之后
卖水果的net 2014-09-09
  • 打赏
  • 举报
回复


这句要前提
    exit when test1_cursor%notfound;


bw555 2014-09-09
  • 打赏
  • 举报
回复
逻辑问题,先判断有没有取出数据,再进行相关操作
create or replace procedure aaaa is
  type sp_test1_cursor is ref cursor;
  test1_cursor sp_test1_cursor;
  v_name       t_gxp_apply_main%rowtype;
begin
  open test1_cursor for
    select * from t_gxp_apply_main where cbillcode in ('OPACG20144000100');--只能查询出一条数据
  loop
    fetch test1_cursor
      into v_name;
    exit when test1_cursor%notfound;
    if v_name.cbillcode is not null or v_name.cbillcode='' then
      dbms_output.put_line(v_name.cpurchaseuse);
    end if;
  end loop;
  close test1_cursor;
end aaaa;
hyee 2014-09-09
  • 打赏
  • 举报
回复
你的exit when 应紧跟在fetch之后
不写代码的钦 2014-09-09
  • 打赏
  • 举报
回复
楼上已回复,这个跟c差不多,如果你那样写,多执行一次
第一节 游标卡尺的使用 1、游标卡尺 利用游标原理对两测量面相对移动分隔的距离进行读的测量器具。游标卡尺(简称卡尺) 。游标卡尺 可以测量产品的内、外尺寸(长度、宽度、厚度、内径和外径) ,孔距,高度和深度等。 游标卡尺根据其结构可分单面卡尺、双面卡尺、三用卡尺等。 面卡尺带有内外量爪,可以测量内侧尺寸和外侧尺寸(图 1-1) 。 双面卡尺的上量爪为刀口形外量爪,下量爪为内外量爪,可测内外尺寸(图 1-2) 。 三用卡尺的内量爪带刀口形 ,用于测量内尺寸;外量爪带平面和刀口形的测量面,用于测量外尺寸; 尺身背面带有深度尺,用于测量深度和高度(图 1-3) 。 刀口内测量爪 尺身 尺框 紧固螺钉 游标 深度尺 外测量爪 图1-3 紧固螺钉 尺框 游标 刀口外测量爪 尺身 内外测量爪 图1-2 微动装置 紧固螺钉 尺框 游标 尺身 内外测量爪 图1-1 微动装置 标卡尺读原理与读方法 为了掌握游标卡尺的正确使用方法,必须学准确读和正确操作。游标卡尺的读装置,是由尺身和 游标两部分组成,当尺框上的活动测量爪与尺身上的固定测量爪贴合时,尺框上游标的"0"刻线(简称游标 零线)与尺身的"0"刻线对齐,此时测量爪之间的距离为零。测量时,需要尺框向右移动到某一位置,这时 活动测量爪与固定测量爪之间的距离,就是被测尺寸,见图 1-4。假如游标零线与尺身上表示 30mm 的刻线 正好对齐,则说明被测尺寸是 30mm;如果游标零线在尺身上指示的尺值比 30mm 大一点,应该怎样读 呢?这时,被测尺寸的整部分(为 30mm) ,如上所述可从游标零线左边的尺身刻线上读出来(图中箭 头所指刻线) ,而比 1mm 小的小部分则是借助游标读出来的(图中 所指刻线,为 0.7mm) ,二者之和被 测尺寸是 30.7mm, 这是游标测量器具的共同特点。 由此可见, 游标卡尺的读, 关键在于小部分的读。 图1-4 游标卡尺测量尺寸 游标的小部分读方法是首先看游标的哪一条线与尺身刻线对齐; 然后把游标这条线的顺序乘以游 标读值,就得出游标的读,即游标的读=游标值×游标对齐刻线的顺序游标卡尺读时可分三步: 先读整——看游标零线的左边,尺身上最靠近的一条刻线的值,读出被测尺寸的整部分; 再读小——看游标零线的右边, 游标第几条刻线与尺身的值刻线对齐, 读出被测尺寸的小 部分(即游标值乘其对齐刻线的顺序) ; 得出被测尺寸——把上面两次读的整部分和小部分相加,就是卡尺的所测尺寸。 注意事项 清洁量爪测量面。 检查各部件的相互作用;如尺框和微动装置移动灵活,紧固螺钉能否起作用。 校对零位。使卡尺两量爪紧密贴合,应无明显的光隙,主尺零线与游标尺零线应对齐。 测量结束要把卡尺平放,尤其是大尺寸的卡尺更应该注意,否则尺身弯曲变形。 带深度尺的游标卡尺,用完后,要把测量爪合拢,否侧较细的深度尺露在外边,容易变形甚至折断。 卡尺使用完毕,要擦净上油,放到卡尺盒内,注意不要锈蚀或弄脏。 第二节 高度尺的使用 1、结构(图1-1) 0 0 0 mm 0 0 0 mm Mitutoyo 底座 划线规 百分表 锁紧装置 主轴 计器 图1-1:表盘式高度尺的结构 2、使用方法及读 ㈠ 使用方法 用酒精清洗测量表头,按点检项目逐个点检百分表; 将杠杆百分表与高度尺相配合,即安装于高度尺的测量脚上; 根据测量需要,一般将表针转动 0.15mm 处可,这时下降高度尺测量脚,使表头与平台相接触,表 针指至"0"位置,高度尺同时调"0",然后上升测量脚,使表头与被测物相接触,表针指至"0"位置,高度尺的 读要测量。 ㈡ 读方法 把划线器的测定面对准测定物的基准面,然后按上升、下降计器的再起动按钮,调为 0(指针读 板和针的位置也调到 0) 。 把划线器移到测定点,根据计器的显示和刻度板上针的位置确认其移动量。 * 上升方向时指针向右移动,下降方向时向左移动。 读被测值的整部分要主刻度上读(以微分筒端面所处在主刻度的上刻线位置来确定) ,小部分在 千分尺的结构 例 1:计器表示〖28〗指针向右移动,并超过了〖0〗 ,所以 值为: 28+0.04=28.04mm. 例 2:计器表示〖28〗但指针向左移动,也没超过〖0〗 ,所 以值为: 28-0.04=27.96mm. ㈢ 注意事项 读刻度时,刻度高度和眼睛要保持水平线。 划线器和夹子之间不能有松动。 移动时不能握住主轴部。 底座基准面或划线器爪部有伤痕时,立即进行补修,但必须要委托补 修专门店(严禁外行人补修) 。 计器有异常时,须停止使用,并进行补修。 第三节 千分尺的使用 1、结构(图1-1) 2、使用方法及读 ㈠ 使用方法 根据要求选择适当

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧