游标操作和应用

合集下载

游标 应用 实例

游标 应用 实例

游标应用实例全文共四篇示例,供读者参考第一篇示例:游标是一种在数据库中用于处理查询结果集的机制,它可以在查询结果集中移动并访问各个记录。

游标在数据库应用中具有广泛的用途,可以在数据检索、更新和删除等操作中发挥重要的作用。

本文将结合实际案例,介绍游标在数据库应用中的应用示例。

我们来了解一下游标的基本概念。

游标主要用于遍历数据库中的查询结果集,它允许程序员逐条处理查询结果。

游标通常包括打开游标、获取记录、关闭游标等操作。

在数据库应用中,游标经常与存储过程、触发器等数据库对象一起使用,以实现对数据库的复杂操作。

下面我们以一个简单的实例来展示游标在数据库应用中的应用。

假设我们有一个名为“employee”的表,包含员工的姓名和工资信息。

我们需要计算员工的平均工资并输出每个员工的姓名和离平均工资的偏差。

这时就可以使用游标来实现这个需求。

我们需要创建一个存储过程来实现计算平均工资和输出员工信息的功能。

以下是一个简单的存储过程示例:```sqlDELIMITERCREATE PROCEDURE calculate_average_salary()BEGINDECLARE done INT DEFAULT FALSE;DECLARE emp_name VARCHAR(50);DECLARE emp_salary FLOAT;DECLARE avg_salary FLOAT;DECLARE cur CURSOR FOR SELECT name, salary FROM employee;OPEN cur;FETCH cur INTO emp_name, emp_salary;IF emp_salary IS NULL THENLEAVE;END IF;SET avg_salary = (SELECT AVG(salary) FROM employee);WHILE NOT done DOIF emp_salary > avg_salary THENSELECT CONCAT(emp_name, ' has salary above average') AS result;ELSESELECT CONCAT(emp_name, ' has salary below average') AS result;END IF;FETCH cur INTO emp_name, emp_salary;IF emp_salary IS NULL THENSET done = TRUE;END IF;END WHILE;CLOSE cur;ENDDELIMITER ;```在上面的存储过程中,我们首先声明了一些变量用于存储员工的姓名、工资和平均工资信息。

oracle中游标的用法

oracle中游标的用法

oracle中游标的用法游标是Oracle数据库中一种重要的数据类型,用于处理查询结果集中的数据。

使用游标可以方便地遍历查询结果,进行数据处理和操作。

下面是关于Oracle中游标的用法的参考内容。

一、游标的定义与声明在Oracle数据库中,游标可以在PL/SQL块中使用,用于与查询结果进行交互。

游标的使用分为显示游标和隐式游标两种方式:1. 显示游标:显示游标需要先定义游标类型,然后声明游标变量,并使用OPEN、FETCH和CLOSE等操作进行操作。

示例代码如下:```sql-- 定义游标类型TYPE cursor_type IS REF CURSOR;-- 声明游标变量cursor_var cursor_type;-- 打开游标OPEN cursor_var FOR SELECT * FROM table_name;-- 循环获取游标数据LOOPFETCH cursor_var INTO variable1, variable2...;EXIT WHEN cursor_var%NOTFOUND;-- 对游标数据进行处理END LOOP;-- 关闭游标CLOSE cursor_var;```2. 隐式游标:隐式游标由Oracle自动管理,不需要程序员定义和声明,系统会自动为每一个SELECT语句分配一个隐式游标。

隐式游标无法手动控制游标操作,只能通过向结果集添加条件来限制查询结果。

示例代码如下:```sql-- 查询结果会被自动赋值给隐式游标SELECT * FROM table_name;-- 循环处理查询结果LOOP-- 对查询结果进行处理-- 退出循环条件END LOOP;```二、游标的属性和操作1. 游标属性:(1) %FOUND:如果游标指向的结果集中有数据,则返回真;否则返回假。

(2) %NOTFOUND:如果游标指向的结果集中没有数据,则返回真;否则返回假。

(3) %ROWCOUNT:返回游标当前处理的行数。

sql游标的使用方法

sql游标的使用方法

sql游标的使用方法
SQL游标用于在查询结果集中遍历每一行数据,可以使用以下步骤来使用游标:
1. 声明游标:使用DECLARE语句声明一个游标,指定查询语句,并设置游标的名称。

