Oracle游标使用参考语句实例解析_oracle

来源:脚本之家  责任编辑:小易  

%rowcount这个是来copy返回你刚刚的DML语句2113影响的多少行,select 属于DQL语句像你5261这种应该用%foundsql :='select * from table_name where no = :p1';open c for using param1;if c%found then--如果4102游标的结果集有记1653录执行else --处理代码end if;%notfound和%found 是刚刚相反的,判断sql语句bai是否查出数据不du用游标操作,zhi只需要判断运行dao的sql结果的行数是否为回0,如果为0,则无数据答,如果非0,则有数据。示例代码如下:declarev_count int;--定义变量begin  select count(*) into v_count from test;--取出表中数据导变量  if v_count=0 --判断有无数据    then dbms_output.put_line('表中无数据');    else       dbms_output.put_line('表中有数据,数据条数为'||v_count);  end if;end;运行结果:本回答被网友采纳,c%NOTFOUND这个来就是没有数据!源~~~ --这是2113我5261代码的例子4102 你可以参照1653一下IF SUB0010_CUR11%NOTFOUND THEN CLOSE SUB0010_CUR11; GOTO SUB0010_190; END IF;更多追问追答追问还是有问题,永远不会执行到if判断里面、按照我自己的理解,这个查询语句 select * from table_name where no = ? 无论怎么执行,都会存在一个结果,就算where条件不成立,也会有一个什么也没查到(无数据)的结果、我觉得用notfound判断好像有问题、追答你执行sql的代码贴出来看看呗?追问代码在上面 一个存储过程 create之类的就没帖出来追答你上面的代码也没有运行sql的地方啊!~~~~~~本回答被网友采纳,可以用SQLSTATE来判断如果sqlstate = '02000',那就肯定为空,sql%foundwww.zgxue.com防采集请勿采集本网。

游标是从表中检索出结果集,从中每次指向一条记录进行交互的机制。

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标实

作用 指定结果集中特定行的位置。 基于当前的结果集位置检索一行或连续的几行。 在结果集的当前位置修改行中的数据。 对其他用户所做的数据更改定义不同的敏感性级别。 可以以编程的方式访问数据库。

您好,要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 procedure AAA(变量名 out [cur_name])如此申明OUT变量 存储过程 用系统默认的 sys_refcursor 游标类型 定义变量就OK了 1、Sql代码 --PL/SQL Code (包中带过程) 过程

一个简单实用:

|| ' WHERE ename LIKE :sname '

Declare -- 声明游标 Cursor Mycur Is Select * From Emp; Empinfo Emp%Rowtype; Cou Number; Begin -- 游标操作使用循环,但是在操作之前必须先将游标打开 For Empinfo In Mycur Loop Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行号:' || Cou || ' 雇员编号:' || Empinfo.Empno || ' 雇员姓名:' || Empinfo.Ename); End Loop; End;

改变实现的思路,用子查询不行吗,比如 select * from tab where clu in (select clu from tab1 where ) 看起来像个应用的具体问题,能不能把问题讲详细些

循环取出数据的两种写法:

create or replace procedure PRO_GET_AVG is begin declare cursor temp is select id from tablex where status_id = 0; for i in temp loop select avg(filed_a) from tabley where xxxx=xxx; end loop; end;

Declare -- 声明游标 Cursor Mycur Is Select * From Emp; -- List (EmpPo) Empinfo Emp%Rowtype; Cou Number; Begin -- 游标操作使用循环,但是在操作之前必须先将游标打开 If Mycur%Isopen Then Null; Else Open Mycur; End If; -- 使游标向下一行 Fetch Mycur Into Empinfo; -- 判断此行是否有数据被发现 While (Mycur%Found) Loop Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行号:' || Cou || ' 雇员编号:' || Empinfo.Empno || ' 雇员姓名:' || Empinfo.Ename); -- 修改游标,继续向下 Fetch Mycur Into Empinfo; End Loop; End;

第二种写法:

Declare -- 声明游标 Cursor Mycur Is Select * From Emp; Empinfo Emp%Rowtype; Cou Number; Begin -- 游标操作使用循环,但是在操作之前必须先将游标打开 If Mycur%Isopen Then Null; Else Open Mycur; End If; Loop -- 使游标向下一行 Fetch Mycur Into Empinfo; Exit When Mycur%Notfound; Cou := Mycur%Rowcount; Dbms_Output.Put_Line('行号:' || Cou || ' 雇员编号:' || Empinfo.Empno || ' 雇员姓名:' || Empinfo.Ename); End Loop; End;

在存储过程中使用游标

Create Or Replace Procedure Myproc(Oi_Return Out Integer) Is Cursor Mycur Is Select * From Emp_0915; Empinfo Emp_0915%Rowtype; Cou Number; Exc_Return Exception; -- 程序中间返回自定义异常 Begin If Mycur%Isopen Then Null; Else Open Mycur; End If; Loop Fetch Mycur Into Empinfo; Exit When Mycur%Notfound; Cou := Mycur%Rowcount; Dbms_Output.Put_Line(Cou || '开始更新...'); Update Emp_0915 t Set t.Sal = t.Sal + 1 Where t.Empno = Empinfo.Empno; Dbms_Output.Put_Line(Cou || '更新结束...'); End Loop; Commit; Oi_Return := 1; Exception When Exc_Return Then Rollback; Oi_Return := 0; End;

