`
dr2tr
  • 浏览: 142300 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle Procedure (PL/SQL) 实践归纳(2)之Cursor的使用

阅读更多

基础:

首先是一般游标(cursor)定义方式:

cursor <cursor name> [(<list of parameters>)] is <select statement>;

其中的parameters会在selectstatment中用到。

<o:p> </o:p>

接着是有关于循环语句的使用,Oracle Tutorial里说:

PL/SQL provides while-loops, two types of for-loops, and continuous loops. Latter ones are used in combination with cursors. All types of loops are used to execute a sequence of statements multiple times.<o:p></o:p>

首先,while循环:

[<< <label name> >>]<o:p></o:p>

while <condition> loop<o:p></o:p>

<sequence of statements>;<o:p></o:p>

end loop [<label name>] ;

其中,label name主要是用来在exit的时候选择要跳出的循环的:

exit <label name>;

<o:p> </o:p>

然后是for循环,它与while的区别在于其可以控制循环次数:<o:p></o:p>

[<< <label name> >>]<o:p></o:p>

for <index> in [reverse] <lower bound>..<upper bound> loop<o:p></o:p>

<sequence of statements><o:p></o:p>

end loop [<label name>] ;

这里的index可以视为一个for内部的常量(不可改变),并且,它还会覆盖外部同名的量(It overrides the scope of any variable having the same name outside the loop.<o:p></o:p>

)。<o:p></o:p>

reserve的意思是循环从upper bound 开始到lower bound

<o:p> </o:p>

知道了循环的基本知识,继续有关cursor使用的问题:

在程序体里,要使用cursor,首先是open:

open <cursor name> [(<list of parameters>)] ;

open之后,cursor定义时的select语句就已经被执行。而游标指向结果集中的第一个。这样,就可以用fetch获得结果:

fetch <cursor name> into <list of variables>;

每执行一次fetch,游标就移向结果集中的下一个。(这也就是需要用到循环语句的地方了)

最后需要做的是关闭游标:

close <cursor name>;

<o:p> </o:p>

另外,在循环里可以用exit退出:<o:p></o:p>

exit [<block label>] [when <condition>]

如果block label没有写,那么就结束最近的循环。而condition里也可以写一些简单的条件值,比如<cursor name>%NOTFOUND<cursor name>%FOUND%ROWCOUNT%ISOPEN等。<o:p></o:p>

<o:p> </o:p>

forcursor结合使用,可以写成:<o:p></o:p>

[<< <label name> >>]<o:p></o:p>

for <record name> in <cursor name>[(<list of parameters>)] loop<o:p></o:p>

<sequence of statements><o:p></o:p>

end loop [<label name>];<o:p></o:p>

 

<o:p> </o:p>

如果发现定义cursor比较麻烦,还可以在for里直接写select函数:<o:p></o:p>

[<< <label name> >>]<o:p></o:p>

for <record name> in <cursor name>[(<list of parameters>)] loop<o:p></o:p>

<sequence of statements><o:p></o:p>

end loop [<label name>];

比如:<o:p></o:p>

for sal_rec in (select SAL + COMM total from EMP) loop<o:p></o:p>

. . . ;<o:p></o:p>

end loop;

注意上面斜体的别名total算是一个小技巧,以后要调用结果集,就可以使用sal_rec.total的形式。<o:p></o:p>

 
这个语句已经自动包括了cursoropen, close等操作,并且,在没有数据的情况下,其自动调用exit<o:p></o:p>
分享到:
评论

相关推荐

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    Oracle PL/SQL学习官方教材

    13. **PL/SQL与Java、.NET等其他平台的集成**:讲解如何使用Oracle的JDBC驱动或ODP.NET与PL/SQL交互,实现跨平台的应用程序开发。 14. **最佳实践**:教材可能还会提供编写高效、可读性强、易于维护的PL/SQL代码的...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...

    oracle pl sql 实例精解 源代码

    这些练习通常设计得具有实际意义,旨在巩固每章学习的知识点,包括变量声明、条件语句(如IF-THEN-ELSIF)、循环(如FOR、WHILE)、游标(CURSOR)的使用、过程(PROCEDURE)和函数(FUNCTION)的创建以及异常处理...

    ORACLE8 PLSQL程序设计_sql_code.zip_oracle pl/sql_pl sql code_pl/sql_

    7. **PF**: "PF"可能是"Procedure or Function"的简写,05-PF.SQL可能展示了如何定义和使用PL/SQL中的过程和函数。 8. **EXAMP**: 06-EXAMP.SQL、10-EXAMP.SQL以及04-LOOP.SQL可能包含各种PL/SQL编程示例,如控制...

    ORACLE PL/SQL命令集

    通过深入学习和实践这些知识点,你将能够编写出高效、可靠的PL/SQL代码,从而在Oracle数据库管理、应用开发等领域得心应手。记住,理论知识与实际操作相结合是提升技能的关键。祝你在Oracle PL/SQL的学习旅程中取得...

    Oracle PL/SQL编程

    4. **子程序**:PL/SQL支持函数(Function)和过程(Procedure)的定义,它们可以封装重复使用的代码。函数返回一个值,而过程不返回值,但可以修改输入参数的值。 5. **异常处理**:通过BEGIN...EXCEPTION部分,...

    pl_sql基本语法例子.rar_SQL2569_oracle_pl/sql_plsql增删改查

    PL/SQL是Oracle数据库系统中的一个重要组成部分,它是一种结合了SQL与过程编程的语言,用于在Oracle环境中编写存储过程、函数、触发器...通过深入学习和实践,可以充分利用PL/SQL的强大功能来管理和操作Oracle数据库。

    PL/SQL 核心基础代码

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它集成了SQL语言的查询功能和过程性编程语言的控制结构,主要用于编写数据库应用程序。本资源"PL/SQL 核心基础代码"是针对...

    PL/SQL学习笔记

    PL/SQL中的SELECT语句可以返回结果集,可以使用游标(Cursor)来处理这些结果集。游标可以是显式的也可以是隐式的。显式游标需要显式地声明、打开、提取数据和关闭。游标的属性包括%NOTFOUND、%FOUND、%ISOPEN和%...

    PL/SQL基础

    **PL/SQL基础** PL/SQL,全称是Procedural Language/Structured Query Language,是...对于初学者,实践是掌握PL/SQL的最佳途径,你可以尝试创建自己的存储过程、函数,或者解决实际问题,这样会更有利于理解和记忆。

    PL/SQL Developer V14.0.2.1969 x86/x64 最新官方多语言注册版(含中文)2020.08.22 官方更新

    1. **变量和数据类型**:PL/SQL支持多种数据类型,如数值型(NUMBER)、字符型(VARCHAR2, CHAR)、日期型(DATE)、布尔型(BOOLEAN)等,以及复合数据类型如记录(RECORD)和游标(CURSOR)。 2. **控制流语句**...

    全面对比T-SQL与PL/SQL

    T-SQL 是微软公司开发的 SQL Server 数据库管理系统的脚本语言,而 PL/SQL 是 Oracle 公司开发的 Oracle 数据库管理系统的脚本语言。 数据类型 在 T-SQL 中,numeric(p,s) 用于定义一个带有精度和小数位的数字类型...

    pl/sql

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库的一种扩展语言,它将SQL(结构化查询语言)与过程编程语言相结合,为数据库管理提供了更强大的功能。在PL/SQL中,你可以编写复杂的...

    PL/SQL使用详解

    总的来说,这个"PL/SQL使用详解"文档应该是全面介绍PL/SQL语言特性和实践应用的指南,无论你是初学者还是经验丰富的开发者,都能从中获得宝贵的知识和技巧。通过深入学习和实践,你可以更好地掌握PL/SQL,从而在...

    pl/sql学习笔记

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一个编程环境,它结合了SQL的查询...通过阅读和实践这些笔记,开发者可以更好地掌握PL/SQL,从而更高效地操作和管理Oracle数据库。

    Oracle9i PL/SQL程序设计,存储过程、包、数据库触发器设计,PPT

    Oracle9i PL/SQL程序设计是数据库开发中的一个重要领域,主要涉及存储过程、包和数据库触发器等核心概念。这些工具允许开发人员在数据库层面上编写逻辑,提高应用程序的性能和效率。 1. 存储过程: 存储过程是预先...

    PL/SQL教程

    综上所述,PL/SQL是Oracle数据库开发的核心技术之一,通过学习PL/SQL,开发者可以更好地管理和操纵数据库,提升应用程序的性能和可靠性。"PL SQL培训教程"这个PPT文档很可能是针对初学者的入门指南,涵盖了上述概念...

    PL/SQL学习资料

    PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它集成了SQL语言和过程编程语言的特性,使得开发者能够编写复杂的数据库应用程序。在Oracle环境中,PL/SQL是进行数据处理...

    精通Oracle 10g Pl/SQL编程

    ### 精通Oracle 10g Pl/SQL编程 #### 一、Oracle 10g简介 Oracle 10g是Oracle公司推出的第10代数据库产品,“g”代表网格计算(Grid Computing)。它是Oracle公司在数据库技术上的一个重要里程碑,为用户提供了更...

Global site tag (gtag.js) - Google Analytics