4.游标
用于临时存储一个查询返回的多行数据(结果集,类似于JAVA的JDBC连接返回的ResultSet集合),通过遍历游标,可以逐行访问处理该结果集的数据。
游标的使用方式:声明-->打开-->读取-->关闭
语法:
游标声明:
CURSOR 游标名[(参数列表)] IS 查询语句;
游标的打开:
OPEN 游标名;
游标的取值:
FETCH 游标名 INTO 变量列表;
游标的关闭:
CLOSE 游标名;
游标的属性:
%ROWCOUNT 整型 获得FETCH语句返回的数据行数
%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假。
%NOTFOUND 布尔型 与%FOUND属性返回值相反
%ISOPEN 布尔型 游标已经打开时值为真,否则为假。
其中,%NOTFOUND是在游标中找不到元素时,返回TURE,通常用来退出循环。
declare
CURSOR c_emp IS select username,gender from "user";
v_name "user".username%TYPE;
v_gender "user".gender%TYPE;
begin
open c_emp;
LOOP
FETCH c_emp INTO v_name,v_gender;
EXIT WHEN c_emp%NOTFOUND;
print(v_name||':'||v_gender);
END LOOP;
close c_emp;
end;
带参数的游标
declare
CURSOR c_emp(v_id "user".id%TYPE) IS select username,gender from "user" where id=v_id;
v_name "user".username%TYPE;
v_gender "user".gender%TYPE;
begin
open c_emp(1);
LOOP
FETCH c_emp INTO v_name,v_gender;
EXIT WHEN c_emp%NOTFOUND;
print(v_name||':'||v_gender);
END LOOP;
close c_emp;
end;