• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
thankgoodness
博客园    首页    新随笔    联系   管理    订阅  订阅

Oracle 游标

--select  * from student;
--
delete from student where sid>=4;

--delete from "SYSTEM"."STUDENT";
--
SELECT * FROM "SYSTEM"."STUDENT";
/**//*
--插入30条记录
SET SERVEROUTPUT ON
DECLARE 
I INT:=0;
begin
FOR I IN 1..30 LOOP
INSERT INTO "SYSTEM"."STUDENT" (SID,SNAME,SDATE) VALUES(I,'FRJ'||TO_CHAR(I),SYSDATE);
END LOOP;
commit;
end;
*/


--采用游标查询出sid>2的纪录的 sid;
declare 
 tempsid system.student.sid
%type; --定义一个变量,它的数据类型与student表中的sid类型相同
 cursor myCursor           --定义游标 
 is                        --游标所执行的操作 
   select * from system.student
            
where sid>2;
   selCursorRecord myCursor
%rowtype; --游标实例化
begin
    tempsid:
=0;
    
open myCursor;  --打开游标
    /**//*if myCursor%isopen then  --测试游标是否打开,打开则返回真,如果没有打开游标就使用fetch语句将提示错误.
       fetch myCursor into selCursorRecord;
       dbms_output.put_line(to_char(' sid: '|| selCursorRecord.sid));
    else
      dbms_output.put_line(to_char(' 游标没有打开.')); 
    end if;
    
*/

    
/**//*
    while myCursor%isopen loop 
       fetch myCursor into selCursorRecord;
       dbms_output.put_line(to_char(' sid: '|| selCursorRecord.sid));
    end loop;
      --dbms_output.put_line(' 游标中所有的数据行数.'|| to_char(myCursor%rowcount)); 
     
*/

     loop          
--这一种循环结构比上种更为准确
       tempsid:=tempsid+1;
       
exit when myCursor%notfound ;
       
fetch myCursor into selCursorRecord;
       dbms_output.put_line(to_char(
' sid: '|| selCursorRecord.sid || '  rows ' ||tempsid));
     
end loop; 
     dbms_output.put_line(
' 游标中所有的数据行数.'|| to_char(myCursor%rowcount))  ;  --获取游标中的数据行数
     close myCursor;  --关闭游标
    
 
end;
posted @ 2008-04-30 09:46  宇晨  阅读(201)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3