oracle游标
oralce游标? 简介? Oracle创建了一个内存区域,称为上下文区域,用于处理SQL语句,该语句包含处理语句所需的所有信息; 例如,处理的行数等 游标指向这个上下文区域。PL / SQL通过游标控制上下文区域。游标保存SQL语句返回的行(一个或多个)。光标所指向的行称为活动行。 游标分类:
隐式游标? 每当执行SQL语句时,当语句没有显式游标时,Oracle会自动创建隐式游标。程序员无法控制隐式游标及其中的信息。 游标属性
%found: ? 如果INSERT,UPDATE或DELETE语句影响一行或多行或SELECT INTO语句返回一行或多行,则返回TRUE。否则,它返回FALSE。 %notfound: ? 与%FOUND完全相反。如果INSERT,UPDATE或DELETE语句不影响任何行,或者SELECT INTO语句未返回任何行,则返回TRUE。否则,它返回FALSE。 %isopen: ? 对于隐式游标,始终返回FALSE,因为Oracle在执行其关联的SQL语句后会自动关闭SQL游标。 %rowcount: ? 返回受INSERT,UPDATE或DELETE语句影响的行数,或SELECT INTO语句返回的行数。 此外,任何SQL游标属性都将作为sql%attribute_name访问 。 eg: declare total_rows number; begin update emps set sal = sal + 500; if sql%notfound then dbms_output.put_line('no emps selected'); elsif sql%found then total_rows := sql%rowcount; dbms_output.put_line(total_rows || 'emps selected'); end if; end; 显式游标? 显式游标是程序员定义的游标,用于获得对上下文区域的更多控制。应在PL / SQL块的声明部分中定义显式游标。它是在SELECT语句上创建的,它返回多行。 创建语法: CURSOR cursor_name IS select_statement; 使用步骤:
声明游标cursor c_emps is select empno,ename from emps; 打开游标open c_emps; 获取游标fetch c_emps into c_empno,c_ename; 关闭光标close c_emps; 完整eg: declare c_empno emps.empno%type; c_ename emps.ename%type; cursor c_emps is select empno,ename from emps; begin open c_emps; loop fetch c_emps into c_empno,c_ename; exit when c_emps%notfound; dbms_output.put_line(c_empno||c_ename); end loop; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |