`
czh0622
  • 浏览: 15053 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

oracle游标笔记

阅读更多

游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用CURSOR与SELECT一起对表或者视图中的数据进行查询并逐行读取。

Oracle游标分为显示游标和隐式游标。
显示游标(Explicit Cursor):在PL/SQL程序中定义的、用于查询的游标称作显示游标。
隐式游标(Implicit Cursor):是指非PL/SQL程序中定义的、而且是在PL/SQL中使用UPDATE/DELETE语句时,Oracle系统自动分配的游标。
一.显示游标
1.使用步骤
(1)定义 (2)打开 (3)使用 (4)关闭
2.使用演示
首先创建测试用表STUDENT,脚本如下:


CREATE TABLE "STUDENT" (
"STUNAME" VARCHAR2(10 BYTE),
"STUNO" VARCHAR2(4 BYTE),
"AGE" NUMBER,
"GENDER" VARCHAR2(2 CHAR)
)

(1).使用WHILE循环处理游标
create or replace PROCEDURE PROC_STU1 AS
BEGIN
--显示游标使用,使用while循环
declare
--1.定义游标,名称为cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
--定义变量,存放游标取出的数据
v_stuno varchar(4);
v_stuname varchar(20);
begin
--2.打开游标cur_stu
open cur_stu;
--3.将游标的当前行取出存放到变量中
fetch cur_stu into v_stuno,v_stuname;
while cur_stu%found --游标所指还有数据行,则继续循环
loop
--打印结果
dbms_output.PUT_LINE(v_stuno||'->'||v_stuname);
--继续将游标所指的当前行取出放到变量中
fetch cur_stu into v_stuno,v_stuname;
end loop;
close cur_stu; --4.关闭游标
end;
END PROC_STU1;
(2).使用IF..ELSE代替WHILE循环处理游标
create or replace PROCEDURE PROC_STU2 AS
BEGIN
--显示游标使用,使用if判断
declare
--1.定义游标,名称为cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
--定义变量,存放游标取出的数据
v_stuno varchar(4);
v_stuname varchar(20);
begin
--2.打开游标cur_stu
open cur_stu;
--3.将游标的当前行取出存放到变量中
fetch cur_stu into v_stuno,v_stuname;
loop
if cur_stu%found then --如果游标cur_stu所指还有数据行
--打印结果
dbms_output.PUT_LINE(v_stuno||'->'||v_stuname);
--继续将游标所指的当前行取出放到变量中
fetch cur_stu into v_stuno,v_stuname;
else
exit;
end if;
end loop;
close cur_stu; --4.关闭游标
end;
END PROC_STU2;
(3).使用FOR循环处理游标
create or replace PROCEDURE PROC_STU3 AS
BEGIN
--显示游标使用,使用for循环
declare
--定义游标,名称为cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
begin
for stu in cur_stu
loop
dbms_output.PUT_LINE(stu.stuno||'->'||stu.stuname);
--循环做隐含检查 %notfound
end loop;
--自动关闭游标
end;
END PROC_STU3;
(4).常用的使用EXIT WHEN处理游标
create or replace
PROCEDURE PROC_STU1_1 AS
BEGIN
--显示游标使用,使用exit when循环
declare
--1.定义游标,名称为cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
--定义变量,存放游标取出的数据
v_stuno varchar(4);
v_stuname varchar(20);
begin
--2.打开游标cur_stu
open cur_stu;
loop
--3.将游标的当前行取出存放到变量中
fetch cur_stu into v_stuno,v_stuname;
exit when cur_stu%notfound; --游标所指还有数据行,则继续循环
--打印结果
dbms_output.PUT_LINE(v_stuno||'->'||v_stuname);
end loop;
close cur_stu; --4.关闭游标
end;
END PROC_STU1_1;
二.隐式游标
1.使用演示
create or replace PROCEDURE PROC_STU4 AS
BEGIN
--隐式游标使用
update student set stuname='张燕广' where stuno='1104';
--如果更新没有匹配则插入一条新记录
if SQL%NOTFOUND then
insert into student(STUNO,STUNAME,AGE,GENDER)
values('1104','张燕广',18,'男');
end if;
END PROC_STU4;
2.说明
所有的SQL语句在上下文区内部都是可执行的,因为都有一个游标指向上下文区,此游标就是
SQL游标,与现实游标不同的是,SQL游标在PL/SQL中不需要打开和关闭,而是在执行UPDATE、
DELETE是自动打开和关闭。
上面例子中就是通过SQL%NOTFOUND游标属性判断UPDATE语句的执行结果决定是否需要插入新记录。

分享到:
评论

相关推荐

    ORACLE 游标学习笔记

    Oracle 游标是数据库编程中的重要概念,尤其在PL/SQL中,它们...以上就是关于Oracle游标的基本知识,包括隐式游标和显式游标的使用、属性以及在处理数据时的注意事项。理解并熟练运用游标是开发高效PL/SQL程序的关键。

    oracle笔记游标的使用

    oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!

    李兴华—oracle课堂笔记(全).rar

    笔记会讲述如何编写存储过程、函数、触发器,以及异常处理和游标的应用。 4. **数据库设计**:良好的数据库设计是系统性能的关键。笔记可能会涉及范式理论,如何进行规范化设计,以及反规范化在特定情况下的应用。 ...

    oracle学习笔记(从入门到精通)

    压缩包主要包括15个文档,主要是本人学习oracle过程中的笔记,希望对你有帮助:主要文档如下: 01-常用命令.txt 02-表空间建表.txt 03-基本查询语句学习笔记.txt 04-高级查询语句学习笔记.txt 05-锁和表分区学习...

    (转)最全的SQL(Oracle)笔记集录

    此外,可能还会讨论Oracle特有的特性和功能,如PL/SQL、游标、触发器、分区表和数据库设计原则。 【标签】:“源码 工具” 这两个标签暗示了笔记中可能包含了实际的SQL源代码示例,帮助读者更好地理解和应用理论...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    oracle经典笔记

    《Oracle经典笔记》是一份深度探讨Oracle数据库管理系统的综合学习资料。这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看...

    oracle学习笔记,介绍详细

    笔记将解释如何定义、调用和管理这些PL/SQL程序单元,以及如何使用游标、异常处理和包等高级特性。 数据库安全性是另一个重要话题。笔记会讲解如何创建和管理用户,以及权限和角色的分配,确保数据的安全访问。同时...

    数据库SQL oracle的笔记,比较全面的

    数据库SQL Oracle笔记全面解析 在IT领域,数据库是存储、管理与检索数据的核心工具,而Oracle作为世界上最流行的商业数据库管理系统之一,其强大的功能和广泛的应用使得掌握Oracle SQL变得至关重要。本笔记将涵盖...

    2011版李兴华主讲-ORACLE实战 最强大的数据库课程MLDN出品—oracle课堂笔记(全).rar

    课程的“oracle课堂笔记(全).pdf”文件很可能是详细的课后总结或讲义,包含了上述所有知识点的详细讲解和实例。通过学习这份资料,你可以巩固对Oracle的理解,提升解决实际问题的能力。 总的来说,这个2011年的...

    MLDN_Oracle学习笔记+源码 李兴华讲解

    《MLDN_Oracle学习笔记+源码 李兴华讲解》是针对Oracle数据库系统的一份详尽学习资源,由知名讲师李兴华精心编撰。这份资料不仅包含了丰富的理论知识,还提供了源代码实例,旨在帮助学习者深入理解和掌握Oracle...

    达内,tarena,oracle笔记,oraclePPT课件,达内oracle笔记

    笔记可能包括控制结构(如IF-THEN-ELSE、LOOP)、异常处理、游标以及PL/SQL块的结构。 5. **数据库管理**:管理Oracle数据库涉及备份恢复、性能监控、安全性设置等。Oracle提供RMAN(恢复管理器)进行备份和恢复...

    oracle笔记(存储过程函数触发器游标流程控制等)

    这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...

    Oracle笔记(基于尚学堂马士兵)

    本笔记主要基于尚学堂马士兵老师的教学内容,深入浅出地介绍了Oracle的基本概念、安装配置、SQL语言、表空间管理、索引优化、存储过程与函数、触发器、游标、事务控制以及数据库备份与恢复等多个方面。 一、Oracle...

    学费十万元人民币的oracle培训笔记!!!

    此外,可能会深入到PL/SQL编程,包括游标、异常处理、存储过程和函数的编写,这些都是Oracle数据库开发人员必备的技能。 Oracle的性能优化是培训的重点之一。笔记中可能会讲解如何通过SQL优化器、索引策略、表分区...

    Oracle数据库笔记-JackChiang.docx

    Jack Chiang的Oracle数据库笔记主要涵盖了Oracle数据库的基础知识、管理操作、性能优化以及一些常见问题的解决方案。以下是对这些知识点的详细阐述: 1. **Oracle数据库基础**:Oracle数据库采用SQL(结构化查询...

    Oracle 10g 学习笔记

    这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...

    Oracle数据库笔记共23页.pdf.zip

    另外,Oracle数据库提供了高级特性,如PL/SQL编程、存储过程、触发器、游标、数据库链接等。PL/SQL是Oracle的内置编程语言,它结合了SQL的查询能力与过程式编程的灵活性。存储过程和触发器可以实现复杂的业务逻辑,...

    2011MLDN李兴华Oracle课堂笔记

    9. **Oracle高级特性**:如物化视图、分区表、游标、存储过程和触发器的应用。 10. **故障诊断与解决**:通过日志分析问题,以及如何利用Oracle的工具进行问题定位和修复。 这些笔记可能还包含实际操作步骤、示例...

Global site tag (gtag.js) - Google Analytics