`
Angelialily
  • 浏览: 241664 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

sql 游标实例

阅读更多
游标管理
  
  :隐式游标  -:自身存在的游标,处理返回单行语句,不用创建默认名称是小写sql
  游标    :显示游标  -:返回多行查询
  :REF游标   -:可以指向多个结果集的游标

   隐式游标 :%found    找到
    :%notfound 没有找到
   单行异常 :too_mang_rows
   多行异常 :no_data_found
-----------------------------
1、隐式游标
实例1、用sql%found 相当于sql.found 
set serveroutput on;
declare
begin
    update userinfo set username='aaa' where userid=1;
    if sql%found then
      dbms_output.put_line('ok');
dbms_output.put_line(sql%rowcount);//返回更新的行数
    end if
    if sql%notfound then
     dbms_output.put_line('no');
    end if;
    exception
    when when no_data_found then
dbms_output.put_line('no data found');
end;

实例2、使用sql%notfound

set serveroutput on;
declare
  var_name userinfo.username%type;
  begin
      select username into var_name from userinfo  where userid=1;
          dbms_output.put_line('username='||var_name);
      exception
      when no_data_found then //单行异常   too_mang_rows:多行异常
          dbms_output.put_line('no data found');
  end;

------------------------------------------------------
2、显示游标:必须要有结果集 userInfo表里加个字段 salary

set serveroutput on;
declare
  var_userid number(3);
  var_salary number(3);
  cursor mysor is select userid,salary from userinfo;//声明一个游标 它的类型是这个表里的列的类型
begin
     open mysor; 打开游标
     loop
        fetch mysor into var_userid,var_sqlary;//相当于foreach
        exit when mysor%notfound; //判断如果没有找到
        if var_userid=1 then
              update userinfo set salary = salary+salary*0.5 where userid=var_userid;
end if;
        if var_userid=2 then
              update userinfo set salary = salary+salary*0.6 where userid=var_userid;
        end if;
        if var_userid=3 then
              update userinfo set salary = salary+salary*0.7 where userid=var_userid;
        end if;
        commit;
     end loop;
     close mysor;//关闭游标
end;
--------------------------
给游标传参数

set serveroutput on;
declare
  var_name varchar(2);
  cursor mysor(myid number) is select username from userinfo where userid=myid;
  begin
    loop
       open mysor(6);//给游标传参数
       fatch mysor into var_name;
       exit when mysor%notfound;
       dbms_output.put.line(var_name);
    end loop;
    close mysor;
  end;
-------------------------
for 循环游标
set serveroutput on;
declare
  cursor mysor is select * from userinfo;--//游标的类型就是这张表的所有列的类型
  begin
    --open mysor; //使用for循环游标不用打开关闭的 它自动开关
    for a in mysor  --//for循环的变量不用声明 可直接使用 a
    loop
        dbms_output.put_line(a.username);
    end loop;
   -- close mysor;
  end;
------------------------
3、ref游标 用type声明变量
set serveroutput on;
declare
   type mysor is ref cursor; --//声明一个可以读多个结果集的游标
   var_sor,mysor;  --//var_sor是个游标类型
   var_user userInfo%rowtype;--//var_user是这个表的行类型
   var_person personInfo%rowtype;
   begin
      open var_sor for select * from userInfo;--//打开游标检索的结果集
      loop
          fetch var_sor into var_user;
          exit when var_sor%notfound;
          dbms_output.put_line(var_user.username);
      end loop;
      close var_sor;
     
      open var_sor for select * from personInfo;--//检索第二个结果集的游标
      loop
        fetch var_sor into var_person;
        exit when var_sor%notfound;
        dbms_output.put_line(var_person.pname);
      end loop;
      close var_sor;
      end  loop;
  end;
分享到:
评论

相关推荐

    sql游标实例,更新行

    --以下是把批号拆分的游标 declare @EntryID int --定义变量行号 declare @BillNo varchar(100) --定义变量单据号 declare @Number varchar(100) --定义变量物料代码 declare @qty decimal(18,6) --定义变量数量 ...

    SQL游标实例

    本篇文章将深入探讨SQL游标的实例应用,帮助你掌握其使用技巧。 首先,我们要理解SQL游标的几个基本概念。游标有四个关键属性:%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT。%FOUND用于检查是否在上次提取操作中找到一...

    sql server 游标实例

    ### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...

    SQL游标使用例子--有注释

    ### SQL游标使用详解 #### 一、引言 在SQL编程中,游标是一种用于处理查询结果集的工具,可以实现对数据行的逐行访问。本文将通过一个具体的示例来详细介绍如何使用SQL游标,并解释其背后的原理与应用场景。 ####...

    游标简单实用示例(SQL)

    FETCH NEXT FROM stu_corsor --下一条记录 FETCH PRIOR FROM stu_corsor --上一条记录

    SQL语句\sql 游标总结

    SQL 语句和游标总结 SQL 语句和游标是数据库管理系统中两个非常重要的概念。游标提供了一种从表中检索数据并进行操作的灵活手段,主要用在服务器上,处理由客户端发送给服务器端的 SQL 语句,或是批处理、存储过程...

    sql 游标遍历 实例

    在本实例中,我们将探讨如何使用SQL游标来遍历数据并执行相关操作。 首先,让我们理解什么是游标。游标可以视为一个指针,它在查询结果集上移动,允许你逐行访问数据。在大多数关系型数据库管理系统(如MySQL、SQL ...

    SQL经典游标使用方法

    综上所述,理解并熟练掌握SQL游标是提升数据库操作能力的重要步骤。通过游标,我们可以实现更加灵活和精细的数据处理,但也需要注意在性能和灵活性之间找到平衡。通过阅读和实践上游水位年报查询.txt、龙摆尾(坚行...

    教你怎么使用sql游标实例分享

    以下是一个使用SQL游标的实例,该实例展示了如何更新教师的工资,将工资增加相应的奖金: ```sql --1. 定义两个变量,分别用来存储ttid(教师ID)和reward(奖金) declare @tid int declare @reward money --2. ...

    一个SQL游标的应用实例.pdf

    **标题:** 一个SQL游标的应用实例.pdf **描述:** 一个SQL游标的应用实例.pdf **知识点提炼:** 1. **SQL游标概念与应用** 游标是一种数据库查询的结果集,它允许逐行访问结果集中的数据。它在程序中用以遍历和处理...

    关于sql游标使用的教程

    SQL游标是数据库管理系统中一个重要的概念,尤其在Oracle数据库中,它被广泛用于处理复杂的查询和数据操作。本教程将深入探讨SQL游标的使用,帮助你更好地理解和掌握这一技术。 首先,我们要明白什么是SQL游标。...

    关于sql游标的使用教程及案例

    标题“关于sql游标的使用教程及案例”指出了文档的核心内容,即将对SQL游标使用进行讲解,并通过具体案例加深理解。描述“对游标使用的讲解及相关案例”进一步明确了文档将提供游标使用的详细解释,并结合实例进行...

    SQL游标简介(详细)

    SQL游标是数据库开发中的一种重要工具,尤其在处理逐条数据操作的场景下显得尤为重要。游标允许程序员按照特定顺序访问查询结果集,并对每一行数据进行独立的操作,如读取、修改、删除等。这与传统的面向集合的...

    基于SQL游标的研究与应用.pdf

    在数据库管理中,SQL游标是一种用于管理结果集的技术,它可以逐条遍历结果集中的数据。本文从SQL游标的基本原理出发,详细介绍了游标的操作方法及其在实际数据处理中的应用。 首先,SQL游标解决了直接使用SQL语句...

    多个ORACLE 游标+SQL 游标 小例子+帮助文档

    本教程将深入介绍Oracle和SQL中的游标概念,以及如何通过实例来理解和应用它们。 首先,我们要明白什么是游标。游标(Cursor)是一个数据库系统组件,它允许我们在查询结果集中移动,一次处理一行数据。这在处理...

    Orcle游标实例.txt

    ### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...

    既简单,又使用的游标实例

    以下是对"既简单,又使用的游标实例"的详细解释。 游标,英文名为Cursor,是数据库管理系统(DBMS)提供的一种机制,用于在查询结果集中移动并处理单个记录。它在关系数据库中起着类似指针的作用,可以定位到结果...

    Oracle游标实例.txt

    标题“Oracle游标实例”直接点明了文章的主题,即通过具体的示例来讲解Oracle中的游标使用方法。描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle...

Global site tag (gtag.js) - Google Analytics