2. 打开游标:使用OPEN语句打开游标,将查询结果集绑定到游标上。

3. 获取数据:使用FETCH语句从游标中获取数据,可以根据需要获取一行数据或者获取全部数据。

4. 处理数据:对获取的数据进行需要的处理,可以进行计算、更新、删除等操作。

5. 关闭游标:使用CLOSE语句关闭游标,释放资源。

6. 释放游标:使用DEALLOCATE语句释放游标所占用的资源。

下面是一个使用游标的示例:
```sql
DECLARE cur_employee CURSOR FOR
SELECT employee_id, employee_name FROM employees; OPEN cur_employee;
FETCH NEXT FROM cur_employee INTO @emp_id, @emp_name;
WHILE @@FETCH_STATUS = 0
BEGIN
-- 对数据进行处理
...
FETCH NEXT FROM cur_employee INTO @emp_id, @emp_name;
END
CLOSE cur_employee;
DEALLOCATE cur_employee;
```。

游标卡尺操作指导书

游标卡尺操作指导书

一、普通(无表头)游标卡尺操作规范:1、普通游标卡尺的基本结构图2、普通游标卡尺的使用说明2.1 使用前,先松开尺框上的固定螺钉,将尺框平稳拉开。

用布将测量面、导向面擦干净。

2.2 检查“零”位:轻推尺框,使两个量爪测量面合并,观察游标“领”刻线与尺身“零”刻线应对齐,游标尾刻线与尺身相应刻线应对齐。

否则应送相关部门校正。

2.3测量外径尺寸时,右手拿住尺身,大拇指移动游标,左手拿待测外径(或内径)的物体,使待测物位于外测量爪之间,当与量爪紧紧相贴时,即可读数(如图所示)。

注意点:测量时,卡脚不得用力紧压工件,以免卡脚变形或磨损,影响测量的准确度。

2.4测量内孔尺寸时,两上卡脚应张开到略小于被测尺寸,再慢慢张开并轻轻地接触零件的内表面。

量爪应在孔的直径方向上测量。

2.4.1圆弧内测量爪测量(参照图示)圆弧内测量爪测量孔径、沟槽等内尺寸时,卡尺的读数L1量爪内测量面间的距离,被测的正确尺寸还应加上量爪的尺寸b,即L= L1+b 。

圆弧内量爪b的尺寸一般为10mm或20mm。

bL1L2.5 测量深度尺寸时,应使深度尺杆与被测工件底面相垂直(如图所示)3、游标卡尺的读法游标卡尺上的主尺刻线间距为l毫米,副尺有读数值为0.1毫米、0.05毫米、0.02毫米三种。

目前以0.02毫米的为最多。

游标卡尺的读数方法是:a、首先在主尺上读出副尺零线左面(零刻度线)所对尺寸的整数值。

b、其次找出副尺上与主尺刻度能对准的那一根刻线,读出尺寸的毫米小数值。

c、这样,整数与小数之和就是被测零件的尺寸。

举例子是0.02毫米游标卡尺所表示的尺寸。

4、注意事项4.1 不要把卡尺当作卡钳或螺丝扳手用,或把量爪的尖端用作画线工具。

4.2 移动尺框和微调装置时,应松开紧固螺钉。

4.3 带深度尺的卡尺,用完后要合并量爪(合并时,需留有1毫米左右的距离,以防止量爪磨损)。

否则,较细的深度尺露在外边,容易变形甚至折断。

卡尺使用完毕,必须擦净上油,放回卡尺盒内。

如何使用游标卡尺-游标卡尺的使用方法及应用范围

如何使用游标卡尺-游标卡尺的使用方法及应用范围

Word 文档1 / 1如何使用游标卡尺-游标卡尺的使用方法及应用范围如何使用游标卡尺-游标卡尺的使用方法及应用范围游标卡尺(VERNIER CALLIPER),是一种测量长度、内外径、深度的量具。

下面,我为大家讲讲游标卡尺的使用方法及应用范围,希望对大家有所关怀!游标卡尺的使用方法用软布将量爪擦干净,使其并拢,查看游标和主尺身的零刻度线是否对齐。

