1. for in loop形式

  DECLARE
     CURSOR c_sal IS SELECT employee_id, first_name || last_name ename, salary
     FROM employees ;
  BEGIN
     --隐含打开游标
     FOR v_sal IN c_sal LOOP
     --隐含执行一个FETCH语句
        DBMS_OUTPUT.PUT_LINE(to_char(v_sal.employee_id)||'---'|| v_sal.ename||'---'||to_char(v_sal.salary)) ;
     --隐含监测c_sal%NOTFOUND
     END LOOP;
  --隐含关闭游标
  END;

2.普通的游标循环

  declare
  --定义游标并且赋值(is 不能和cursor分开使用)
  cursor stus_cur is select * from students;
  --定义rowtype
  cur_stu students%rowtype;
  /*开始执行*/
  begin
  --开启游标
  open stus_cur;
   --loop循环
   loop
   --循环条件
   exit when stus_cur%notfound;
   --游标值赋值到rowtype
   fetch stus_cur into cur_stu;
   --输出
   dbms_output.put_line(cur_stu.name);
   --结束循环
   end loop;
  --关闭游标
  close stus_cur;
  /*结束执行*/
 end;
3.高效的游标循环
  declare
  cursor myemp_cur
  is select * from myemp;
  type myemp_tab is table of myemp%rowtype;
  myemp_rd myemp_tab;
  begin
   open myemp_cur;
   loop
   fetch myemp_cur bulk collect into myemp_rd limit 20;
   for i in 1..myemp_rd.count loop
    dbms_output.put_line('姓名:'||myemp_rd(i).ename);
   end loop;
   exit when myemp_cur%notfound;
   end loop;
  end;
 
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎。通常可以在SELECT INTO、
FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT.
BULK COLLECT的限制
1、不能对使用字符串类型作键的关联数组使用BULK COLLECT 子句。
2、只能在服务器端的程序中使用BULK COLLECT,如果在客户端使用,就会产生一个不支持这个特性的错误。
3、BULK COLLECT INTO 的目标对象必须是集合类型。
4、复合目标(如对象类型)不能在RETURNING INTO 子句中使用。
5、如果有多个隐式的数据类型转换的情况存在,多重复合目标就不能在BULK COLLECT INTO 子句中使用。
6、如果有一个隐式的数据类型转换,复合目标的集合(如对象类型集合)就不能用于BULK COLLECTINTO 子句中。

oracle for loop循环以及游标循环的更多相关文章

  1. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  2. sqlserver中的循环遍历(普通循环和游标循环)(转载)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  3. SQL SERVER循环遍历(普通循环和游标循环)

    1.首先需要一个测试表数据Student 2.普通循环 1)循环5次来修改学生表信息 --循环遍历修改记录--declare @i int   set @i=0while @i<5begin   ...

  4. sql 循环语句几种方式(变量循环,游标循环,事务)

    --第一   ) ,),Orders )) declare @n int,@rows int --select @rows=count(1) from pe_Orders select @rows = ...

  5. oracle游标循环的嵌套

    完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...

  6. Oracle游标-循环查询表中数据(表名),并执行

    Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount ); --定义一个游标变量 curs ...

  7. Oracle,跳出游标循环

    1,跳出游标的循环,不执行遍历了. 方法一:goto for c_row in 游标 loop if 条件 then dbms_output.put_line('测试跳出循环'); goto brea ...

  8. SQL中的循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

  9. (转)SQL中的循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

随机推荐

  1. * {margin:0px; padding:0px;}什么意思?

    * {margin:0px; padding:0px;} *  表示所有的元素的对齐方式以及和父类之间的间距都为0 body{margin:0px;padding:0px;} body里面的则表示的是 ...

  2. make[2]: *** No rule to make target `/root/.pyenv/versions/anaconda3-2.4.0/lib/libpython3.5m.so', needed by `evaluation.so'. Stop.

    当出现No rule to make target ,肯定是Makefile有问题. 有的makefile是脚本生成的,你得看脚本的配置文件对不对. 我的是这个脚本生成的.发现是Pythondir的配 ...

  3. echarts引入及应用

    1.在官网上下载echarts并引入项目中 <script src="js/echarts.js"></script> 2.给一个DOM作为图表展示的容器, ...

  4. 【转】Web前端研发工程师编程能力飞升之路

    分类: Javascript | 出自 海玉的博客 今天看到这篇文章.写的非常有意思.发现自己还有很长的一段路要走. [背景] 如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧: 如 ...

  5. 【转】关于LinQ的动态Or查询

    /// <summary> /// 构造函数使用True时:单个AND有效,多个AND有效:单个OR无效,多个OR无效:混合时写在AND后的OR有效 /// 构造函数使用False时:单个 ...

  6. EntityFramework Reverse POCO Generator工具

    https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838

  7. ios AFNetworking 3.0 报错 : *** Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:],

    AFNetWorking[:] *** Assertion failure -- :::] *** Terminating app due to uncaught exception 'NSInter ...

  8. input输入框怎么禁止粘贴

    <input type="text" value="" onpaste="return false;" /> 原文出处:http ...

  9. python动态获取对象的属性和方法 (转载)

    首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...

  10. Oracle 更新表(另一张表)

    Update a set(a.province,a.city)= (select province,city from b where b.mobile=a.mobile)