- 浏览: 435685 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (377)
- Java (66)
- C++ (0)
- VC++ (0)
- .net (1)
- css (36)
- 数据库 (22)
- html (2)
- extjs (1)
- jpbm (0)
- javascript (31)
- 物资管理 (1)
- java基础 (5)
- C# (0)
- Android (56)
- window service (1)
- 其他 (2)
- Web服务器 (7)
- jbpm (1)
- eclipse (2)
- tomcat (3)
- java字符串与二进制的相互转化 (1)
- Oracle 数据库 (6)
- FreeMarker (8)
- 浏览器 (1)
- php (1)
- photoshop (6)
- spring (4)
- spring mvc (2)
- Acegi (1)
- webStorm 3.0 (4)
- Mongodb (8)
- mysql (9)
- 软件开发:需求分析 (1)
- 把Java程序作为Windows系统服务 (1)
- nodejs (4)
- json (1)
- 缓存 (1)
- J2ee (2)
- Flash报表 (1)
- MyEclipse+Maven+Tomcat (11)
- 生活 (1)
- Ubuntu (1)
- Bootstrap (1)
- jquery easy ui (2)
- 敏捷开发 (1)
- phone gap (1)
- rest (1)
- 移动开发 (22)
- Redis + Jedis + Spring (3)
- anroid (7)
- grunt 教程 (7)
- PhoneGap (2)
- sublime text (7)
- mariadb (1)
- linux (1)
- maven (2)
- jquery (1)
- ActiveMQ (1)
- LVS Nginx (1)
- nginx (6)
- ngnix (1)
- 爱因斯坦 (1)
- 天干地支 (1)
最新评论
-
muqingren:
...
Maven多模块布局实例详解 -
shutear:
解决了我的难题,谢谢分享!
Unable to load configuration. - action - file:/D:/studytool/apache-tomcat-6.0.16 -
702346318:
[img][/img][flash=200,200][/fla ...
CAS单点登录完整教程(上)【转】 -
liuguofeng:
PersonS631887934 写道学习中。。 有个问题想请 ...
js constructor属性 -
S631887934:
学习中。。 有个问题想请教楼主为什么要加上Person.pro ...
js constructor属性
ORACLE 游标 一. PL/SQL 是用游标来管理 SQL 的 SELECT 语句的 . 游标是为了处理这些语句而分配的一大块内存 . 它提供了对一个结果集进行逐行处理的能力 , 可看作是一种特殊的指针 . 它与某个查询结果集相关联 , 可以指向结果集的任意位置 , 以便对指定位置的数据进行处理 . 使用它可以在查询数据的同时对数据进行处理 . 二. 游标的分类 : 静态游标和动态游标 1. 在说明游标分类之前, 先说明一下PL/SQL 的两个操作, 游标属性, 变量属性 SET SERVEROUTPUT ON ;-- 此语句用于开启打印输出功能 DMBS_OUTPUT.PUT_LINE();-- 打印输出并换行. %FOUND: 判断当前游标是否指向有效的一条行记录. 是则返回TRUE, 否则返回FALSE %NOTFOUND: 与%FOUND 恰好相反. %ISOPEN: 判断游标是否打开, 打开则返回TRUE, 否则返回FALSE. %ROWCOUNT: 判断当前游标在所指向的结果集中提取的行数. 并非所有总记录数 %TYPE: 声明变量的类型与表中的某列的数据类型完全一致.%TYPE 声明有两个好处: 一是你不必知道某列的确切数据类型二是当某列的数据类型改变时不用修改变量的数据类型. %ROWTYPE: 声明变量的数据类型与表中的行记录数据类型一致. 对于自定义的记录, 则必须声明自己的域. 2. 静态游标: 静态游标又可以分为两类: 1) 隐式游标 隐式游标的特点: - 隐式游标是由PL/SQL 来管理的, 即不需要声明游标语句, 也不需要OPEN,FETCH,CLOSE 操作 - 隐式游标中必须要有select cur_name into [ 变量名或其他数据类型]. 此句完成OPEN,FETCH,CLOSE 操作. - 隐式游标只能返回一行记录, 如果无符合条件的记录将会出现NO_DATA_FOUND 异常. 如果出现多条记录将出现TOO_MANY_ROWS 异常. - 隐式游标只能用SQL% 判断其游标属性 - 对于任何位置使用SQL%ISOPEN 结果都是FALSE, 隐式游标由PL/SQL 管理 - 对于在隐式游标位置前使用SQL%FOUND 或SQL%NOTFOUND, SQL%ROWCOUNT 结果值是NULL( 不确定值) 示例表: 表名:test 字段名 数据类型 可否为空 id( 序号) number N name( 姓名) varchar2(20) N zym( 专业名) varchar(40) Y cj( 成绩) number Y logdate( 记录日期) date Y EG1: 验证隐式游标的特性 set serveroutput on;-- 开启输出 declare no test.id%type;-- 声明变量no 的数据类型同test 表的id 列一致 ename test.name%type; begin if sql%isopen then -- 判断游标是否打开 dbms_output.put_line(' cursor is openning'); else dbms_output.put_line('cursor is closed'); end if; if sql%notfound then – 判断游标是否指向有效的行 dbms_output.put_line('no value'); else dbms_output.put_line(no||' '||ename); end if; dbms_output.put_line(sql%rowcount); dbms_output.put_line('---------------'); select id ,name into no ,ename from test where cj=90;-- 隐式游标必-- 须使用INTO dbms_output.put_line(sql%rowcount); if sql%isopen then dbms_output.put_line(' cursor is openning'); else dbms_output.put_line('cursor is closed'); end if; if sql%notfound then dbms_output.put_line('no value'); else dbms_output.put_line(no||' '||ename); end if; exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; 执行结果为: cursor is closed -------------------- 1 cursor is closed 1001 qbnajj 去掉where 条件时的结果: cursor is closed -------------------- too many rows EG2: 使用%ROWTYPE declare rowtype test%rowtype; begin select * into rowtype from test where cj=90; dbms_output.put_line(rowtype.name||' '||rowtype.cj); exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; 执行结果: qbnajj 90 EG3: 自定义RECORD 数据类型 declare type r_type is record(name test.name%type ,cj test.cj%type); re_type r_type; begin select name,cj into re_type from test where cj=90; dbms_output.put_line(re_type.name||' '||re_type.cj); exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; / 执行结果: qbnajj 90 2) 显示游标 声明语法: DECLARE CURSOR cur_name( 参数名 数据类型) is select_satatements ;-- 游标名后-- 可带参数 BEGIN OPEN cur_name; FETCH cur_name into [ 变量或者其他数据类型]; -- 可用循环语句迭代输出游标所指向的结果集. CLOSE cur_name; END; 显示游标特性: - 显示游标由用户定义, 并由用户来管理游标, 可返回多行记录. - 通常使用显示游标需要遵守以下规则 声明游标 -> 打开游标 -> 读取数据 -> 关闭游标 但由于FOR IN LOOP 语句包含OPEN,FETCH,CLOSE 操作所以不在此例. - 查看游标属性时, 使用cur_name%. EG:PL/SQL 演示 declare no test.id%type; ename test.name%type; cjs test.cj%type; cursor test_cur is select id,name from test where cj>=cjs;-- 可通过PL/SQL 绑定变量输-- 入值(&cjs) begin cjs:=50; for t_cur in test_cur loop no:=t_cur.id; ename:=t_cur.name; dbms_output.put_line(no||' '||ename); end loop; end; 执行结果: chenjunhua 80 qbnajj 90 cjh 52 EG2: 利用带参数的存储过程演示 create or replace procedure test_proce(cjs in test.cj%type) as no test.id%type; ename test.name%type; cursor test_cur is select id,name from test where cj>=cjs; begin open test_cur; fetch test_cur into no,ename; while test_cur%found loop dbms_output.put_line(no||' '||ename); fetch test_cur into no,ename;-- 将游标指向下条记录, 否则为死循环. end loop; close test_cur; end test_proce; exec test_proce(50); 执行结果: chenjunhua 80 qbnajj 90 cjh 52 EG3: 带参数的游标与上面的类似
发表评论
-
数据库悲观锁和乐观锁
2014-07-06 17:48 597一下是转载的oracle和Mysql两种数据库悲观锁和乐观锁 ... -
Mysql常用命令七(MySQL的优化方法)
2014-10-28 09:36 1129MySQL的优化 一、我们可以且应该优化什么? 硬件 操作 ... -
mysql 中 时间和日期函数
2014-10-28 09:36 593mysql 中 时间和日期函数 一、MySQL 获 ... -
Oracle创建用户/密码并授权 移除权限
2012-03-09 14:07 3215Oracle创建用户/密码并授权 (1) 创建用 ... -
数据字典和动态性能视图
2011-07-01 11:33 1126最近开始学习oracle,现把笔记一分享如下. 一.数据字 ... -
在Oracle的函数中,返回表类型
2011-07-01 11:31 1339在SQL Server中有表变量,可以在functio ... -
Oracle 系统表大全
2011-07-01 11:27 8731、用户: select username from db ... -
Oracle SEQUENCE
2011-07-01 11:25 9541.创建SEQUENCE(自增长列 与表无关) CRE ... -
16种oracle查询日期语句
2011-07-01 11:24 1426查询日期是使用oracle数据库过程中经 ... -
sql 2005 索引优化
2011-03-07 10:35 913(一)深入浅出理解索 ... -
oracle定义变量
2010-11-02 23:20 2658------------------------------ ... -
Oracle使用手册(一)---声明变量
2010-11-02 23:13 1712Oracle使用手册(一)---声明变量 /**//* --建 ... -
ORACLE函数大全
2010-09-21 13:11 893SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制 ... -
Oracle 中的 dual 表是干什么的
2010-09-21 11:29 1162dual是一个虚拟表,用来构成select的语法规则,orac ... -
SQL优化34条(一)
2010-09-21 11:27 773我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为 ... -
oracle联机日志文件恢复
2010-09-16 22:13 1058SQL> shutdown immediate ... -
Oracle 日志文件错误的处理
2010-09-16 22:12 1106转自:http://hi.baidu.com/da ... -
MySQL性能优化的最佳20+条经验
2010-09-16 16:05 817今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于We ... -
Oracle SQL优化34条(二)
2010-09-16 15:55 855(17) 用索引提高效率: 索引是表的一个概念部分,用来提高检 ... -
oracle客户端配置
2010-09-16 09:25 2193本帖最后由 落↓孤❤寒 于 2010-7-17 13:16 ...
相关推荐
oracle游标变量和数据包
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或...
在PL/SQL中可以使用游标处理数据。通过使用游标可以大大提高PL/SQL程序对数据...本章将主要介绍如何使用显式游标进行多行数据的查询、游标FOR循环以及游标变量的使用,另外还将介绍游标属性以及嵌套游标的使用等内容。
Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标Oracle_的存储过程及游标
本文实例讲述了Oracle存储过程游标用法。分享给大家供大家参考,具体如下: 使用游标的5个步骤 1、声明一些变量用于保存select语句返回的指 2、声明游标,并指定select 语句 3、打开游标 4、从游标中获取记录 5、...
一点关于oracle的练习题!较难~慢慢看吧!~受打击了别管我啊!!!!
包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块
文章目录游标1.1 显式游标1.1.1 创建游标1.1.2 打开游标1.1.3 获取数据1.1.4 关闭游标1.1.5 使用实例1.2 隐式游标1.2.2 游标属性1.3 FOR游标1.4 游标变量1.4 游标表达式1.5 动态游标 游标 游标是一个指针,指向一块...
Oracle PL/SQL语言初级教程 1 目录 1 1.PL/SQL语言基础 3 过程 5 包(package) 6 变量和常量 6 执行部分 10 控制结构 12 小结 17 2.PL/SQL的复合数据类型 17 使用记录 19 PL/SQL集合 23 嵌套表 24 使用集合 25 集合的...
Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/SQL 游标的使用 Oracle笔记 十、PL/SQL存储过程 Oracle笔记 十一、...
详细的记录了C#如何调用oracle以及带有存储过程输出变量的方法,适合初学者。
Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/SQL 游标的使用 Oracle笔记 十、PL/SQL存储过程 Oracle笔记 十一、...
№1声明一些变量,用于保存select语句的返回的列值 8 №2声明游标,并指定select语句 8 №3打开游标 8 №4从游标中获取记录 9 №5关闭游标 9 №6完整的示例 9 №7游标与for循环 10 6 异常 10 7 存储过程 11 №1创建...
/* 小弟刚刚接触ORACLE存储... –这个变量就是用来存放所要取得的字段内容,但不知该如何定义 cursor curSort1 is select 服务类型 from tabname order by 编码; –此语句也不对提示找不到表名 begin …..
结合实例,介绍了oracle存储过程的用法,包括定义,变量类型,游标,流程分支语句的使用
第1章-Oracle 11g数据库简介 认识Oracle 11g 回忆Oracle的产品版本 学习Oracle 11g的新特性 第2章-Oracle 11g的安装与测试 能够使用Oracle 11g的基本条件 在Windows 2003上安装Oracle 11g 移除Oracle 11g ...
这是我学习Oracle时,老师给的讲义,包含了Oracle从入门到高级应用的全部资料。 以下是文件列表 Day01-Oracle基础.pdf ...Day10-变量定义和循环控制.pdf Day11-plsql游标和函数.pdf Day12-触发器.pdf Day13-索引.pdf
oracle数据库存储的语法,使用方法,定义变量,申明变量,游标以及完整的范例,仅供大家参考学习,谢谢大家
4.2.5 游标变量 4.3 过程 4.3.1 创建过程 4.3.2 调用过程 4.3.3 删除过程 4.3.4 过程的参数类型及传递 4.4 函数 4.4.1 创建函数 4.4.2 调用函数 4.4.3 删除函数 4.5 程序包 4.5.1 基本原理 ...