假如对齐就可以进行测量:如没有对齐则要记取零误差:游标的零刻度线在尺身零刻度线右侧的叫正零误差,在尺身零刻度线左侧的叫负零误差(这件规定方法与数轴的规定一致,原点以右为正,原点以左为负)。

测量时,右手拿住尺身,大拇指移动游标,左手拿待测外径(或内径)的物体,使待测物位于外测量爪之间,当与量爪紧紧相贴时,即可读数,如以下图所示: 当测量零件的外尺寸时:卡尺两测量面的联线应垂直于被测量外表,不能歪斜。

测量时,可以轻轻摇动卡尺,放正垂直位置,图2-6所示。

否则,量爪若在如图2-6所示的错误位置上,将使测量结果a 比实际尺寸b 要大;先把卡尺的活动量爪张开,使量爪能自由地卡进工件,把零件贴靠在固定量爪上,然后移动尺框,用轻微的压力使活动量爪接触零件。

如卡尺带有微动装置,此时可拧紧微动装置上的`固定螺钉,再转动调整螺母,使量爪接触零件并读取尺寸。

决不行把卡尺的两个量爪调整到接近甚至小于所测尺寸,把卡尺强制的卡到零件上去。

这样做会使量爪变形,或使测量面过早磨损,使卡尺失去应有的精度。

以上是对游标卡尺的介绍,包括其读数、使用方法以及其应用等内容,由于游标卡尺是种比较精密的量具,现已经被广泛应用于工业测量长度上,随着科学技术的进展以及行业的不断壮大,检测仪器数字化是当前及将来仪器的普遍趋势,而且对工件的测量效率也会要求越来越高。

而当前工厂内部品质检查的方法是测量一个数据后,由测量人员人工记录在纸张中,或者由一个人测量,另一个人进行记录的操作方式,当需要进行分析时,由操作人员录入到电脑的EXCEL 表格中;这种传统的测量方式导致的问题是效率低,数据简洁记错。

游标卡尺操作说明书

游标卡尺操作说明书

游标卡尺操作说明书游标卡尺是一种常用的测量工具,可以用来测量物体的长度、宽度和深度等尺寸。

本说明书将详细介绍游标卡尺的操作步骤,并提供一些技巧和注意事项,以帮助您正确并高效地使用游标卡尺。

一、游标卡尺的组成部分游标卡尺由主尺、游标和测量爪组成。

主尺上标有毫米刻度,游标上则标有十分之一毫米刻度。

测量爪用于夹取待测物体,确保准确测量。

二、游标卡尺的操作步骤1. 确定测量对象:在使用游标卡尺进行测量之前,首先确定所要测量的物体。

确保物体表面干净整齐,并处于完全静止状态。

2. 开合卡尺:将游标卡尺的两个测量爪完全张开,以便能够夹取待测物体。

3. 夹取物体:将游标卡尺的测量爪轻轻地夹取住待测物体。

确保夹取牢固而又不会对物体造成任何损坏。

4. 闭合卡尺:缓慢闭合游标卡尺的测量爪,直到两个爪完全贴合在待测物体上。

同时要保持卡尺的水平,以确保准确测量。

5. 读取刻度:通过对准游标上的刻度,读取测量结果。

主尺上的毫米刻度可以直接读取,而游标上的十分之一毫米刻度需要结合主尺上的刻度来读。

6. 记录结果:根据读取的刻度数值,在纸上或计算机中记录测量结果。

如果需要多次测量同一个物体,建议进行多次测量并取平均值,以提高测量精度。

三、使用技巧和注意事项1. 保持卡尺清洁:在使用游标卡尺之前,确保卡尺的测量爪和刻度线清洁无尘。

可使用干净的布或纸巾轻轻擦拭。

2. 注意测量角度:在夹取物体时,要尽量保持卡尺与物体垂直。

斜着夹取物体会导致测量结果不准确。

3. 避免过度力度:在闭合卡尺测量时,不要施加过大的力量,以免损坏待测物体或影响测量结果。

4. 注意零位偏移:在测量开始前,应检查游标卡尺的零位偏移情况。

如果发现有偏移,可通过调整游标位置使其回到零位。

5. 熟悉刻度:在使用游标卡尺之前,要先了解游标和主尺上的刻度含义,并熟悉如何读取刻度。

6. 储存注意:在使用完毕后,应将游标卡尺存放在干燥、清洁的地方,避免与其他物体接触,以免造成损坏或刻度模糊。

使用游标卡尺的读数方法及注意事项

使用游标卡尺的读数方法及注意事项游标卡尺是一种用于测量物体尺寸的工具,它具有高精度、易于操作等优点,被广泛应用于各种领域。

但是,要想正确地使用游标卡尺,我们必须掌握一些读数方法和注意事项,以确保测量结果的准确性和可靠性。

一、读数方法1. 内径测量内径是指物体内部空间的直径,测量内径时,我们需要将游标卡尺的两个钩子放入物体内部,将钩子向外旋转,直到它们与物体内壁接触。

此时,读数应该是两个钩子的距离,也就是内径的大小。

2. 外径测量外径是指物体外部的直径,测量外径时,我们需要将游标卡尺的两个钩子放在物体的两端,轻轻地将卡尺固定在物体上,然后读取两个钩子的距离,即为物体的外径大小。

3. 深度测量深度是指物体内部的深度或者物体表面到内部深度的距离,测量深度时,我们需要将游标卡尺的钩子放入物体内部,然后轻轻地将卡尺固定在物体上,读取钩子与物体表面之间的距离,即为物体的深度。

4. 高度测量高度是指物体的高度或者物体表面到顶部的距离,测量高度时,我们需要将游标卡尺的钩子放在物体表面上,然后轻轻地将卡尺固定在物体上,读取钩子与物体顶部之间的距离,即为物体的高度。

二、注意事项1. 使用前检查在使用游标卡尺之前,我们需要检查它的钩子是否清洁、是否有损坏或变形等问题。

如果钩子有问题,我们需要及时更换。

2. 操作时轻柔在使用游标卡尺时,我们需要轻柔地操作,避免对测量物体造成损伤。

同时,我们也需要避免过度使用力量,以免影响测量结果的准确性。

3. 放置时注意在使用完游标卡尺后,我们需要将它放置在干燥、清洁、无尘的地方,避免受到潮湿、污染等因素的影响。

同时,我们也需要避免将卡尺放置在高温或者低温环境中,以免影响卡尺的使用寿命。

4. 维护保养在使用游标卡尺之后,我们需要将它清洁干净,并涂上适当的油脂,以保持其灵活性和精度。

同时,我们也需要定期检查卡尺的精度和功能,以确保其正常使用。

综上所述,游标卡尺是一种非常实用的测量工具,但是要想正确地使用它,我们需要掌握一些读数方法和注意事项。

python中游标的用法

python中游标的用法在Python 中,当你与数据库进行交互时,通常会使用数据库游标(cursor)。

游标是一个用于执行SQL 语句并检索结果的对象。

以下是在Python 中使用游标的一般步骤:1. 连接到数据库:-使用数据库模块(如`sqlite3`、`mysql-connector-python`、`psycopg2` 等)建立与数据库的连接。

连接通常包括数据库的地址、用户名、密码等信息。

```pythonimport sqlite3# 连接到SQLite 数据库connection = sqlite3.connect('example.db')```2. 创建游标:-通过连接对象创建游标。

