- 浏览: 1730948 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (288)
- java (59)
- javaweb (15)
- eclipse (16)
- uml (1)
- java ee (7)
- windows (5)
- html (4)
- 数据结构和算法 (6)
- oracle (84)
- struts (3)
- ajax (3)
- hibernate (3)
- spring (12)
- ExtJS (14)
- 随笔 (2)
- JavaScript (9)
- PL SQL (12)
- tomcat (2)
- Plugins (5)
- office (2)
- webService (4)
- others (9)
- htc (1)
- 自定义标签的行为 (1)
- powerDesigner (3)
- webSphere (5)
- linux (6)
- dom4j (1)
- xml (5)
- json (2)
- bat (4)
- spring MVC (5)
- MySQL (12)
- junit (4)
- maven (10)
- jquery (1)
- mongoDB (16)
- git (0)
- mybatis (5)
- svn (3)
- activemq (3)
- quartz_job (1)
最新评论
-
白天看黑夜:
PDMReader实现pdm建模快速导出word,html文件 ...
利用powerDesigner逆向导出oracle表为PDM并把PDM转为CDM -
sanshao:
roompig 写道beancopier只实现了浅拷贝的功能, ...
使用Cglib的BeanCopier实现Bean的拷贝 -
贝塔ZQ:
Java实现导入导出excel文件,利用poi实现感觉代码比较 ...
利用java导入导出excel到oracle数据库 -
suxj16:
部署之后启动有问题org.springframework.be ...
spring mvc文件上传实现进度条(转) -
suxj16:
谢谢分享。部署之后启动有问题org.springframewo ...
spring mvc文件上传实现进度条(转)
1、游标的概念
cursor:实际上是一块内存工作区,用来存放DML或者select操作的结果。
2、游标的分类:
隐式游标:声明、打开及管理都是Oracle自动维护的,通常用来处理DML操作或者返回单行的select。
隐式游标的几个属性:
%Rowcount:会返回最近执行的一条SQL语句所影响的记录行数。
%Found:
%Notfound:
%isOpen:
%前缀为SQL
练习:使用替代变量删除指定部门的员工,并显示删除的员工数量。
Begin Delete From emp Where deptno = &dept; dbms_output.put_line('删除的员工数为:'||sql%rowcount); End;
显式游标:声明、打开及管理都是需要程序员手动操作的。通常用来处理查询结果是多行或零行的情况。
1、声明:在declare部分使用:
Cursor 游标名 Is 查询语句;
注意:查询语句不能带into子句。
cursor emp_cursor is select empno,ename from emp ;
2、打开:
语法:open 游标名; 写在begin块中。
打开游标实际上就是相当于执行游标所对应的查询语句,并且把查询结果集放入到内存中。
3、提取数据:
语法:fetch 游标名 Into 变量名列表|记录型变量 ,写在begin块,该语句通常是放在一个循环中。
第一次提取数据之前游标的指针指向第一行,然后每执行一次提取,指针自动向下移动一行。
注意:变量名列表一定要和游标声明时所对应的查询语句中的列的个数及数据类型保持一致。
如果变量为记录型变量,那么该变量的内部分量一定要和游标声明时所对应的查询语句中的列的个数及数据类型保持一致。
游标指针只能向下移动。
4、关闭游标:
语法:close 游标名;相当于释放内存。
显示游标的几个属性:
%Rowcount:返回的是已经从游标中提取到的记录行数。
%Found:
%Notfound:
%isOpen:
%前缀为游标名
练习:使用游标,遍历出所有部门平均工资在1000以上的部门ID,部门名称,平均工资及人数。
Declare Cursor avg_cursor Is Select e.deptno,dname,Avg(sal) ,Count(empno) From emp e ,dept d Where e.deptno = d.deptno Group By e.deptno,d.dname Having Avg(sal)>1000; v_deptno dept.deptno%Type; v_dname dept.dname%Type; v_avgsal emp.sal%Type; v_count Number; Begin Open avg_cursor; Loop Fetch Avg_cursor Into v_deptno,v_dname,v_avgsal,v_count ; Exit When avg_cursor%Notfound; dbms_output.put_line('部门编号为'||v_deptno'||的部门名称为'||v_dname||',其平均工资为:'||v_avgsal||',人数为'||v_count); End Loop; Close avg_cursor; End;
5、几种方便使用游标的方式。
a.游标和记录
1.使用游标名%Rowtype 声明一个记录型变量。
2.直接使用fetch 游标名 Into 记录型变量名。
b.游标式的For循环
语法:
For 记录型变量名 In 游标名 Loop
循环体;
End Loop;
说明:记录型变量名不用事先声明。
此种写法,oracle会自动打开游标,从游标中提取数据,关闭游标。
c.游标式的for循环
可以直接省略游标的声明,把游标所对应的SElect语句直接放到for循环的in子句中,注意要在两端加上括号。
练习:使用游标式的For循环,遍历出所有员工姓名,所在部门名称,即使这个员工没有部门。
Begin For avg_record In ( Select ename,dname From emp e ,dept d Where e.deptno = d.deptno(+) ) Loop dbms_output.put_line('部门编号为'||avg_record.ename||'的部门名称为'||avg_record.dname); End Loop; End;
6、带参数的游标
a、游标声明时和以前有变化,需要在游标名后面指定形式参数列表。
b、在打开游标时,需要给形式参数赋予响应的实参列表。
c、提取数据以及关闭游标和先前没有变化。
7、for Update [Of Column Reference] [Nowait]:该子句用来给游标所对应的查询加锁的。
8、where Current Of 游标名:用来标示从游标中取出的当前行。
练习:判断每个部门的工资总和,如果大于10000,则给该部门的人员工资增加10%,否则增加20%。
Declare Cursor sumsal_cursor Is Select Sum(sal) sumsal,deptno From emp Group By deptno For Update; Begin For r_1 In sumsal_cursor Loop If r_1.sumsal >10000 Then Update emp Set sal = sal*1.1 Where deptno = r_1.deptno; Else Update emp Set sal = sal*1.2 Where deptno = r_1.deptno; End If; End Loop; End ;
发表评论
-
日期差的天时分秒表示SQL(转)
2015-01-09 14:47 2432文章出自:http://blog.csdn.net/ ... -
MySQL分组后排序的问题(转)
2014-05-21 11:31 1722文章出自:http://zhidao.baidu.co ... -
在oracle的decode函数中实现like相同操作
2014-03-28 14:37 10906在oracle的decode函数中不能使用like操作 ... -
45个非常有用的Oracle查询语句分享
2014-03-17 13:41 972文章出自:http://tech.it168.com ... -
能使 Oracle 索引失效的七大限制条件
2014-03-17 13:11 6229文章出自:http://tech.it168.com/ ... -
oracle存储过程异常处理及时间戳变量类型
2014-03-15 18:02 3114下面通过一个简单 ... -
对只转发结果集的无效操作: isLast
2014-03-13 14:19 2728在遍历结果集的时候,用rs.isLast()来判断是否到达 ... -
oracle连接DBLINK报错:ORA-12154: TNS:could not resolve service name的解决办法(转)
2014-01-13 15:56 3158文章出自:http://blog.csdn.net/x ... -
查看oracle enterprise manager端口的途径(转)
2014-01-13 12:04 1334文章出自:http://www.myexception ... -
利用java导入导出excel到oracle数据库
2013-12-05 14:46 8643用到的JAR包如下(可以直接到POI官网上下载也可以 ... -
WebSphere+Oracle乱码问题解决
2013-11-26 15:01 1581环境介绍: Web容器(中间件):W ... -
v$session 的权限(转)
2013-11-15 13:32 1835文章出自:http://blog.csdn.net/x ... -
Oracle中查看所有表和字段(转)
2013-08-29 11:48 1258文章出自以下两个网站: Oracle中查看所有表和字 ... -
oracle杀掉正在运行的存储过程
2013-08-28 16:05 3268本篇文章主要介绍如何kill掉一个正在运行的存储过程, ... -
oracle中v$access视图介绍
2013-08-28 15:49 8491如果想了解如果杀掉一个正在运行的存储过程,请查询这篇 ... -
oracle 临时表介绍(整合)
2013-08-27 11:14 2482在工作中用临时表从A库到B库导入LOB(大)字段,用临 ... -
oracle 的连接操作(left jion,right jion, full jion)
2013-06-14 12:52 25441.创建测试表 -- Create table ... -
如何查看oracle的版本信息(转)
2013-05-07 08:30 1221文章出自: http://blog.sina.com. ... -
oracle触发器实践(增,改,删)
2013-04-27 14:02 1396实现对某个表的增改删的监控操作,并记录到另一个表中. ... -
Oracle如何正确删除archivelog文件(转)
2013-04-10 13:29 2961文章出自 : http://cac ...
相关推荐
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
4. **CV1**: "CV1"可能代表"Cursor Variable 1",04-CV1.PC可能涉及到如何声明和使用游标变量,这是PL/SQL中处理查询结果集的常见方法。 5. **PRCMP**: "PRCMP"可能指的是过程或函数的编译,07-PRCMP.PC可能涵盖...
PL/SQL还提供了游标(CURSOR)机制,允许我们逐行处理查询结果。此外,PL/SQL还支持集合类型,如VARRAY(可变数组)和TABLE(表类型),这对于处理大量数据非常有用。 这本书的配套源代码可能会涵盖以下几个方面: ...
Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...
4. **游标**:在处理大量数据时,游标(Cursor)是非常重要的工具。教材会介绍如何声明、打开、提取和关闭游标,以及如何在循环中使用游标遍历结果集。 5. **记录和表操作**:PL/SQL提供了内置的DML(数据操纵语言...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和Procedural Language的编程结构,用于在Oracle数据库环境中创建复杂的应用程序。在"Oracle PL/SQL实例精讲student数据库模式"中,我们将深入探讨...
PL/SQL是Oracle数据库系统中的一个重要组成部分,它是一种结合了SQL与过程编程的语言,用于在Oracle环境中编写存储过程、函数、触发器等数据库对象。本资料主要涵盖了PL/SQL的基本语法以及数据的增删改查操作和视图...
Oracle中的PL/SQL是一种强大的编程语言,它是Oracle数据库与应用程序之间的桥梁,专为数据库操作而设计。PL代表“过程化语言”(Procedural Language),SQL则是“结构化查询语言”(Structured Query Language)。...
Oracle 教案:深入理解 Oracle 存储过程、游标与 SQL 语句及 PL/SQL Oracle 是全球领先的数据库管理系统提供商,不仅提供数据库产品,还包括中间件、云计算服务等全面的企业级解决方案。"Oracle"一词源于古希腊神话...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与Procedural Language的控制结构,被广泛用于Oracle数据库的开发和管理。本资料集是"Oracle PL/SQL实例精解",提供了丰富的源代码示例,帮助读者深入...
Oracle数据库是世界上最广泛使用的数据库系统之一,而PL/SQL则是Oracle特有的编程语言,用于处理数据库中的数据。在本文中,我们将深入探讨PL/SQL以及Oracle数据库中的一些常见实用语句。 PL/SQL全称为Procedural ...
Oracle PL/SQL 学习指南 Oracle PL/SQL 是一种功能强大且灵活的编程语言,广泛应用于 Oracle 关系数据库管理系统中。本学习指南旨在帮助读者快速掌握 PL/SQL 的基础知识和高级技术。 PL/SQL 区块(BLOCK)的结构 ...
在PL/SQL中,可以使用显式游标(Explicit Cursor)或隐式游标(Implicit Cursor)。 - 隐式游标是由数据库自动管理的游标,用于处理SELECT语句返回单行数据的情况。 - 显式游标需要用户在PL/SQL代码中声明、打开、...
Web PL/SQL报表制作过程是一种将数据库数据转化为用户友好、可编辑的HTML报表的方法,它结合了HTML语言和PL/SQL编程,使得开发者能够创建直观且实用的在线报表。以下是对这一过程的详细说明: 1. **制作报表模板**...
《PL/SQL精通》这本书是针对Oracle数据库管理系统中PL/SQL编程语言的深入学习指南。Oracle SQL是Oracle数据库系统的核心语言,而PL/SQL则扩展了SQL的功能,提供了过程化编程的能力,使得数据库管理和开发更加高效和...
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
Oracle PL/SQL 游标的学习 游标是 Oracle PL/SQL 中的一个重要概念,它允许用户访问和操作结果集中的数据。游标可以理解为是一个映射在结果集中的一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它集成了SQL语言的查询功能和过程性编程语言的控制结构,主要用于编写数据库应用程序。本资源"PL/SQL 核心基础代码"是针对...
PL/SQL中的SELECT语句可以返回结果集,可以使用游标(Cursor)来处理这些结果集。游标可以是显式的也可以是隐式的。显式游标需要显式地声明、打开、提取数据和关闭。游标的属性包括%NOTFOUND、%FOUND、%ISOPEN和%...
此外,PL/SQL还有游标(CURSOR),用于逐行处理查询结果。游标通常与FOR循环一起使用,以遍历和操作查询结果集。 最后,PL/SQL中的事务管理也是关键。你可以使用`COMMIT`提交事务,`ROLLBACK`回滚事务,或者`...