游标就是移动的光标,可以用来逐条或批量的处理数据。当游标移动到某行时,即可对该行数据进行操作,如提取数据等。
游标有一下四个属性,即这四个属性仅可被用于游标上:%isopen判断游标是否被打开,值为true或false;%found和%notfound判断游标所在行是否有效,一般没有数据了既是无效,值也是true或false;%rowcount返回的是当前位置为止游标读取的记录行数。
比如我有一个users表,存储用户名和密码等信息,现在我想用游标对数据进行遍历处理,我就可以这样写:
declare
v_username users.username%type;
v_password users.password%type;
cursor c is select t.username,t.password from users t;
begin
open c;
loop
fetch c into v_username,v_password;
exit when c%notfound;
dbms_output.put_line('用户'||v_username||'的密码是'||v_password);
end loop;
dbms_output.put_line('一共有'||c%rowcount||'条记录');
close c;
end;
第二三行定义变量,用于获得游标当前位置的数据,为了防止数据类型不一致,可以用“表名.列名%type”的形式获取到合适的数据类型,即如果表users中列username的数据类型是varchar的话,那么v_username的数据类型也是varchar。后面还会给出另一种获得数据类型的方式。
第四行就是定义游标了,注意不能把值直接赋给游标,也不能在表达式中使用游标。is后面是游标的定义,是一个查询语句,表明了游标在这个操作时,会发生作用,逐条指向这个操作产生的数据。
从第五行开始就是程序主体。首先我们需要打开游标,不打开游标将会得到错误提示。接着循环处理,将每次游标提取到的数据放入变量中(第

本文详细介绍了Oracle游标的概念、属性以及使用方法。通过示例展示了如何使用游标逐条处理数据、批量处理数据以及简化游标操作。同时,提到了游标变量的应用,为更复杂的数据操作提供了便利。

2095

被折叠的 条评论
为什么被折叠?