游标是一个用于执行SQL 语句和检索结果的对象。

```pythoncursor = connection.cursor()```3. 执行SQL 语句:-使用游标对象执行SQL 语句。

可以执行查询、插入、更新、删除等不同类型的SQL 操作。

```pythoncursor.execute('SELECT * FROM users')```4. 获取结果:-获取SQL 语句执行的结果。

对于查询,可以使用`fetchone()`、`fetchall()` 等方法获取结果。

```pythonrow = cursor.fetchone()```5. 提交事务(如果需要):-如果执行的SQL 涉及到数据库的修改(如插入、更新、删除等),则需要在操作完成后提交事务。

```pythonmit()```6. 关闭游标和连接:-在完成数据库操作后,关闭游标和连接以释放资源。

```pythoncursor.close()connection.close()```以下是一个简单的示例,演示了如何连接到SQLite 数据库,创建游标,执行查询,以及获取结果:```pythonimport sqlite3# 连接到SQLite 数据库connection = sqlite3.connect('example.db')# 创建游标cursor = connection.cursor()# 执行查询cursor.execute('SELECT * FROM users')# 获取结果rows = cursor.fetchall()for row in rows:print(row)# 关闭游标和连接cursor.close()connection.close()```这是一个基本的用法示例,实际应用中可能涉及更多的数据库操作,如参数化查询、事务管理等。

