`
king_tt
  • 浏览: 2229365 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle游标的用法

阅读更多

----------------------隐式游标 %isopen , %notfound , %found
定义游标
declare
begin
........
end;

定义:隐式游标则由则由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性。其过程由oracle控制,完全自动化。隐式游标的名称是SQL,不能对SQL游标显式地执行
OPEN,FETCH,CLOSE语句。

属性:类似于显示游标,隐式游标同样具有四种属性,只不过隐式游标以SQL%开头,而显示游标以Cursor_name%开头。通过SQL%总是只能访问前一个DML操作或单行SELECT操作的游标属性,用于判断DML执行的状态和结果,进而控制程序的流程。

属性一:SQL%ISOPEN
游标是否打开。当执行select into ,insert update,delete时,Oracle会隐含地打开游标,且在该语句执行完毕或隐含地关闭
游标,因为是隐式游标,故SQL%isopen----总是false

属性二:SQL%FOUND
判断SQL语句是否成功执行。当有作用行时则成功执行为true,否则为false。

属性三:SQL%NOTFOUND
判断SQL语句是否成功执行。当有作用行时否其值为false,否则其值为true。

属性四:SQL%ROWCOUNT
在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,SQL%ROWCOUNT的值为,如果没有

成功,SQL%ROWCOUNT的值为,同时产生一个异常NO_DATA_FOUND。


declare
begin
if sql%isopen then
dbms_output.put_line('游标已打开');
else
dbms_output.put_line('游标未打开');--输入此条,因为是隐式的,所以总是未打开
end if;
end;

declare
begin
update emp set sal=1000;
dbms_output.put_line('你已经处理了'||sql%rowcount||'条数据');
end;
-----------notfound的用法
declare
begin
update emp set sal=1000;
if sql%notfound then
dbms_output.put_line('游标未找到');
else
dbms_output.put_line('游标已找到');--输出此条
end if;
end;
-----------found的用法
declare
begin
update emp set sal=1000;
if sql%found then
dbms_output.put_line('游标找到');--输出此条
else
dbms_output.put_line('游标未找到');
end if;
end;

--------注:
当进行update,delete,insert操作的时候就要用到隐式游标
declare
begin
update emp set sal=1000;--修改
if sql%found then
dbms_output.put_line('修改成功');
end if;
end;

declare
begin
update emp set sal=1000 where empno=7369;
if sql%found then
dbms_output.put_line('游标已打开');
else
dbms_output.put_line('游标未打开');
end if;
end;

select* from emp;


------------------------------------普通游标(带参数和不带参数)

循环游标用loop....end loop


--1。显示所有员工信息(不带参数)
declare
cursor mycur is select * from emp;
myemp emp%rowtype;
begin
open mycur;
loop
fetch mycur into myemp;
exit when mycur%notfound;
dbms_output.put_line('员工编号:'||myemp.empno||' 员工姓名:'||myemp.ename||'员工工资:'||myemp.sal);
end loop;
close mycur;
end;


--2。输入部门编号,显示该部门员工的详细信息(带参数)
declare
cursor mycur(myno emp.deptno%type) is select * from emp where deptno=myno;
myemp emp%rowtype;
mydeptno emp.deptno%type;--所要接的参数
begin
mydeptno:=&请输入员工编号;
open mycur(mydeptno);
loop
fetch mycur into myemp;
exit when mycur%notfound;
dbms_output.put_line('员工编号:'||myemp.empno||' 员工姓名:'||myemp.ename||'员工工资:'||myemp.sal||'部门编号:'||myemp.deptno);
end loop;
close mycur;
end;

----------------------------------循环游标
--1。显示所有员工信息
declare
cursor mycur is select * from emp;
begin
for i in mycur
loop
dbms_output.put_line('员工编号:'||i.empno||' 员工姓名:'||i.ename||'员工工资:'||i.sal);
end loop;
end;

 

--------------------------------------用游标批量更新数据
declare
cursor mycur is select sal from emp for update;
mysal emp.sal%type;
begin
open mycur;
loop
fetch mycur into mysal;
exit when mycur%notfound;
mysal:=mysal*2;
update emp set sal=mysal where current of mycur;
end loop;
close mycur;
end;

select * from emp;


-----------------------------------引用游标
declare
mychar char(10);
type mycur is ref cursor;
mpp mycur;
myemp emp%rowtype;
begin
mychar:=&请输入一个字符;
if mychar='a'then
open mpp for select * from emp where deptno=10;
loop
fetch mpp into myemp;
exit when mpp%notfound;
dbms_output.put_line('员工编号:'||myemp.empno||'员工姓名:'||myemp.ename||'部门编号:'||myemp.deptno);
end loop;
elsif mychar='b' then
open mpp for select * from emp where deptno=20;
loop
fetch mpp into myemp;
exit when mpp%notfound;
dbms_output.put_line('员工编号:'||myemp.empno||'员工姓名:'||myemp.ename||'部门编号:'||myemp.deptno);
end loop;
else
open mpp for select * from emp where deptno=30;
loop
fetch mpp into myemp;
exit when mpp%notfound;
dbms_output.put_line('员工编号:'||myemp.empno||'员工姓名:'||myemp.ename||'部门编号:'||myemp.deptno);
end loop;
end if;
end;

分享到:
评论

相关推荐

    Oracle游标使用方法及语法大全

    Oracle 游标使用方法及语法大全 Oracle 游标是 PL/SQL 程序中的一种重要组件,用于处理查询结果集。游标可以分为隐式游标和显式游标两种,隐式游标由 PL/SQL 管理,隐式游标打开时查询开始,查询结束时隐式游标自动...

    Oracle游标使用方法及语法大全.doc

    ### Oracle游标使用详解 #### 一、游标概述 游标是Oracle数据库中用于处理查询结果集的强大工具,尤其适用于需要逐行处理查询结果的情况。在Oracle中,游标可以分为两类:**显式游标**和**隐式游标**。 1. **隐式...

    Oracle游标使用详解

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...

    Oracle游标使用案例大全

    本资源“Oracle游标使用案例大全”提供了一系列实用的示例,旨在帮助学习者深入理解和掌握Oracle游标的用法。 1. **游标的基本概念** - 游标(Cursor):它是一个数据库系统中的结构,用于存储执行SQL查询后的结果...

    Oracle 游标使用大全.pdf

    通过本篇Oracle游标的使用大全,我们可以了解到Oracle数据库游标的类型、属性以及如何在PL/SQL中实现对数据集的逐行处理。这不仅有助于提升程序员的编程技能,也能使他们更深入地理解PL/SQL与Oracle数据库之间的交互...

    Oracle 游标使用大全

    这篇文档《Oracle 游标使用大全》应该涵盖了关于Oracle游标的各种使用方法和最佳实践。 1. **游标的定义与类型** - 游标(Cursor)是数据库系统中一个概念,用于跟踪查询结果集中的当前位置。 - Oracle游标有两种...

    Oracle游标使用方法及语法大全[整理].pdf

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询返回的多行结果集。在PL/SQL中,游标分为隐式游标和显式游标。 1. **隐式游标**:在PL/SQL中,每当执行一个SELECT语句时,系统会自动打开一个隐式...

    oracle游标使用大全1.txt

    本文详细介绍了Oracle游标的使用方法,包括如何声明、打开游标,如何使用变量与类型匹配,以及如何处理异常情况等。通过这些知识点的学习,读者可以更好地理解和应用Oracle游标,提高开发效率和代码质量。此外,还...

    oracle游标使用大全

    总之,Oracle游标提供了处理查询结果的强大工具,使开发者能够灵活地在PL/SQL中操作数据。无论是隐式还是显式游标,都极大地增强了对数据库的交互能力,使得程序能根据查询结果进行适当的操作。理解并熟练运用游标是...

    oracle数据库游标使用例子

    3. **游标的使用方法**: - **声明游标**:使用`DECLARE`关键字定义游标,指定查询语句和返回的数据类型。 - **打开游标**:使用`OPEN`语句打开游标,准备进行`FETCH`操作。 - **提取数据**:使用`FETCH`语句从...

    oracle游标优化

    ### Oracle游标优化 ...通过上述方法,可以在一定程度上优化Oracle游标的性能,从而提高应用程序的整体响应时间和资源利用率。需要注意的是,每种优化策略都应该根据具体的业务需求和技术环境来选择和实施。

    oracle游标的用法

    oracle游标的用法,比较通俗易懂的讲解游标用法,有实例

    Oracle 游标 Oracle 游标

    ### Oracle游标详解 在Oracle数据库中,游标(Cursor)是处理数据集的一个关键机制,主要用于执行查询并逐行处理结果集。游标可以被视为一个临时存储区,用于保存SELECT语句的结果集,允许程序对这些结果进行迭代...

    快速练习ORACLE游标习题及答案

    根据提供的文件信息,我们可以归纳出以下Oracle游标的使用方法及相关知识点: ### 一、游标的基本概念 在Oracle数据库中,游标是一种重要的机制,它允许用户从查询结果集中逐行检索数据。游标可以分为两种类型:**...

    Oracle游标的使用方法.pdf

    【Oracle游标的使用方法】 Oracle游标是数据库管理系统中用于处理SQL语句的重要工具,它允许程序逐行处理查询结果,而不是一次性加载所有数据。游标由上下文区支持,这是一个内存区域,存储了处理SQL语句所需的信息...

    Oracle的游标学习

    在这个主题中,我们将深入探讨游标的定义、类型、使用方法以及在实际应用中的重要性。 游标(Cursor)在数据库中扮演着数据指针的角色,它允许我们在结果集中移动,读取单个记录或更新特定行。Oracle提供两种类型的...

    ORACLE游标学习

    【Oracle游标学习】 在Oracle数据库中,游标(Cursor)是一种重要的编程工具,它允许开发者按需处理查询结果集的每一行数据。游标在PL/SQL编程中扮演着关键角色,尤其在处理大量数据时,能提供更加灵活和高效的数据...

Global site tag (gtag.js) - Google Analytics