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 ...
随机推荐
- UIPassValue页面传值 UI_08(下)
2.从前一个界面到后一个界面 注意:解题思路 葵花宝典:属性传值 第一步:在下一个界面视图控制器的.h文件中定义一个属性 第二步:在push之前将数据存储到属性中 第三步:取出属性中的值让控件 ...
- URLClassLoader
package com.reflect.load; import java.net.URL; import java.net.URLClassLoader; import java.sql.Conne ...
- android 面试之listview
ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能.· 1.在adapter中的g ...
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三
原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3) 作者:Lee BoonstraLee is a ...
- SlopOne 改进
lope One 其基本的想法来自于简单的一元线性模型 $w = f(v) = v + b$.已知一组训练点 ${(v_i, w_i)}_{i=1}^n$,利用此线性模型最小化预测误差的平方和,我们可 ...
- Sample Code for Qp_preq_pub.Price_request Api to Simulate an Ask for Promotion Modifier
DECLARE p_line_tbl QP_PREQ_GRP.LINE_TBL_TYPE; p_qual_tbl QP_PREQ_GRP.QUAL_TBL_TYPE; p_line_attr_tbl ...
- LAV Filter 源代码分析 3: LAV Video (1)
LAV Video 是使用很广泛的DirectShow Filter.它封装了FFMPEG中的libavcodec,支持十分广泛的视频格式的解码.在这里对其源代码进行详细的分析. LAV Video ...
- App Store10大被拒理由
最近,苹果在官网给出了截至2015年2月份应用被拒绝的十大理由,其中50%以上的应用被拒绝都是因为这10个原因,其中7个理由和2014年相同,其中排名前三的原因分别是:需要补充更多信息.存在明显的bu ...
- Aandroid 图片加载库Glide 实战(一),初始,加载进阶到实践
原文: http://blog.csdn.net/sk719887916/article/details/39989293 skay 初识Glide 为何使用 Glide? 有经验的 Android ...
- 关于Html5发展和应用前景
现在的HTML5就像当年崭露头角时的Ajax,有人在做,但不知道叫它什么.最近,苹果在 HTML5上大做文章,而著名的Web设计师Eric Meyer则提出了Web Stacks的概念.Alex Ke ...