数据库的游标

一,游标是什么?

游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标。

二,作用是什么?

1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据库的操作我们会暂时放在游标中,只要不提交,我们就可以根据游标中内容进行回滚,在一定意义有利于数据库的安全。

2,另外,在Oracle中PL/SQL只能返回单行数据,而游标弥补了这个不足。相当于ADO.NET中的Datatable吧。

三,类型:

1,隐式游标:增删改等操作Oracle都会自动创建游标,暂时保存操作结果,也就是能够回滚的操作都会引发游标的创建。

2,显示游标:由开发人员通过程序显式控制,用于从表中取出多行数据,并将多行数据一行一行的单独进行处理.

四,属性:

属性

注释

%rowcount

受SQL影响的行数

%found

Boolean值,是否还有数据

%notfound

Boolean值,是否已无数据

%isopen

游标是否打开

当然如果我们想获得隐式游标的属性,通过%前边加上SQL即可得到。例如SQL%rowcount.

五,游标简单认识了,我们来看看游标的具体使用:

1,先看一下简单的使用游标四步骤:

步骤

关键词

说明

1

在DECLARE中cursor

声明游标,创建一个命名的查询语句

2

Open

打开游标

3

Fetch

取出游标中的一条记录装入变量

4

Close

释放游标

2,当然游标中可以存放一条数据,也可以存放多条数据,后者是我们用游标,前者我们通过PL/SQL语句即可完成的,这样我们在这里就必须用到循环结构了,在Oracle数据库中我们可以使用while……loop……end loop , for…… loop……end loop,loop……end loop。在这里需要提出的是,for循环结构在Oracle中被简化了,我们只需要声明和使用即可。看下边这个例子吧:

a,whlie循环结构的:

declare

--定义记录类型的变量

v_user user%rowtype;

--1,利用cursor关键字声明游标

cursor user_cur is

select * from user;

begin

--2,打开游标

open user_cur;

--3,利用fetch读取数据

fetch user_cur

into v_user;

while user_cur%found loop

dbms_output.put_line(v_user.userName);

fetch user_cur

into v_user;

end loop;

--4,释放游标

close user_cur;

end;

b,简化的for结构循环:

declare

--1,利用cursor关键字声明游标

cursor user_cur is

select * from user;

begin

--2,直接使用,Oracle会自动打开和关闭等操作。

for v_user in user_cur loop

dbms_output.put_line(v_user.userName);

end loop

end;

这里就介绍这两种的类型,loop的和这都差不多。

3,最后在这里再学习一下带参数的游标,也是就和我们但参数的类是一样的,只不过一个用在了数据库中,一个用在了编程语言中。

declare

--定义记录类型的变量

v_User user%rowtype;

--1,利用cursor关键字声明带参数的游标

cursor user_Cur(v_UserNo number) is

select * from user where  userNo=v_UserNo;

begin

--2,打开带参数的游标,使之更加灵活 。

open user_Cur(1012);

--3,利用fetch读取数据

loop

fetch user_Cur into v_User;

exit when user_Cur%notfound;

dbms_output.put_line(v_user.userName);

end loop;

--4,释放游标

close user_Cur;

end;

综上为游标的简单学习,回想过去的学习,可以发现游标可以和datatable很相似,为了增加灵活性,它和类也有非常相似的功能。

时间: 2024-10-20 09:23:49

数据库的游标的相关文章

数据库,游标,cursor

一:介绍一下游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中. 由select语句返回的行集包括所有满足该语句where子句中条件的行.由语句所返回的这一完整的行集被称为结果集.应用程序,特别是交互式联机应用程序,并不总能将整个结果集做为一个单元来有效地处理.这些应用程序需要一种机制以便每次处理一行或一部分行.游标就是提供这种机制的结果

Cursor 数据库查询游标的应用

在建立数据库,输入数据的前提下,用db.rawQuery(sql,selectionArgs)联系接口Cursor c: 然后运用moveToFirst,isAfterLast,moveToNext等方法查询 在Curesor中index是从0开始查询列数的 例子: 1.新建数据库SQliteOpenHelper类 package com.example.CursorDemo; import android.content.Context;import android.database.sqli

oracle数据库中游标和序列的区别

两者是完全不同的东西游标是基于查询结果集的比方说你的一个select语句查询出了若干条记录这样一个结果集,如果你想对结果集中的每一行都进行一个判断或则其他操作,那么用sql语句的update或者就不能满足针对每一行的特定操作,这个时候游标就发挥作用了:你可以把这个结果集定义成一个游标,通过游标的操作形式,你可以遍历结果集中的每一行记录并可以对它进行操作,也就是你可以通过游标对一个select查询出的结果执行for循环来遍历操作数据.而序列则是oracle中的一种对象,就像表.视图一样,你可以像建

oracle数据库使用游标实现大写数字转换成小写数字

项目遇到需求,需要将大写数字转换成小写.代码如下: declare t_zl varchar2(100); t_ts varchar2(100); t_l number; hh varchar2(100); xx varchar2(100); type TIArray is table of varchar2(100);  type TCArray is table of varchar2(100); A TIArray;  B TCArray; cursor c is select zl,ts

python sqlite3 数据库操作

SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 2. python sqlite3模块的API """ sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的链接.您可以使用 ":memory:" 来在 RA

数据存储——SQLite数据库存储——API

一.特点 1.存储具有一定结构的数据 2.文件类型.db 3.存储目录:date/date/包名/datebases/数据库文件 4.应用卸载之后,数据同时被删除 5.数据不被其他应用直接操作 二.SQLite数据库 三.API 1.SQLiteOpenHelper   工具类 (1)是一个抽象类,需要继承并实现了抽象方法之后才能使用 (2)抽象方法: ①void   onCreate(SQLiteDatabase db) 1)创建和初始化数据库的回调方法 2)当连接数据库,未找到数据库文件时调

21 数据库编程 - 《Python 核心编程》

?? 介绍 ?? 数据库 和 Python RDBMSs, ORMs, and Python ?? Python 数据库应用程序程序员接口(DB-API) ?? 关系数据库 (RDBMSs) ?? 对象-关系管理器(ORMs) ?? 关系模块 21.1 介绍 持久存储 在任何的应用程序中,都需要持久存储. 一般说来,有三种基本的存储机制: 文件.关系型数 据库或其它的一些变种,例如现有系统的API,ORM.文件管理器.电子表格.配置文件等等. 基本的数据库操作和SQL 语言 底层存储 数据库的底

解决ArcGIS中因SDE或数据库配置问题而导致服务荡掉的一种思路

1.背景 最近连续有两个项目现场出现了AGS服务荡掉的问题,一个是通州现场,一个是福州现场. 1.1通州现场的问题描述和解决思路 通州现场环境为ArcGIS9.2,使用IMS发布的地图服务,其问题表现为每隔两天左右,其地形图服务便会崩溃一次,重启地形图服务后地图可以正常显示. 因为IMS中地图的出图为动态出图,所以其出图时需要通过连接SDE,此问题的出现很可能是SDE中最大连接数的问题. 1.2福州现场的问题描述和解决思路 福州现场环境为ArcGIS10.0,使用的ArcGIS Server发布

SQL Server 游标

什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据. 一般复杂的存储过程,都会有游标的出现,他的用处主要有: 定位到结果集中的某一行. 对当前位置的数据进行读写. 可以对结果集中的数据单独操作,而不是整行执行相同的操作. 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁. 游标的分类 根据游标检测结果集变化的能力和消耗资源的情况不同,SQL