• oracle游标


    oralce游标

    简介

    ​ Oracle创建了一个内存区域,称为上下文区域,用于处理SQL语句,该语句包含处理语句所需的所有信息; 例如,处理的行数等

    游标指向这个上下文区域。PL / SQL通过游标控制上下文区域。游标保存SQL语句返回的行(一个或多个)。光标所指向的行称为活动行。

    游标分类:

    • 隐式游标
    • 显式游标

    隐式游标

    ​ 每当执行SQL语句时,当语句没有显式游标时,Oracle会自动创建隐式游标。程序员无法控制隐式游标及其中的信息。

    游标属性

    • %FOUND
    • %NOTFOUND
    • %ISOPEN
    • %ROWCOUNT

    %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;
    
    
    
    
    
    
    
    
  • 相关阅读:
    ExtJS4 带清除功能的文本框 triggerfield
    ExtJS 4 MVC 创建 Viewport
    Sql Server 查询重复记录
    oracle 备份数据
    sql server 日期模糊查询
    SQL Server 日期转换成字符串
    Kurento应用开发指南(以Kurento 5.0为模板) 之中的一个:简单介绍,安装与卸载
    magento getCarriers 分析
    用两个小样例来解释单例模式中的“双重锁定”
    POJ 3592--Instantaneous Transference【SCC缩点新建图 && SPFA求最长路 && 经典】
  • 原文地址:https://www.cnblogs.com/qiudaozhang/p/9510502.html
Copyright © 2020-2023  润新知