Oracle游标

游标

什么是数据库游标
从一个Java程序员的角度看,数据库中的游标作用与JDBC中ResultSet的作用相似。都是用于保存查询结果集,并提供了访问结果集中记录的方式

SQL语句游标
非查询语句隐式的
结果是单行的查询语句隐式的或显示的
结果是多行的查询语句显示的

显示游标
1、游标是对查询出来的结果集进行处理的一个对象.即在数据库编程中利用游标来保存结果集。我们可以操作游标从而得到游标中指定行的记录
显示游标属性
%FOUND 布尔型属性,判断是否还有下一条记录
%NOTFOUND 布尔型属性,与%FOUND相反;
%ISOPEN 布尔型属性,当游标已打开时返回 TRUE;
%ROWCOUNT 数字型属性,返回已从游标中读取的记录数。
显示游标操作
可以使用while循环进行操作,或者for循环操作,使用while的话要声明,开启,使用,关闭,使用for循环的话会自动开启关闭游标;
第一步:声明游标:指明该游标代表的结果集
第二步:开启游标
第三步:使用游标:利用游标得到结果集中的信息
第四步:关闭游标

create table  testCusor(
id varchar2(20),
name varchar2(20)
);
insert into testCusor values('1','1');
insert into testCusor values('11','11');
insert into testCusor values('12','12');
insert into testCusor values('13','13');
insert into testCusor values('14','14');
--使用while循环遍历游标
--创建一个带参数的游标
cursor  test_Cursor(v_temp number default 11) is select id,name from testCusor where name > v_temp;
v_id testCusor.Id%TYPE;
v_name testCusor.Name%TYPE;
begin
  --给游标传值,值为12
  open test_Cursor(v_temp => 12);
    fetch test_Cursor into v_id,v_name;
  --如果有数据则进行循环里面的操作,在使用%found 前要进行fetch
  while test_Cursor % found  loop
    fetch test_Cursor into v_id,v_name;
    dbms_output.put_line(v_id || '--' || v_name);
  end loop;
  close test_Cursor;
end;

--使用%notfound
declare 
--创建一个带参数的游标
cursor  test_Cursor(v_temp number default 11) is select id,name from testCusor where name > v_temp;
v_id testCusor.Id%TYPE;
v_name testCusor.Name%TYPE;
begin
  --给游标传值,值为12
  open test_Cursor(v_temp => 12);
  loop
   fetch test_Cursor into v_id,v_name;
   --在使用notfound 前要进行fetch 赋值
   exit when test_Cursor % notfound;
   dbms_output.put_line('如果有数据这里进行操作');
   dbms_output.put_line(v_id || '--' || v_name);
  end loop;
   dbms_output.put_line('总条数' || '--' || test_Cursor %rowcount);
  close test_Cursor;
end;


--使用for循环遍历游标
--使用for循环会自动开启、关闭、fetch游标,使用省心
declare 
  --声明游标
  cursor test_cursor is select id,name from testCusor;
begin
  --循环游标
  for aaa in test_cursor loop
  --如果在游标查询语句的选择列表中存在计算列,则必须为这些计算列指定别名后才能通过游标FOR 循环语句中的索引变量来访问这些列数据。
    dbms_output.put_line(aaa.id || '--' || aaa.name);
  end loop;
end;

--使用for循环,循环带参数的游标
declare 
  cursor test_cursor(temp number default 10 ) is select id,name from testCusor where id >temp;
begin
  --如果不设置参数参数为默认值
  for aaa in test_cursor(12) loop
    dbms_output.put_line(aaa.id || '--' || aaa.name);
  end loop;
end;

隐式游标
显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;而对于非查询语句,如修改、删除操作,则使用隐式游标,隐式游标就是一句sql;
格式调用为: SQL%
隐式游标属性
SQL%FOUND 布尔型属性,当最近一次读记录时成功返回,则值为TRUE;
SQL%NOTFOUND 布尔型属性,与%FOUND相反;
SQL %ROWCOUNT 数字型属性, 返回已从游标中读取得记录数;
SQL %ISOPEN 布尔型属性, 取值总是FALSE。SQL命令执行完毕立即关闭隐式游标。
隐式游标操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值