zoukankan      html  css  js  c++  java
  • 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;
    
    
    
    
    
    
    
    
  • 相关阅读:
    axios核心技术---1.HTTP相关
    Leetcode刷题
    Java入门13---Optional处理null对象
    Java入门12---Stream
    谈谈前后端分离及认证选择
    react监控props的变化
    如何使用懒加载
    CSS文字超出省略
    React的slot插槽
    React 的函数组件和类组件中的props
  • 原文地址:https://www.cnblogs.com/qiudaozhang/p/9510502.html
Copyright © 2011-2022 走看看