游标卡尺的使用步骤和注意事项

游标卡尺的使用步骤和注意事项游标卡尺是一种常用的测量工具,具有精度高、使用方便等特点。

在使用游标卡尺时,需要注意一系列的步骤和注意事项。

下面将详细介绍游标卡尺的使用步骤和注意事项。

一、游标卡尺的使用步骤使用游标卡尺进行测量时,需要按照以下步骤进行操作:1.准备工作在使用游标卡尺之前,需要确保卡尺的零位是正确的。

可以将卡尺两个测量面平行放在一个平整的水平面上,轻轻合上量具的张紧螺旋,然后调整卡尺上的滚轮,使之能够顺畅滚动。

接下来,将滚轮转到底,使之抵住螺杆,打开紧急解除和手持螺杆,将游标卡尺的尖端完全闭合,然后再关闭紧急解除和手持螺杆。

2.测量(1)将游标卡尺的两个测量面紧贴待测物体的边缘,旋转刻度盘上的调节盘,直到两个刻度线紧贴物体表面。

注意,要确保测量面与物体表面成垂直,并且尽量避免倾斜和晃动。

(2)读取测量结果。

通过刻度盘上的刻度线和游标线,可以得出待测物体的尺寸。

正常情况下,游标卡尺的刻度盘上刻有主刻度和副刻度。

主刻度表示毫米或厘米,副刻度表示0.1毫米或0.01毫米。

读取测量结果时,应先读取主刻度,再读取副刻度。

例如,当主刻度盘上的刻度线位于2号刻度线,副刻度盘上的刻度线位于3号刻度线时,表示测量结果为2.3毫米。

3.测量结束在使用游标卡尺进行测量后,应将卡尺上的滚轮转到底,使之抵住螺杆,再打开紧急解除和手持螺杆,将游标卡尺的尖端完全闭合。

然后,将卡尺放回合适的存放位置,避免受到损坏。

二、游标卡尺的注意事项1.使用前检查在使用游标卡尺之前,应仔细检查卡尺的状态。

检查卡尺的滚轮、螺杆、刻度盘等部分是否正常运转,是否有损坏或松动现象。

如果发现异常,应及时进行维修或更换。

2.操作规范在使用游标卡尺时,要注意规范的操作。

尽量保持手握稳定,以免晃动或倾斜影响测量结果的准确性。

3.避免碰撞在使用过程中,要注意避免游标卡尺与硬物发生碰撞。

碰撞可能会导致刻度盘或测量面损坏,影响测量结果。

4.防止污染应尽量避免将游标卡尺接触到油脂、水、尘土等污染物。

在MySQL中使用游标实现结果集的遍历与操作

在MySQL中使用游标实现结果集的遍历与操作在数据库管理系统中,MySQL是一种被广泛使用的关系型数据库管理系统。

在MySQL中,我们经常需要对查询结果集进行遍历和操作,这时候使用游标是一种很方便且灵活的方法。

本文将介绍如何在MySQL中使用游标实现结果集的遍历与操作。

一、什么是游标?游标是一种数据库对象,用于存储查询结果集以便进行遍历和操作。

通过游标,我们可以逐行读取结果集,并对其中的数据进行处理。

在MySQL中,游标是以存储过程的形式来使用的。

二、游标的使用步骤1. 声明游标在MySQL中,我们首先需要声明一个游标变量,用于存储查询结果集。

游标变量的命名可以根据实际需求进行自定义,但需要注意命名规范和良好的命名习惯。

```sqlDECLARE cur_name CURSOR FOR SELECT column1, column2, ... FROMtable_name WHERE condition;```2. 打开游标接下来,我们需要打开已声明的游标变量,以便开始遍历结果集。

```sqlOPEN cur_name;```3. 读取游标一旦游标被打开,我们就可以通过循环来逐行读取游标中的数据。

MySQL中提供了FETCH语句来实现对游标的读取操作。

```sqlFETCH cur_name INTO variable1, variable2, ...;```4. 处理数据在读取到游标中的数据之后,我们可以对其进行一些处理操作,例如进行计算、拼接字符串、更新数据等等。

这些操作可以根据实际需求进行自定义。

5. 关闭游标当我们已经完成对结果集的遍历和操作之后,需要关闭游标以释放相关资源。

```sqlCLOSE cur_name;```6. 销毁游标如果在使用完毕后,我们不再需要游标,可以通过以下语句进行销毁。

```sqlDEALLOCATE PREPARE cur_name;```三、示例下面以一个简单的示例来演示如何在MySQL中使用游标来遍历和操作结果集。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第20 章游标操作和应用
当使用sql查询语句查询数据后,返回的内存中的结果称为结果集。

结果集在内存是一个不可分割的整体,如果需要对结果集的某个记录进行操作,就可以借助于游标来完成。

游标用在T-SQL 的批、存储过程、触发器当中。

游标理解为在结果集中可以逐行移动的指针,可以指向结果集的任意位置,在实际程序开发中,一般把游标作为逐行提取结果集的手段进行使用。

游标的生命周期
游标有严格的生命周期,顺序如下;
(1)声明(DECLARE):定义游标的名称、类型和属性。

(2)打开(OPEN):打开和填充数据。

(3)提取(FETCH)数据:从结果集中读取单行的数据
(4)关闭(CLOSE):停止游标使用的查询,可以再次打开。

(5)释放(DEALLOCATE):删除游标释放资源
游标声明
语法格式:
DECLARE <游标名> [INSENSITIVE][SCROLL]CURSOR
FOR<SELECT查询>
[FOR{READ ONLY|UPDATE[OF <列名>[,<列名>…]]}]
参数说明:
(1)INSENSITIVE指出所声明的游标为不敏感游标,即静态游标。

当省略INSENSITIVE选项时,已提交的游标基表修改和删除操作能够反映到其后的游标提取结果中。

(2)SCROLL指出该游标可以用FETCH命令里定义的所有方法来存取数据,允许删除和更新(假定没有使用INSENSITIVE选项);
(3)<SELECT查询>语句决定游标结果集合,但在其中不能使用COMPUTE、COMPUTE BY、FOR BROWSE和INTO等关键字。

(4)FOR READ ONLY或FOR UPDATE说明游标为只读的或可修改的。

默认是可修改的。

(5)UPDATE [OF <列名>[,<列名>…]] 定义可以修改的列。

如果省略 OF <列名>[,<列名>…],则允许修改所有列。

【例1】下面语句声明可移动游标 student_cur1:
DECLARE student_cur1 SCROLL CURSOR
FOR SELECT*
FROM student
WHERE班级='4'
【例2】下面语句声明只读游标 student_cur1:
DECLARE student_cur2 SCROLL CURSOR
FOR SELECT*
FROM student
WHERE班级='4'
FOR READ ONLY
1.1.2 游标变量
游标变量声明的格式:
DECLARE @cursor_variable_name CURSOR
游标变量声明后,必须和某个游标相关联才能实现游标操作。

有两种方法建立游标和游标变量之间的关联:
第一种:先声明游标和游标变量,之后用SET语句将游标赋给游标变量。

例如:
DECLARE @cur_var CURSOR
DECLARE C1 CURSOR
FOR SELECT * FROM COURSE
SET @cur_var=C1
第二种:不声明游标,直接在SET语句中将各种游标定义赋给游标变量。

例如:
DECLARE @cur_var CURSOR
SET @cur_var= CURSOR
FOR SELECT * FROM COURSE
当游标变量与游标相关联之后,在Transact-SQL游标语句中就可以使用游标变量代替游标名,实现各种操作。

例如:
OPEN @cur_var
11.1.3 隐式游标转换
应用程序可以请求一个游标类型,然后执行不受所请求类型的服务器游标支持的一个 Transact-SQL语句。

Microsoft SQL Serve 返回一个错误,指出游标类型已经改变。

表11-1的因素可触发SQL Server将游标从一种类型隐性转换为另一种类型。

11.2 游标数据操作
11.2.1 打开游标
打开游标在声明以后,如果要从游标中读取数据必须打开
游标。

打开一个Transact-SQL服务器游标使用OPEN命令。

语法格式:
OPEN {{[GLOBAL] <游标名>}|<游标变量>}
参数说明:
(1)GLOBAL
定义游标为一全局游标。

(2)游标名
如果一个全局游标和一个局部游标都使用同一个游标名,则如果使用GLOBAL便表明其为全局游标,否则表明其为局部游标。

(3)游标变量
为定义的游标变量。

当打开一个游标后时,MS SQL SERVER首先检查声明游标的语法是否正确,如果游标声明中有变量,则将变量值带入。

在游标被成功打开之后,@@CURSOR_ROWS 全局变量将用来记录游标内数据行数。

为了提高性能,MS SQL SERVER允许以异步方式从基础表向KEYSET或静态游标读入数据,即如果MS SQL SERVER的查询优化器估计从基础表中返回给游标的数据行已经超过sp_configure cursor threshold参数值,则MS SQL SERVER 将启动另外一个独立的线程来继续从基础表中读入符合游标定义的数据行,此时可以从游标中读取数据进行处理而不必等到所有的符合游标定义的数据行都从基础表中读入游标。

@@CURSOR_ROWS 变量存储的正是在调用@@CURSOR_ROWS时,游标已从基础表读入的数据行。

@@CURSOR_ROWS的返回值有以下四个,如表11-2所示。

表11-2 @@CURSOR_ROWS变量
ABSOLUTE {n | @nvar} 如果n或@nvar为正数,则返回游标结果集中的第n或@nvar行数据。

如果n或@nvar 为负数,则返回结果集内倒数第n或@nvar 行数据。

若n或@nvar超过游标的数据子
集范畴,则@@FETCH_STARS返回-1,在该情况下,如果n或@nvar为负数,则执行FETCH NEXT命令会得到第一行数据,如果n或@nvar 为正值,执行FETCH PRIOR命令则会得到最后一行数据。

n或@nvar 可以是一固定值也可以是一smallint, tinyint 或int类型的变量。

RELATIVE {n | @nvar} 若n或@nvar为正数,则读取游标当前位置起向后的第n或@nvar行数据;如果n或@nvar为负数,则读取游标当前位置起向前的第n或@nvar行数据。

若n或@nvar超过游标的数据子集范畴,则@@FETCH_STARS 返回-1,在该情况下,如果n或@nvar为负数,则执行FETCH NEXT命令则会得到第一行数据;如果n 或@nvar为正值,执行FETCH PRIOR命令则会得到最后一行数据。

n 或@nvar可以是一固定值也可以是一smallint, tinyint或int类型的变量。

11.2.3 关闭游标
在处理完游标中数据之后必须关闭游标来释放数据结果集和定
位于数据记录上的锁,有两种方法关闭游标。

1.使用CLOSE命令关闭游标
格式:
CLOSE { { [GLOBAL] 游标名 } | 游标变量 }
说明:CLOSE语句关闭游标,但不释放游标占用的数据结构,应用程序可以再次执行OPEN语句打开和填充游标。

2.自动关闭游标
游标可应用在存储过程、触发器和Transact_SQL脚本中。

如果在声明游标与释放游标之间使用了事务结构,则在结束事务时游标会自动关闭。

例如:
USE 教学管理
GO
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM STUDENT
--下面语句释放游标及游标占用的资源
DEALLOCATE @MyCursor
--用SET命令将游标变量@MyCursor同另一个游标关联
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM COURSE
GO
11.2.5 游标定位修改和删除操作
如果在声明游标时使用了FOR UPDATE语句,那么就可以在UPDATE或DELETE命令中以WHERE CURRENT OF关键字直接修改或删除当前游标中当前行的数据。

当改变游标中数据时,这种变化会自动地影响到游标的基础表。

但是如果在声明游标时选择了INSENSITIVE选项时,该游标中的数据不能被修改,具体含义请参看声明游标一节中对INSENSITIVE选项的详细解释。

语法格式:
游标定位修改UPDATE语句的格式如下
UPDATE 表名
SET 子句
WHERE CURRENT OF {{[GLOBAL] 游标名}
|游标变量}
游标定位删除DELETE语句的格式为如下
DELETE FROM 表名
WHERE CURRENT OF {{[GLOBAL] 游标名}
|游标变量}
11.3 游标应用实例分析
【例11-6】使用嵌套游标,逐个检查并修改信息学院每个学生选修的每门课程的成绩及学分获取情况,显示输出,并维护数据的一致性。

小结。

相关文档
最新文档