在oracle中测试:

Declare Re Integer; Begin Myproc(Re); If Re = 1 Then Dbms_Output.Put_Line(Re || ':执行结束。。。'); Else Dbms_Output.Put_Line(Re || ':执行错误_______'); End If; End;

一 游标是什么 游标字面理解就是游动的光32313133353236313431303231363533e58685e5aeb931333236383531标。 用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。 二 游标的分类 显式游标和隐式游标 显式游标的使用需要4步: 1. 声明游标 CURSOR mycur(vartype number) isselect emp_no,emp_zc from cus_emp_basic where com_no = vartype;2. 打开游标 open mycur(000627) 注:000627是参数 3. 读取数据 fetch mycur into varno, varprice; 4. 关闭游标 close mycur; 三 游标的属性 oracle 游标有4个属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。 %ISOPEN判断游标是否被打开,如果打开%ISOPEN等于true,否则等于false; %FOUND %NOTFOUND判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false; %ROWCOUNT返回当前位置为止游标读取的记录行数。 四 示例 set serveroutput on;declarevarno varchar2(20);varprice varchar2(20);CURSOR mycur(vartype number) isselect emp_no,emp_zc from cus_emp_basic where com_no = vartype;beginif mycur%isopen = false thenopen mycur(000627);end if;fetch mycur into varno,varprice;while mycur%found loopdbms_output.put_line(varno||','||varprice);if mycur%rowcount=2 thenexit;end if;fetch mycur into varno,varprice;end loop;close mycur;end;PL/SQL记录的结构和C语言中的结构体类似,是由一组数据项构成的逻辑单元。 PL/SQL记录并不保存在数据库中,它与变量一样,保存在内存空间中,在使用记录时候,要首先定义记录结构,然后声明记录变量。可以把PL/SQL记录看作是一个用户自定义的数据类型。 set serveroutput on;declaretype person is record(empno cus_emp_basic.emp_no%type,empzc cus_emp_basic.emp_zc%type);person1 person;cursor mycur(vartype number)isselect emp_no,emp_zc from cus_emp_basic where com_no=vartype;beginif mycur%isopen = false thenopen mycur(000627);end if;loopfetch mycur into person1;exit when mycur%notfound;dbms_output.put_line('雇员编号:'||person1.empno||',地址:'||person1.empzc);end loop;close mycur;end;典型游标for 循环 游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当form循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。 set serveroutput on;declarecursor mycur(vartype number)isselect emp_no,emp_zc from cus_emp_basic where com_no=vartype;beginfor person in mycur(000627) loopdbms_output.put_line('雇员编号:'||person.emp_no||',地址:'||person.emp_zc);end loop;end;,去我的百度空间看,里面有游标的用法内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle 毫秒与日期的相互转换示例
  • oracle应用经验(2)
  • oracle 12cr2查询转换教程之临时表转换详解
  • oracle数据库 dgbroker三种保护模式的切换
  • oracle触发器表发生了变化 触发器不能读它的解决方法(必看)
  • oracle 闪回技术详细介绍及总结
  • oracle isql*plus配置设置图文说明
  • oracle数据行拆分多行方法示例
  • 浅析新建oracle数据库的三种方法
  • 详解oracle管道函数的用法(一行拆为多行)
  • 游标是什么?ORACLE是怎样使用游标的?举例说明!
  • oracle 游标操作 怎么判断SQL语句是否查出数据
  • Oracle数据库中,使用fetch语句提取游标数据,fetc...
  • oracle中游标的使用?
  • oracle中游标的作用。什么情况下使用?
  • Oracle中怎么用游标作为输出参数,写点代码举例吧!
  • Oracle ref游标动态sql里使用like语句老是报错,高...
  • oracle如何从一个游标,或者table类型中一次性查询...
  • oracle 写一个求平均数的存储过程 需要用到游标的 ...
  • oracle 先用游标一行一行的读 把读出来的字段添加...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页详解oracle游标的简易用法oracle游标的使用实例详解oracle中游标cursor基本用法详解详解oracle隐式游标和显式游标oracle中的游标和函数详解oracle出现超出打开游标最大数的解决方法oracle显示游标的使用及游标for循环oracle存储过程返回游标实例详解oracle 游标使用总结oracle 在一个存储过程中调用另一个返回游标的存储过程oracle 毫秒与日期的相互转换示例oracle应用经验(2)oracle 12cr2查询转换教程之临时表转换详解oracle数据库 dgbroker三种保护模式的切换oracle触发器表发生了变化 触发器不能读它的解决方法(必看)oracle 闪回技术详细介绍及总结oracle isql*plus配置设置图文说明oracle数据行拆分多行方法示例浅析新建oracle数据库的三种方法详解oracle管道函数的用法(一行拆为多行)oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍oracle中通配符和运算符的使用方法介绍oracle下实现恢复一个丢失的数据文件的代详解oracle数据库各类控制语句的使用oracle 11g 新特性 flashback data archioracle中正则表达式的使用实例教程oracle连接远程数据库的四种方法解决oracle12c创建用户提示ora-65096:公实例分析oracle数据库性能优化oracle复合索引与空值的索引使用问题小结oracle sql性能优化系列学习一
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved