游标的使用可以让用户想错做数组一样操作查询出来的数据集,他提供了一种从集合性质的结果中提取单条记录的手段。
1.静态游标和REF游标。
2.静态游标分为显示游标(使用前必须有着明确的游标声明和定义)和隐式游标(PL/SQL自动管理)
显示游标语法
cursor cursor_name
[(parameter_name datatype ,.....)]
is select_statement;
1.cursor cursor_name 声明游标,cursor_name是游标的名称
2.parameter_name 参数名称
3.datatype 参数类型
4.select_statement: 游标关联的select语句,但该语句不能是select.into.语句
游标的步骤:
1.声明游标
declare cursor cursor_name
is select_statement
2.打开游标
open cursor_name
3.读取数据
fetch cursor_name into record_name
4.关闭游标
close cursor_name
例子:
显示游标
Declare
cursor pdct_cur
is select * from productInfo;
cur_prodrcd productinfo%rowtype% --声明一个变量,该变量类型是基于表productinfo的行对象
--cur_productname productinfo.Productname %type% 让游标中的类型与 表productinfo中列productname的类型一样
begin
open pdct_cur
loop
fetch pdct_cur into cur_prodrcd;
exit when pdct_cur %NOTFOUND; --利用游标属性实现没有记录退出循环
dbms_output.put_line(cur_prodrcd.productid || '-' || cur_prodrcd.productname || '-' || cur_prodrcd.productprice);
end loop;
close pdct_cur;
end;
隐式游标
declare
cur_productname productinfo.productname%type%;
cur_productprice productinfo.productprice%type%;
begin
select productname,productprice into cur_productname ,cur_productprice
from productinfo
where productid='0240040001' ;
if SQL%Found then
dbms_output.put_line(cur_prodrcd.productid || '-' || cur_prodrcd.productname || '-' || cur_prodrcd.productprice);
end if;
end;