此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也能用于遍历数据集中的数据,在存储过程中可以实现loop循环,以及一些比较复杂的逻辑,也可以用于在存储过程中返回一个查询到的程序集。

create or replace procedure my_loop_cur_pro(presult out varchar) as
/*方法一,for in*/
/* pstring varchar(500);
begin*/
/*for in 是隐式打开关闭游标的,所以不需要定义一个游标*/
/* for pitem in (select * from emp) loop
begin
if pitem.DEPTNO = 20 then
pstring := pstring || ',' || pitem.ENAME;
end if;
end;
end loop;
presult:=pstring;
end;*/
 
/*方法二*/
/*使用 fetch into 的方式,这种方式必须手动的打开和关闭游标,同时必须在loop的时候明确的定义退出的条件,否则会出现死循环的现象*/
/* Cursor pcursor is
select * from emp;
pitem emp%rowtype; --%rowtype用于行类型%type用于列,字段,属性(eg emp.depno%type)
begin
open pcursor;
loop
fetch pcursor
into pitem;
exit when pcursor%notfound;--定义完成游标时退出
if pitem.Deptno = 20 then
presult := presult || pitem.ename;
end if;
end loop;
close pcursor;--必须手动关闭游标
end;*/
 
/*方法三*/
/*使用While遍历游标*/
/*cursor pcursor is
select * from emp;
pitem emp%rowtype;
begin
open pcursor;
fetch pcursor
into pitem; --while循环的时候,必须先Fetch一次游标,否则不会允许游标
while pcursor%found loop
--定义当游标获取到数据的时候循环
fetch pcursor
into pitem;
if pitem.deptno = 20 then
presult := presult || pitem.ename;
else
if pitem.deptno <> 20 then
presult := presult || ',';
end if;
end if;
end loop;
close pcursor;
end;
*/

Oracle游标的使用示例的更多相关文章

  1. Oracle 游标示例,带异常处理

    Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...

  2. Oracle与Mysql内嵌游标的使用示例

    Oracle 游标用For循环比较简单,Mysql也是最近才开始用,感觉稍微麻烦一点,下边直接上代码: ------------------------------------------------ ...

  3. Oracle游标带参数

    Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...

  4. Oracle 游标使用(转)

    这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 ; ; dbms_output.put_line(sql) loop dbms_output.put_line( ; ; ; r_te ...

  5. Oracle 游标使用全解(转)

    转自:http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- ...

  6. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  7. dapper支持oracle游标

    dapper支持oracle游标 Dapper是一个轻型的ORM类.它有啥优点.缺点相信很多朋友都知道了,园里也有很多朋友都有相关介绍,这里就不多废话. 如果玩过Oracle都知道,存储过程基本都是通 ...

  8. Oracle游标介绍

    Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...

  9. Oracle游标使用

    Oracle游标介绍: --声明游标 CURSOR cursor_name IS select_statement --For 循环游标 --()定义游标 --()定义游标变量 --()使用for循环 ...

随机推荐

  1. 小程序重新封装打印函数console.log

    习惯性使用console.log打印获取到的数据,信息等,然后上星期大佬看见了说怎么那么多打印信息出来,线上那个也是吗?问我能不能线上的就不打印出来? 我就说那就封装一个打印函数呗. 重写一个没问题, ...

  2. vue 源码学习(一) 目录结构和构建过程简介

    Flow vue框架使用了Flow作为类型检查,来保证项目的可读性和维护性.vue.js的主目录下有Flow的配置.flowconfig文件,还有flow目录,指定了各种自定义类型. 在学习源码前可以 ...

  3. Scanner,Random,匿名对象-------------------java基础学习第七天

    1.API 2.Scanner 功能:通过键盘输入数据到程序中. 引用类型的一般使用步骤: 导包 Import 包路径.类名称 只有java.lang 包写的类不需要导包,其他都需要 2.创建 类名称 ...

  4. ckeditor+ckfinder

    官方地址:http://ckeditor.com/ 复制ckeditor和ckfinder的文件夹到项目根路径下 拷贝ckfinder的config.xml到WEB-INF下 <config&g ...

  5. Python函数式编程之闭包

    -------------------------函数式编程之*******闭包------------------------ Note: 一:简介 函数式编程不是程序必须要的,但是对于简化程序有很 ...

  6. java points[复习]

    1 - & 与 && 的区别: &:不管左边是true还是false,右端都会进行运算: &&:当左端为false时,右端不再进行运算: 即在与运算时, ...

  7. sublime No packages available for installation

    package control user-setting 中添加: "channels": [ "C:\\channel_v3.json" ], channel ...

  8. Ajax验证用户名是否被注册

    Ajax验证用户名是否被注册 var xmlHttp; function createXMLHttpRequest(){ // 创建XMLHttp请求对象 if(window.ActiveXObjec ...

  9. emWin酿造机过程演示,含uCOS-III和FreeRTOS两个版本

    第2期:酿造机过程演示 配套例子:V6-902_STemWin提高篇实验_酿造机过程演示(uCOS-III)V6-903_STemWin提高篇实验_酿造机过程演示(FreeRTOS) 例程下载地址:h ...

  10. CS20SI-tensorflow for research笔记: Lecture3

    本文整理自知乎专栏深度炼丹,转载请征求原作者同意. 本文的全部代码都在原作者GitHub仓库github CS20SI是Stanford大学开设的基于Tensorflow的深度学习研究课程. Tens ...