oracle 游标简单示例
1.游标的概念以及作用
游标(Cursor)可以使用户想操作数组一样对查询出来的结果集进行操作,可以形象的看做一个变动的光标,其实际行是一个指针,它在一段Oracle存放数据查询结果集或数据
操作集的内存中,这个指针可以指向结果集的任何位置。
分类: 分为静态游标和ref游标(暂不做介绍)。静态游标 又分为 显示游标和隐式游标 ,隐式游标它是被oracle自动管理的 ,不需要详细的去了解只需要 知道怎么用就可以了。
显示游标:就是我们普遍使用的。就是在使用之前有着明确的定义,一般都会关联数据查询语句,返回一行或多行记录。
使用步骤:1.声明游标 2.打开游标 3.提取数据 4.关闭游标
语法结构:简单语法结构如下代码示例
DECLARE CURSOR cursor_name
--1.声明名为cursor_name 的游标
IS
--与之关联的sql语句
SELECT ID ,NAME ,score FROM TABLE ;
--声明了一个与数据表字段name类型一样的变量myname
myname tablename.name%TYPE;
--声明了一个可以去表中一行记录的变量
myrow tablename%ROWTYPE;
BEGIN
--2.打开游标
OPEN cursor_name;
--3.提取数据
FETCH CURSOR INTO myrow;
dbms_output.put_line(myrow.name||'---'||myrow.id); --4.关闭游标
CLOSE cursor_name;
END;
通常显示游标提取的数据不会只有一条,所有想遍历其结果集就需使用loop
下边创建一张简单的数据表,使用loop游标操作数据
CREATE TABLE cur_test_student(
--创建简单的测试表 id号, 名字 ,分数 ,科目,年龄
sid NUMBER(8) PRIMARY KEY,
sname VARCHAR2(10) NOT null,
score NUMBER(8) NOT null,
subject Varchar2(20),
sage NUMBER(8)
);

loop游标示例:
DECLARE CURSOR cur_score
--声明游标查询某一科目所有学生的name和score
IS
SELECT sname,score FROM cur_test_student WHERE subject='语文';
namee cur_test_student.sname%TYPE;
sco cur_test_student.score%TYPE; BEGIN
OPEN cur_score;
LOOP
--提取数据保存到两个变量中
FETCH cur_score INTO namee,sco;
--隐式游标判断当没有数据是退出循环
EXIT WHEN cur_score%NOTFOUND;
dbms_output.put_line(namee||'----------'||sco); END LOOP;
CLOSE cur_score;
END;
for循环游标:
游标for循环是在pl/sql块中使用游标最简单的方式,它简化了对游标的处理。当使用游标for循环时,oracle会隐含的打开游标,提取游标数据并关闭游标。
DECLARE CURSOR cur_score
--声明游标查询某一科目所有学生的name和score
IS
SELECT sname,score FROM cur_test_student WHERE subject='语文';
BEGIN
FOR student_recode IN cur_score LOOP dbms_output.put_line(student_recode.sname||'---'||student_recode.score); END LOOP;
END;
注意两种写发的不同之处:在for循环的游标中没有 打开游标 关闭游标等四部操作,很多工作oracle隐式的帮我们执行了 也不需要判断合适退出等工作。
这种写法比简单明了。
带参数的游标
使用游标是可以指定参数,可以传入多个参数 方便多条件查询,在存储过程中也可以方便的使用
DECLARE CURSOR cur_score(sub VARCHAR2) IS
SELECT sname ,score FROM cur_test_student WHERE subject=sub;
BEGIN
FOR score_recode IN cur_score('语文')LOOP
dbms_output.put_line(score_recode.sname||'---'||score_recode.score);
END LOOP;
END;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
oracle 游标简单示例的更多相关文章
- oracle 游标简单案例
oracle 游标简单案例 一.案例: DECLARE IDO NUMBER; DABH CHAR); t_count ); CURSOR TJ_CURSOR IS SELECT IDO,DABH ...
- 在PYTHON中,用cx_Oracle连接ORACLE数据库简单示例
一,在安装的时候,参数有点不一样: python setup.py build install 二,连接数据库,有两种方式,DSN和TNSNAMES方式: #dsn = orcl.makedsn(se ...
- Oracle 游标示例,带异常处理
Oracle游标示例一则,带异常处理. DECLARE CURSOR c_dl IS SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ F ...
- Oracle游标的使用示例
此文是使用Oracle游标的几种方式,for...in会自动打开游标,fetch...into需要手动打开游标,游标类似于一个只会往前移动的指针,每次指向数据集中的一行数据,通过游标可以打开数据集,也 ...
- Oracle游标介绍
Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...
- oracle游标遍历
--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p (--参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is_ ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
随机推荐
- Libgdx 1.6.0发布,跨平台游戏开发框架
[1.6.0] -英文原文:http://www.badlogicgames.com/wordpress/?p=3682 -API更改:GlyphLayout xAdvances现在有了额外的开始入口 ...
- /sbin/insserv: No such file or directory
/sbin/insserv: No such file or directory在Ubuntu下安装service服务,可能会报如下错误:/sbin/insserv: No such file or ...
- 【leetcode73】经典算法-Guess Number Higher or Lower
题目描述: 从1-n中,随便的拿出一个数字,你来猜测. 提示 提供一个guess(int num)的api,针对猜测的数字,返回三个数值.0,-1,1 0;猜中返回num -1:比猜测的数值小 1:比 ...
- Android官方技术文档翻译——Apk 拆分机制
本文译自androd官方技术文档<Apk Splits>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-gui ...
- 9.2、Libgdx的输入处理之鼠标、触摸和键盘
(官网:www.libgdx.cn) Libgdx支持的最主要的设备是desktop或浏览器的鼠标支持,Android的触摸屏支持和键盘的支持.我们接下来了解一下. 键盘 用户按下或释放一个按键生成了 ...
- cuda中模板的使用
模板是C++的一个重要特征,它可以让我们简化代码,同时使代码更整洁.CUDA中也支持模板,这给我们编写cuda程序带来了方便.不过cuda4.0之前和之后使用模板的方法不一样,这给我们带来了少许困难. ...
- 69个Spring面试题
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...
- Unix - 文件中构成一个空洞的分析
lseek函数显示地为一个打开文件设置偏移量,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点是允许的.位于文件中但没有写过的字节都被读为 ...
- OAF中的MASTER-DETAIL关系
在日常开发中,我们经常会遇到头行结构,并且要求打开界面,行是隐藏的,点击头上的"显示"按钮,才要求头对应的行信息全部显示出来,这样,我们就用到了Master-Detail结构. 下 ...
- ActiveMQ系列之五:ActiveMQ的Transport
连接到ActiveMQ Connector:ActiveMQ提供的,用来实现连接通讯的功能.包括:client-to-broker.broker-to-broker. ActiveMQ允许客户端使用多 ...