文档详情

Orale游标使用全解.doc

发布:2017-11-16约1.07万字共9页下载文档
文本预览下载声明
-- 声明游标;CURSOR cursor_name IS select_statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这个游标 declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype; begin for c_row in c_job loop dbms_output.put_line(c_row.empno||-||c_row.ename||-||c_row.job||-||c_row.sal); end loop; end; --Fetch游标 --使用的时候必须要明确的打开和关闭 declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; --定义一个游标变量 c_row c_job%rowtype; begin open c_job; loop --提取一行数据到c_row fetch c_job into c_row; --判读是否提取到值,没取到值就退出 --取到值c_job%notfound 是false --取不到值c_job%notfound 是true exit when c_job%notfound; dbms_output.put_line(c_row.empno||-||c_row.ename||-||c_row.job||-||c_row.sal); end loop; --关闭游标 close c_job; end; --1:任意执行一个update操作,用隐式游标sql的属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况。 begin update emp set ENAME=ALEARK WHERE EMPNO=7469; if sql%isopen then dbms_output.put_line(Openging); else dbms_output.put_line(closing); end if; if sql%found then dbms_output.put_line(游标指向了有效行);--判断游标是否指向有效行 else dbms_output.put_line(Sorry); end if; if sql%notfound then dbms_output.put_line(Also Sorry); else dbms_output.put_line(Haha); end if; dbms_output.put_line(sql%rowcount); exception when no_data_found then dbms_output.put_line(Sorry No data); when too_many_rows then dbms_output.put_line(To
显示全部
相似文档