日期:2014-05-16  浏览次数:20476 次

转 Oracle学习笔记整理之游标篇

游标分为隐式、显式、REF三种游标。
而隐式游标和显式游标又都属于静态游标,REF游标属于动态游标。
静态游标和动态游标的最大区别在于静态游标是在运行前将游标变量和SQL关联,而动态游标恰恰相反是在运行后将游标变量和SQL进行关联。
隐式游标是由Oracle自动管理,也称sql游标。所有的DML都被Oracle解析成为一个名为SQL的隐式游标。DML包括Insert、Delete、Update、Merge into。而Select属于DQL。
隐式游标的属性有:

属性名 说明
sql%found 影响行数大于等于1是为 ture
sql%notfound 没有影响行是为true
sql%rowcount 受影响的行数
sql%isopen 游标是否打开,始终为false
sql%bulk_rowcount(index) ...
sql%bulk_exceptions(index).error_index ...
sql%bulk_exceptions(index).error_code ...



隐式游标实例:
begin
??--执行DML操作
??update chg_test_b b set b.chg_name = 'ff' where b.chg_id = 5;
??--判断是否有受影响行
??if sql%found then
? ??--打印受影响行数
? ? dbms_output.put_line('影响行数:' || sql%rowcount);
??end if;
??--判断是否没有受影响行
??if sql%notfound then
? ? dbms_output.put_line('id为5的记录不存在');
??end if;?
end;
无参显式游标实例:
declare
??--声明游标表变量并关联sql