游标的应用数据库教程

2024-04-18

游标的应用数据库教程(共9篇)

篇1:游标的应用数据库教程

在前面几节,我们详细介绍了如何声明游标,从游标中读取数据以及关闭、释放游标的方法,

游标的应用数据库教程

。下面我们将给出几个应用实例使读者对游标有更为全面的了解。

13.7.1 游标变量的应用

我们已经提到游标是从MS SQL SERVER 7 版本才开始使用的新的变量类型,游标常被应用在存储过程、触发器中。那么游标是如何被作为变量而应用呢?看一下系统过程sp_cursor_list 的SQL 语句文本,会大有收获。

在该存储过程中,@cursor_return 为一游标变量,并将其结果集返回给其调用者,该结果集保存有当前所有游标的各属性值。

提示:在存储过程中,如果被定义为游标类型的变量使用OUTPUT选项,则必须使用VARYING保留字,即为@variable CURSOR VARYING OUTPUT形式,

例13-9: 如果准备在客户机程序中对从数据库服务器检索出的数据进行处理,那么可以创建一个包含游标的存储过程。

首先删除同名存储过程jobs_cursor

接着创建存储过程jobs_cursor

13.7.2 嵌套游标

为了灵活地处理结果集,可以在存储过程中使用多层游标。

例13-10: 本例创建了包含二层游标的存储过程。第一层游标存放authors 表中符合过程参数的数据记录,每次从第一层游标中读取一条authors 数据,然后遍历第二层游标,将有关该authors 的信息读取出来。如果准备生成一个嵌套报表,这种方法很有效。

篇2:游标的应用数据库教程

1.对低于当前平均价格的书,均提价50%

2对于高于或等于当前平均价格的书,均降价25%

代码如下:

declare title_update cursor

for select title_id,price from titles

for update

go

局部变量

declare @avg_price money,@title_id tid,@price money

open title_update

begin tran

计算平均书价

select @avg_price=avg(price) from titles holdlock

fetch title_update into @title_id,@price

while @@sqlstatus!=2

begin

if @@sqlstatus=1

begin

rollback tran

raiserror 21001 “Fetch failed in cursor”

close title_update

deallocate cursor title_update

return

end

if @price<@avg_price

提价50%

update titles set price = price * $1.50

where current of title_update

else

降价25%

update titles set price = price * $.75

where current of title_update

if @@error!=0

begin

rollback tran

raiserror 2 “Update failed”

close title_update

deallocate cursor title_update

return

end

fetch title_update into @title_id,@price

end

commit

close title_update

deallocate cursor title_update

篇3:游标的应用数据库教程

随着数据库应用技术的不断发展和深入, 近几年已逐渐发展成以数据仓库为基础, 以数据挖掘分析技术为核心的一系列联机分析处理OLAP技术的发展, 并在实际系统中逐步开始得到应用和完善, 成为当前的研究热点[1]。面对数据仓库中的海量数据, 如何进行高效地挖掘与分析, 目前是OLAP应用技术中的关注点, 涉及到系统的处理效率和可用性。本文结合上海轨道交通AFC运营管理数据仓库海量、高维数据的特点, 通过对比和应用, 探讨和应用通过游标技术统计数据仓库海量数据的方法。

1 数据仓库技术概述

数据仓库技术是在计算机管理信息基础上发展而来, 它把分散数据源中的历史数据收集到一个数据仓库中, 以便进行挖掘和分析。数据仓库不是一个新的平台, 它仍需建立在数据库管理系统基础上。

在一个CRM (Customer Relationship Management) 的数据仓库中, 数据挖掘是从海量数据中去发现可以用模式或规则表示的新信息, 如关联、连续和消费者分类树等, 以及可以实现多种分析和优化等目的, 如预测、识别、分类和优化[2]。

数据仓库需符合面向主题、集成、稳定和随时间不断变化的数据集合的定义, 用于支持管理决策[3]。数据仓库的数据需至少反映一个长时间段内的历史数据, 通常需通过ETL (Extract Transformation Load) 技术获得, 经分类聚合后存储。

数据仓库应用软件的构架主要由数据源、数据仓库、数据字典信息、数据管理、数据挖掘工具、数据分析与报表、通信传输和运行环境等元素组成, 其属性表现为符合数据仓库的定义、易使用、易维护、易迁移、处理效率高和概念完整性。

2 基于数据仓库的数据统计

基于数据库获取统计数据的传统方法主要采用SQL查询语句把符合条件的数据查询出来后进行处理。在数据量不很大的情况下, 传统方法效果很好, 执行效率不错。随着数据仓库数据量的增加和数据维度的提高, 以传统查询方法获取数据将导致数据库访问开销非线性增长、查询效率极其低下。

本文结合数据统计特点, 探讨和应用游标技术简化查询获取数据仓库统计数据的方法。

作为数据仓库系统三要素之一的信息访问部分, 是最终用户从数据仓库中提取信息、分析数据和实施决策的必经途径。数据仓库与一般数据库的本质区别在于增加了下述新的应用属性:

· 规模 数据仓库中集成和存储来自若干分布、异质的信息源的数据。这些信息源本身可能是一个规模庞大的数据库, 因此数据仓库的数据规模比一般数据库的规模要大得多。如, 以5年为一存储周期的上海某轨道交通线AFC运营数据为例, 其数据仓库的存储容量接近300GB, 而生产现场某周期内的满负载存储约为50GB。对大容量的数据进行统计分析, 除拥有高效、快速的统计算法外, 访问数据的效率仍是影响算法效率的最大瓶颈。

· 历史数据 生产现场数据库系统为获得最大的执行效率, 一般存储尽可能少的数据量。因为拥有数据越多, 数据备份/恢复、视图、查询、索引、监控和报表的执行效率就越差。因此, 现场数据库数据在“时间”轴上的长度不宜很长, 这涉及到综合性价比的设计问题, 一般采取循环存储方法实现联机存储。相比而言, 数据仓库的重要特征之一, 就是能够存储长时间的分类聚合数据, 一般可以设为5年、10年或更长, 这使得对业务数据长期趋势的分析成为可能。数据仓库为决策的长效行为提供了独一无二的支持。

· 查询效率 数据仓库面向决策支持。数据仓库的软件构架设计努力保证查询和分析的时效性。而现场联机事务处理OLTP系统主要要求更新的实时性, 对查询的性能要求相对较弱, 有些报表可以放在晚间后台处理。数据仓库需设计成只读方式, 以定时批处理的方式集成 (追加) 分类聚合记录, 最终用户不能直接更新数据仓库的数据。数据仓库中的数据在时间轴上的纵深性沉淀了数据的使用价值, 同时也对统计访问数据的策略与方法提出更高的技术要求。数据仓库要求更高的查询效率, 以有力支持数据统计的时效性。

从以上分析看出, 数据仓库在纵向和横向都为数据统计提供了概念更全面的信息。数据仓库软件系统完成了数据的收集、集成、存储、管理、挖掘和分析等工作。数据统计面对的是经初步加工后分类聚合的数据, 这使得数据统计可以从更广阔的角度、更深的层次上进行挖掘和分析。

3 探讨和应用游标技术

3.1 应用背景及数据来源

我们参与设计和开发的上海轨道交通AFC运营管理数据分析系统专用分析模块, 是专门用于多视角客流及其票务营收数据分析的专用统计模块。通过分析, 可以了解线路各站的进/出站客流分布、上/下行客运量、票/卡使用和营收状况, 并提供环比、同比和预报等多项统计功能。对于提高轨道交通服务质量、合理使用资源、疏导乘客和保障列车安全运营等起到积极的辅助决策作用。

生产现场的客流分析可以通过OLAP实现, 实时访问的数据源是线路中央计算机系统联机存储的交易明细, 非实时访问的数据源来自数据仓库。客流数据的环、同比和预报等分析则需对数据仓库经ETL技术分类聚合后沉淀的数据通过挖掘和分析后得到。数据仓库DWH中沉淀的数据直接从生产现场联机存储中经ETL技术获得, 在本DWH系统中, 目前设计存储数据的最长年份跨度为5年, 更长年份跨度的存储可以通过参数设置。

专用分析模块的系统交互结构如图1所示。

3.2 运用游标技术的数据统计过程

图1所示系统的交互结构符合分层系统的定义。由图1可知, 客户端与系统交互并发出请求, 请求被传送到系统计算层进行解析处理, 然后计算层与数据层进行交互, 取得计算所需数据, 进而应用各种统计算法对取得的数据进行计算, 计算结果以XML格式文件反馈给客户端, 最后由客户端软件以图、表形式展现。

以运载量分析子模块为例, 讨论数据统计的策略、过程与算法, 其他各分析子模块的数据统计方法与该子模块类似。运载量分析子模块要求在指定日期或/和时间段范围内, 分上行或下行分析某线路某些 (或全部) 站点到某些 (或全部) 站点的运载量OD (Operation Data) , 并要求能进行环比、同比和预报分析。统计数据的来源分为两个方向:当天数据取自生产现场联机存储的出站交易数据;其它则取自本系统创建的DWH。图2为运载量OD环比分析报表的部分示例说明。

数据处理过程如下:

1) 对运营当日, 按交易日期、时间范围、出站交易类型从生产现场联机存储交易中抽取相关交易数据;

2) 非当日数据从DWH获得;

3) 在分类条件下求和, 对交易数据按时间范围和出站交易类型计算相关进站至相关出站的交易笔数;

4) 对非本线进站、本线出站的换乘交易, 按上、下行统计为其它进站至本线出站的OD;

5) 对本线进站、非本线出站的换乘交易, 不作OD统计。

针对上述数据统计要求, 如果对每个具体条件把相应数据统计出来, 则至少需处理日期、时间、起始站和目的站组成的四重循环。对每个循环都需要对数据库进行一次查询, 频繁地对数据库进行交互, 才能将满足条件的数据统计出来。这样在数据库交互方面的开销相当大, 统计效率将非常低下。

根据上述数据处理过程的判别条件, 本文探讨应用Oracle Pro*C\C++ 中的游标技术提高数据访问效率的方法概括为2步:①首先找到所有条件的边界范围, 即起始日期与终止日期、起始时间与终止时间、起始站与终止站, 将满足边界范围的所有记录都查询到游标中, 使所有满足具体要求的数据都在游标中, 以最大限度减少数据样本空间;②对游标中的每条记录, 进一步判断它满足哪个具体的统计条件, 对满足条件对应的计数器计数即可。

通过游标技术简化查询的好处是, 仅对数据库只做了一次查询操作, 所有的循环操作通过游标遍历在程序中完成, 大大减少了程序与数据库交互的开销。而这方面的开销对统计效率的影响最大, 所以利用游标简化查询能提高统计效率。

使用游标可以方便地实现将多行数据查询结果进行逐行处理。游标的应用主要分为四部分实现:①定义一个游标, 使它与一个select语句相联;②打开游标, 把满足查询条件的行都存储到该游标的缓存中;③提取游标数据, 从游标的缓存中一次一行或多行地读取记录, 进行处理, 直至结束;④关闭该游标[4]。

下面给出游标应用四部分相关源代码的简洁说明。

· 定义游标

定义游标使用内嵌DECLARE CURSOR 语句来完成的。定义游标时, 需要指定游标名及其所对应的SELECT 语句, 句法如下:

EXEC SQL DECLARE cursor_name CURSOR FOR select_stat;

cursor_name用于指定游标名, select_stat用于指定游标所对应的SELECT语句。定义游标时, DECLARE CURSOR 语句必须是应用游标的第一条语句;游标名称是一个标识符, 而不是宿主变量, 其长度可以任意;游标所对应的SELECT 语句不能包含INTO子句;游标语句 (DECLARE、OPEN、FETCH和CLOSE) 必须在同一个预编译单元内。

下面为实际项目中定义的游标, 作用是将满足边界范围的所有记录都查询到游标中:

EXEC SQL DECLARE tem46_sjt_cursor CURSOR FOR SELECT

TRANSACTIONDATE, TIMETAG, TRANSACTIONTYPE, COUNT, LINESTATIONIDENTRIED, STATIONID

FROM DWH.T_SJTPASSENGERFLOW@DWH

WHERE LINEID=:lineid AND

TRANSACTIONDATE>=:dBeg AND TRANSACTIONDATE<=:

dEnd AND TIMETAG>=:timetagStart AND

TIMETAG<:timetagStart+:n_time AND STATIONID BETWEEN :

sBeg AND :sEnd;

· 打开游标

打开游标时, Oracle会执行游标所对应的SELECT语句, 并将SELECT语句的结果存放到游标结果集中。当编写Pro *C/C++ 源程序时, 使用内嵌的OPEN语句可以打开游标, 句法如下:

EXEC SQL OPEN cursor_name;

cursor_name用于指定游标名。以下为实际项目中打开游标的方法:

EXEC SQL OPEN tem46_sjt_cursor;

· 提取游标数据

打开游标之后, Oracle只是将行数据存放到游标结果集中。为了处理这些数据, 需要将结果集中的数据提取到宿主变量中。使用内嵌的FETCH语句可以提取游标数据, 句法如下:

EXEC SQL FETCH cursor_name INTO:host_variable, …;

其中, cursor_name 用于指定游标名, host_variable 用于指定宿主变量名。宿主变量的个数和类型需要与选择列表的列个数和数据类型匹配。

当执行了内嵌FETCH 语句后, Oracle 会将游标数据提取到输出宿主变量中。当FETCH 语句的INTO 子句中使用宿主变量时, Oracle 只会提取单行数据, 并且在提取了该行数据之后, 游标指针会指向下一行数据。因此, 为了处理多行数据, 必须使用循环处理所有数据。

以下为实际项目中提取游标数据的方法:

EXEC SQL WHENEVER NOT FOUND do break;

for (;;)

{

EXEC SQL FETCH tem46_sjt_cursor INTO :v_transactiondate,

:v_timetag, :v_transactiontype, :v_count, :v_linestationidentried, :v_stationid;

…… /*省略的为统计处理语句*/

}

省略的统计处理语句, 可以按照具体统计要求, 对相应的计数器进行计数, 基于此得到满足条件的复合报表要求的统计数据。

· 关闭游标

在提取并处理了所有结果集数据之后, 可以关闭游标。在关闭游标之后, Oracle 会释放结果集的数据以及相应的内存资源。使用内嵌CLOSE 语句可以关闭游标, 句法如下:

EXEC SQL CLOSE cursor_name;

cursor_name 用于指定游标名, 在关闭游标之后, 不能继续提取游标数据。如果还要提取数据, 则必须重新打开游标。

下面为实际项目中关闭游标的方法:

EXEC SQL CLOSE tem46_sjt_cursor;

通过以上的分析可以发现, 整个统计过程中, 只在定义游标时使用了查询语句, 以后的统计工作都是通过游标遍历和针对具体条件计数来完成。通过游标能够有效减少SQL 查询语句的循环次数, 使统计效率大大提高, 满足对数据仓库数据统计的处理效率要求。

4 性能分析

表1针对运载量OD分别给出相同统计条件下游标使用前后的计算性能比较 (对比结果系在PC环境中算得) 。

5 结束语

本文结合数据仓库, 针对海量数据统计的特点和具体应用要求, 研究和应用游标技术提高数据统计效率的方法。结合上海轨道交通AFC运营管理数据分析系统专用分析模块, 描述了利用游标提高统计算法计算效率的具体实现步骤以及与传统查询统计性能的比较。数据仓库的发展日新月异, 基于数据仓库技术的数据分析技术也会不断发展和完善。本文对提高数据仓库的数据分析效率方面, 具有一定的参考价值。

摘要:结合上海轨道交通AFC (Automatic Fare Collection) 运营管理数据仓库海量高维数据的特点, 通过对传统和游标两种不同访问数据编程方法的比较和应用, 研究和提出利用游标技术提高数据仓库数据统计效率的方法, 并给出这两种数据访问方法关于部分统计效率的对比结果。

关键词:数据仓库,数据统计,SQL查询,游标

参考文献

[1]康晓东.基于数据仓库的数据挖掘技术[M].机械工业出版社.

[2]电子商务与技术[M].陈允明, 谈庆明, 陈养正, 译.科学出版社, 2004.

[3]林宇.数据仓库原理与实践[M].北京:人民邮电出版社, 2003.

[4]蔡翎, 刘涛.游标在Oracle PRO*C中的使用方法及技巧.福建电脑, 2003 (6) .

[5]赵英莲.数据仓库技术在统计中的应用.统计与决策, 2001 (4) .

篇4:卡尺的游标原理分析及合理应用

关键词:游标卡尺 注意事项 工作原理 读数误差 合理应用

0 引言

游标卡尺作为一种重要的测量仪器,广泛地应用在许多的领域。它的存在给我们的生产生活带来了极大的便利,能够很好的掌握游标卡尺的使用方法是十分的必要的。我们需要更加准确的了解游标卡尺的工作原理使用读数方法,为我们能够正确的使用做好准备。游标卡尺是一种操作非常简单而且准确度比较高的一种测量仪器,较其他的测量仪器而言有着更多的优点。

1 游标卡尺的工作原理

正如上图所示游标卡尺是由一个主尺还有就是附在主尺上我们能够用手去滑动的游标两部分构成,当我们从背面看的时候我们会发现实际上游标是一个整体。游标和尺身通过一个弹簧片进行连接,充分的利用了弹簧片的弹力使得尺身和游标能够紧紧的连在一起。当仔细观察的时候你会发现有一个紧固的螺钉在游标的上部,正是由于这个螺钉的存在可以使游标固定在尺身上的任意位置。为了能够更好地达到测量的目的在设置的时候在尺身和游标上都有量爪,当我们测量管的内径和槽的宽度的时候可以利用内测量爪当测量管的外径和零件的厚度的时候就可以使用外测量爪。还有一个深度尺和游标尺连着,桶和槽的深度就可以用它来测量。由于它的测量精度很高,所以游标卡尺一般以mm为单位,它在游标上有50,20或者是10个分格。而又根据分格的不同,分为十分度游标卡尺、二十分度游标卡尺、五十分度游标卡尺等。将主尺上的一格(两条相邻刻线间的距离)a的宽度与副尺上一格的宽度b的差就是游标卡尺的分度值。我们将游标卡尺能够测量的精度,我们经常看到的分度值有0.10、0.05、0.02mm这三种。这三种游标卡尺的主尺刻线的间隔是一样的,它的间隔a=1mm。所不同的是副尺格数与主尺相对的格数,其间隔b比主尺的刻线间隔小。要是主尺刻度(n-1)格的宽度和游标n格的宽度是一样的,那么游标的刻度间隔计算公式为:bn=(n-1)a,b=(n-1)a/n。游标卡尺的工作原理的了解对于正确的使用游标卡尺是十分重要的。

2 游标卡尺的使用方法

在测量之前,我们应该使游标卡尺的卡脚进行并拢,然后仔细的瞅一下主尺和游标尺零刻度线到底有没有对齐如果没有对齐先将它们对齐,在这些准备工作都结束后检查无误我们就可以开始测量了。在进行测量的时候,我们需要右手去拿住尺身,在这个时候用大拇指去移动游标,用我们的左手轻轻地拿着物体的外径或者是内径,将量爪和即将被测的物体紧紧的贴在一起,在这个时候将将紧固螺钉给旋紧,这样就可以进行读数了。在测量筒和槽深度的时候,将游标尺进行移动,这时候会发现有个深度尺将深度尺轻轻地垂直的插入到槽或筒里,这个时候需要将主尺的最末端和筒口或槽口并齐,剩下的就和上面一样了,也是将紧固螺钉旋紧进行读数。

3 游标卡尺读数时测量误差的原因

任何一种测量仪器都会在测量的过程中产生误差,有些误差是由于仪器的设备问题而不可比避免的产生的误差,有一些是操作人员由于操作失误而产生的误差。不管是什么原因造成的误差对于测量的结果都会造成一定程度的影响。同样在游标卡尺的使用过程中我们同样也发现,或多或少的误差在测量的过程中总是会不可避免的出现。有时候误差相差并不是太大,而有时候会由于某种原因产生很大的误差,给最终的测量结果造成一定的影响。测量的目的就是通过测量了解被测物体的实际尺寸,而如果存在着巨大的误差难免会失去测量的意义。为保障测量的有效性,我们就需要对游标卡尺的测量误差进行整理与误差的分析,并从中找出减少误差的办法,达到最终测量的目的。

3.1 测量方法不当产生的误差 在测量的过程中如果测量方法不对,也会产生很大的误差。就比如说测量过程中如果尺身形成与测量尺寸线的角度越大,那么由此造成的误差也就比较大。因此为了避免这种情况的产生,我们在测量物件的过程中要以被测工件的形状和被测量的物件的大概尺寸来采用比较合理的测量方法。就好比说,当我们测量普通外尺时要保证卡尺测量面与工件测量面重合,测量圆形工件时为保证测量线与尺身平行,应该在测量过程中基本固定一个量爪,通过转动或移动另一个量爪寻找到读数转折点,从而判断测量线是否与尺身平行,不然的话就会造成相当大的误差。当然还有许多的由于选择测量方法的不对而造成的误差,因此在实际的测量工作中,我们要从实际出发,选择正确合理的测量方式进行测量,只有这样才能够达到更好的测量效果。

3.2 卡尺磨损造成零位误差 通常而言游标卡尺是用来测量一些金属或者坚硬的块状物体,因此在测量的过程中难免就会造成对游标卡尺的损害。而一般来说这种损害是造成爪的磨损或者是造成游标在使用过程中的松动。一旦出现这样的情况就会造成对测量结果误差的形成。其主要的原因就是游标的松动或者磨损会使得卡尺的零位出现一定程度的移位。而在使用的过程中由于习惯性的思维方式造成了操作人员对零位的忽视,一般很少关注到零位是否移位就直接进行测量,这样就造成了零位误差。

4 游标卡尺使用过程中的注意事项

通过对游标卡尺的误差来源和工作原理进行分析,我们发现如果要想减小测量过程中的测量误差提高设备的精度,以达到更好的测量效果。在测量的过程中就应该注意一些操作和测量过程中的事项。

4.1 用力均匀 在测量的过程中要注意测力的使用程度,或大或小都不太好,要选择适当的测力才能够达到更好的测量结果。使用时测力要均匀且不宜过大,因为尺身与游标框之间存在间隙,一旦测力使用不均就很轻易的造成两测量面不平行,这样会使测量结果不准确。

4.2 注意矫正零位 在测量的过程中零位的矫正是相当重要的,这直接关系到接下来测量的所有数据的准确性。因为卡尺的游标是靠螺钉固定,比较易变动,所以要注意经常校对零位。不要因为嫌麻烦,而造成测量数据的误差的产生。

4.3 寻找合适的转折点 当测量较大的需两人测量的工件的时候,需要上下左右摆动量爪寻找它得转折点,而对于转折点的判断我们可以依据卡尺的测量面与被测工件的接触间隙和读数的变化来确定。只有找准转折点,才能够达到更好的测量效果。

5 结束语

根据对卡尺的游标原理进行阐述,将读数方法进行介绍,将更进一步的使得大家对游标卡尺有一个更清楚的认识。通过分析误差产生的原因以及工作的原因,系统而详尽地提出了在测量使用过程中减少误差的注意事项。

参考文献:

[1]刘克哲.物理学[M].北京:高等教育出版社,2004.

[2]黄永修.基础物理专题分析[M].郑州:河南科学技术出版社,1993.

篇5:再看数据库――(7)游标

其实《再看数据库》系列博客本没有计划写这么多,但最近确实接触数据库比较多,又接触了这些东西,在之前很少用到,因此就整理下,和大家分享.

简介:

游标,是一个数据缓冲区,用来存放SQL语句的执行结果.与一般的执行过程不同的是,游标是从结果集中每次提取一条记录.

与关系数据库的区别:

关系数据库――面向集合,一般执行结果都是一个集合,如果要选择其中一条或几条记录,就要用where子句,

游标 ――面向单条记录。游标可以对查询语句返回的结果集中的每一行进行相同或不同的操作。

因此说,

游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。

类型:

三种游标类型,包括:Transact_SQL游标,API服务器游标和客户游标。

服务器游标(后台游标)

1)Transact_SQL游标

主要在SQL脚本、存储过程、触发器中使用,不支持提取数据块或多行数据。

一般用在服务器上,由从客户端发送给服务器的SQL语句或批处理、存储过程、触发器中的Transact_SQL进行管理。

2)API服务器游标

主要用在服务器上,户端应用程序调用API 游标函数,MS SQL SEVER 的OLE DB提供者、ODBC驱动器或DB_library 的动态链接库(DLL) 都会将这些客户请求传送给服务器以对API游标进行处理,

客户端游标(前台游标)

3)客户游标

客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。

由于服务器游标并不支持所有的Transact-SQL语句或批处理,所以客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。

举例:

数据库表中的记录如下:

vcD4KPHByZSBjbGFzcz0=”brush:sql;">--定义游标DECLARE cursor_Test CURSOR SCROLL FOR SELECT FirstName,MiddleName,LastName FROM AdventureWorksDW.dbo.DimCustomer--打开游标OPEN cursor_Test--声明变量DECLARE @test1 VARCHAR(10)DECLARE @test2 VARCHAR(10)DECLARE @test3 VARCHAR(10)--取第一行记录FETCH FIRST FROM cursor_Test INTO @test1,@test2,@test3PRINT @test1 PRINT @test2 PRINT @test3--取下一行记录FETCH NEXT FROM cursor_Test INTO @test1,@test2,@test3PRINT @test1 PRINT @test2 PRINT @test3--关闭游标CLOSE cursor_TestDEALLOCATE cursor_Test执行结果:

总结:

篇6:游标的应用数据库教程

。网络特性成为建立电子商务、互联网、企业内部网的基础。SQL Server 2000 就提供了显著增强的网络功能来构建数据库解决方案。利用这些网络特性,用户可以将企业数据以安全、快捷、高效的方式,通过Web 页发布给企业内部相关部门或发布给客户群体。因此,本章主要介绍SQL Server 2000 这些最新的网络特性及其应用。

SQL Server 2000 具有完备的Web 功能,企业既可以将数据存储在Web 页面上或XML 文档内,也可将其存储在数据库中,完全适合构建B2B (商业到商)业或 B2C (商业到客户)模式的电子商务,并且通过支持具有多层体系结构的客户/服务器模式为Web 应用提供高度的可扩展性和高可靠性。 SQL Server 2000 与 Windows DNA 2000平台一起“融洽”地工作,从而使各种规模的企业或组织能够在Web 上方便地与客户和供应商进行商业贸易并可以把老式系统集成到下一代的商业解决方案中去。除此之外,SQL Server 2000 可以协助公司更好地理解客户或供应商在Web 站点上的行为,并快速发现由数字经济所提供的新的商业机会。SQL Server 2000 的网络新特性主要表现在以下几个方面:<

SQL Server 2000 和BizTalk Server 2000 支持集成的XML 结构,允许通过 BizTalk Server 2000 ,直接从数据库应用程序中管理和发送文档;

数据挖掘功能可以自动地从大量的商业信息中进行筛选,帮助客户找出未被发现的新机会,预测在商业中制胜的策略。微软把数据挖掘引擎集成到了SQL Server 2000 的分析服务(即以前版本中的联机分析处理服务)中,从而极大地降低了这个先进而强有力工具的复杂性。分析服务包括了数据挖掘的聚类和决策树算法,并且可以通过OLE DB for Data Mining 很容易地由第三方厂商进行扩展;

SQL Server 2000 提供完全集成的、基于标准的XML, 支持它对于Web 开发人员和数据库程序员来说都是灵活、高效而且易于使用的,

不像其它同类数据库产品,SQL Server 2000 提供了强有力的工具来处理数据库中的 XML 元素,使开发人员不用编写代码、直接从数据库中取出基于XML 的数据;

SQL Server 2000 允许通过HTTP 协议,在Web 上进行高性能、基于标准的安全访问,并支持防火墙。基于Web 的客户端拥有访问关系型数据存储和访问分析服务的完全能力,那么我们如何利用这些新特性实施电子商务呢?很明显,首先是选取一个平台。SQL Server 2000 是微软Windows DNA 2000平台的一部分,这个平台不仅可以实现在线商务,也可以实现多层的应用。与Commerce Server 2000 、微软Host Integration Server 2000、 微软BizTalk Server 2000 以及微软Application Center 2000 这样的产品一起,用户可以建立一套完整的、可伸缩性高、可靠性高的电子商务网站的解决方案。

电子商务解决方案的另一个方面是其可用性。支持SQL Server 2000 所达到的高可用性的一个关键技术是实施故障恢复群集。如果磁盘损坏、崩溃,用户可以转而使用另一台计算机;如果一个CPU 损坏,用户可以转而使用另外一个CPU 或是群集中的另一台计算机,使得系统仍然可以持续运转。故障恢复群集功能在SQL Server 2000 中被显著增强了,它可以提供四个结点的集成,而不是原来的两个,这使得错误发生时,系统可以在这四台计算机之间任意转换。故障恢复群集技术与可伸缩式的分布式分区视图一起为电子商务网站提供了一种鲁棒的解决方案,使其可以持续稳定地运行。

当然还有其它重要的地方,例如丰富的编程接口集。我们早些时候曾谈论过XML 特性,我们已经努力使得SQL Server 的XML 支持技术可以被数据库及网络开发人员使用。其它数据库也有XML 支持,但很多时候它们都要求使用像Java 这样的面向对象的编程语言,而SQL Server 不要求这一点。在SQL Server 2000 中,已经扩展了Transaction SQL (T-SQL) 语言的功能,其中包含了像XPath、 XML、 XSL、 XSLT 这样的标准。建议从事这类集成开发项目的开发人员看一看SQL Server 中的 XML 功能并将它与竞争对手作一比较,相信他们会看到SQL Server 更好用,也很好地支持了上面那些重要标准,使得集成性的开发方案更加有效。

篇7:游标的应用数据库教程

全市三个学校、每个学校都有六个专业、每个专业都有五门课、各专业人数不等,总计有1000余人,工作量巨大。但如果采用Excel数据透视表来完成的话,呵呵,就简单多了。

一、创建数据透视表

点击菜单命令“数据→数据透视表和数据透视图”,打开“数据透视表和数据透视图向导”对话框。

第一步,如图2所示,选择“Microsoft Excel数据列表或数据库”及下面的“数据透视表”单选项。

第二步,如图3所示,在“选定区域”输入全部数据所在的单元格区域,或者点击输入框右侧的“压缩对话”按钮,在工作表中用鼠标选定数据区域。

第三步,在对话框中选定“新建工作表”单选项,以便将创建的数据透视表放到一个新的工作表中,再点击“完成”按钮,如图4所示。

这样,就可以建立一个空的数据透视表,并同时显示“数据透视表”工具栏和“数据透视表字段列表”对话框,如图5所示。

二、利用数据透视表得到需要的结果

根据要求,我们应该得到各学校、各专业、各学科的平均分数。因此,我们应该把“学校”、“专业”作为行字段,而把各学科数据作为数据项。

从“数据透视表字段列表”中,把“学校”拖到数据透视表左侧“将行字段拖至此处”位置,再将“专业”字段拖至“学校”字段的右侧,待鼠标变成“I”字形时松开鼠标,如图6所示。如此就会得到如图7所示的效果。这正是我们想要计算平均分的各个项目,

现在,我们只要从“数据透视表字段列表”中依次将学科字段拖至数据透视表中“请将数据项拖至此处”位置,可以得到各学校、各专业、各学科的成绩总和。如图8所示。

现在我们将各个

篇8:游标的应用数据库教程

在数据库的使用中, 常常会遇到这种情况:用查询语句, 得到一个结果集, 但对这个结果的操作不是相同的, 需要根据不同的条件, 对不同的记录进行不同的处理。此时, 就需要用到游标。

游标实际上是一种能从包括多条记录的结果集中每次提取一条记录的机制。游标总是与一条SQL查询语句相关联, 允许应用程序对SELECT语句返回的行结果集中每一行进行相同或不同的操作, 而不是一次对整个结果集进行同一种操作。这种特性使得对数据的操纵十分灵活。

2 游标的种类

SQL支持三种类型的游标:Transact-SQL游标、API游标和客户游标。

Transact-SQL游标:T-SQL游标是由DECLARE CUR-SOR语句定义, 主要用在脚本、存储过程和触发器中, 应用在服务器上。

API游标:API游标使用在客户端与服务器端的连接程序中 (如OLE DB和ODBC等) 。

客户游标:客户游标主要在当需要在客户机上缓存结果集时使用。

3 游标的使用步骤

游标的操作可分为以下几个步骤:

3.1 声明游标

声明游标的语法为:

DECLARE<游标名>[INSENSITIVE][SCROLL]CUR-SOR

FOR<SELECT语句>

[FOR{READ ONLY|UPDATE][OF<列名>[, …n]]}]

INSENSITIVE关键字:将取出的数据记录放在一个临时表内, 对游标的读取操作由临时表来应答。游标不会随着基表内容的改变而改变, 同时也无法通过游标来更新基本表。

SCROLL关键字:表明所有的提取操作 (FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE) 等都可用, 如不使用该保留字, 只能进行NEXT操作。

READ ONLY关键字:只读游标。

UPDATE关键字:可修改的游标, 或指定修改的列。

3.2 打开游标

声明游标后, 如果要从游标中读取数据, 必须打开游标。

打开游标的语法为:

OPEN[GLOBAL]<游标名>│<游标变量>

在游标成功打开后, 全局变量@@CURSOR_ROWS将用来记录游标内数据行数。变量返回值代表的状态如表1所示。

3.3 读取游标中的数据

当游标成功打开以后, 可以使用FETCH语句从中读取数据。

NEXT│PRIOR│FIRST│LAST:用于说明读取数据的位置。

ABSOLUTE、RELATIVE:给出读取数据的位置与游标头或当前位置的关系。其中N必须为整型常量或变量。

其中全局变量@@FETCH_STATUS返回上次执行FETCH命令的状态。在每次用FETCH从游标中读取数据时, 都应检查该变量, 以确定上次FETCH操作是否成功, 来决定如何进行下一步处理。变量的返回值的状态如表2所示。

3.4 关闭游标

CLOSE[GLOBAL]<游标名>|@<游标变量>

游标关闭后, 其定义仍在, 需要时可用OPEN语句打开, 再次使用。若确认游标不再需要, 就要释放其定义占用的系统空间, 即删除游标。

DEALLOCATE[GLOBAL]<游标名>|@<游标变量>

4 游标应用的实例

案例说明:数据库company中有两张表。Salary显示的是全体员工的工资表, 工作一段时间后, 公司将按照员工的工作情况给员工加工资, 每个员工加的工资不一样多, 有的员工工资有调整, 有的员工工资无调整。工资调整表为addincome。这种不是统一变动的情况, 使用游标就非常灵活便捷。

游标使用的具体代码如下:

以上代码说明:首先基于salary表生成一个更新游标的结果集。从中逐条读取id参数, 将id参数存放在@id变量中。使用@id变量在addincome表中查询是否有此@id员工, 如果有此@id就表明, 此@id的工资有调整, 使用更新游标将调整的工资更新到salary表。如果无此@id就说明此@id的工资无调整, 回到游标结果集中读取下一条记录。

5 结论

本文介绍了SQL数据库中游标的概念, 阐述了游标的类型及游标的使用步骤。最后通过一个更新工资表的实例说明游标的使用方法。

摘要:本文介绍了SQL中游标的概念, 游标的操作步骤。重点解析了如何应用游标进行多表的数据更新, 并通过工资表更新的实例进一步说明游标的用法。

关键词:游标,更新,关联,多表

参考文献

[1]李丹.SQL Server2005数据库管理与开发实用教程[M].北京:机械工业出版社, 2010.

篇9:游标卡尺的检定

【关键词】游标卡尺;检定;调试;修理

一、前言

游标卡尺是一种在工业设计领域里十分重要的通用测量工具,更是工人和检测人员的必备测量器具。它是测量小型物体厚度、直径和深度的首选工具,操作便捷且使用简单。然而游标卡尺的精度等级并非最高,其结构存在原理误差,又因为其操作过程的过于简便,导致人民经常忽视对它的保养和检定,进而影响其测量结果。对此,计量器具的相关管理、使用和检定人员应提高重视,为了确保游标卡尺的检测数据真实、有效、可靠,对游标卡尺进行定期的检定修理至关重要。作者参照《JJG30-2012通用卡尺的检定规程》[1],并通过自己实际工作中获取的相关经验,浅析游标卡尺的检定调试及修理。

二、游标卡尺的工作原理

一般机械工业中使用的游标卡尺都是由可移动的游标尺和主尺两部分组成。在游标尺上会有一个紧固螺钉,使用者根据自己的需要将游标尺固定在主尺上的任意位置。尺身和游标尺都有量爪,利用内爪可测量工件的宽度和圆管等的内径,利用外测量爪可测量工件的厚度和管的外径,使用深度测量爪也可测量工件的厚度和槽的深度。游标卡尺是利用主尺的度数及主尺上的刻线间距(简称线距)和游标尺上的线距之差来读出测量值的整数和小数部分。例如一个游标卡尺的主尺线距总长为1mm,游标尺分为10格,则其线距为0.9mm。当主尺与游标尺的零刻线重合,若游标尺移动0.1mm,则它的第1根刻线与主尺的第1根刻线重合;若游标尺移动0.2mm,则它的第2根刻线与主尺的第2根刻线重合。依此类推,可根据游标尺与主尺上刻线重合处读出量值的小数部分。主尺与游标尺线距的差值 0.1mm就是游标卡尺的最小读数值。同理,若它们的线距的差值为0.05mm或0.02mm(游标尺上分别有20格或50格),则其最小读数值分别为0.05mm或0.02mm。

三、游标卡尺的检定

与其他计量器具一样,游标卡尺也需要进行定期的检定操作,具体周期要依据不同的使用和磨损情况决定,对使用较为频繁,磨损程度高的游标卡尺,进行工具检定的周期要短一点;而那些不经常使用,磨损程度较小的卡尺,对其检定周期可以稍微延长,但总的来说对游标卡尺的检定周期都不会超过一年[2]。在对卡尺进行检定时要严格按照最新的检定规程操作执行,而在执行过程中检定人员最容易忽视的一点是对检定过程中温度和湿度的相关要求。经常出现换件、研磨、抛光等操作做得十分细致,但在检定过程中忽视了对环境的有关要求,最终导致检定结果出现偏差的情况。游标卡尺的使用非常普遍,其计量结果通常都对产品质量造成很大的影响,因此计量管理人员要加强对游标卡尺检定操作的监督管理。

四、游标卡尺的常见问题

一旦使用时间过长,游标卡尺都会出现磨损等许多常见问题。作者根据日常工作中遇到的实际情况,把游标卡尺易出现的常见问题总结为外观和使用两大类。

1.外观问题

在游标卡尺的生产加工研磨过程中,由于研磨器不平整,磨料过粗,导致嵌砂没有被很好地去除,再加上工作环境不达标,工作时受到大颗粒状灰尘和碎屑等干扰,均会造成游标卡尺外观出现问题,测量面表面粗糙度过大。同时研磨的不平整还会使得游标卡尺的主尺与底面不垂直;而在使用一段时间后,由于器具的频繁使用,量爪的局部都会产生一定的磨损情况,致使两测量爪合并后产生间隙。不同的磨损部位会造成不同位置的间隙空间,外量爪测量面的根部、中部和尖部等均可能造成合并间隙。

2.使用问题

在游标卡尺的使用过程中也会出现许多常见问题,最常发生的是在量爪合并时,游标零刻线与主尺零刻线无法有效对齐,出现零位误差;其次由于长时间使用的磨损、螺孔之间的碰撞摩擦、游标片在使用一段时间后产生变形且表面附着一定灰尘,会共同导致游标面和主尺刻线面的间距过大。在使用过程中还经常出现示值误差值过大的现象,该问题的原因较为复杂,在排除以上零位误差和游标片与主尺刻线面间距过大的因素后,最关键的原因就在于游标卡尺基面的损耗。在测量时由于测量范围大小的不同、使用频率的不同,往往多处不均匀磨损尺身,进而造成示值误差。这其中有一点极易造成使用者忽略,即紧固和松动游标卡尺的螺钉时产生的示值变化。这种示值变化的产生主要是由于尺框弹簧安装间隙过大,在测量时推动尺框使量爪接触工件时用力偏大,量爪发生倾斜。当使用者拧紧加固螺钉时,尺框又发生反向倾斜,使示值发生改变。

五、游标卡尺的调试与修理

l、外观及卡尺部件整修

在对游标卡尺进行外观修理时,第一步先将待修理的卡尺完全拆卸,利用汽油浸泡并逐一清洗干净。对外观有划痕的卡尺应采用细锉消除毛刺、压伤痕及明显的划痕,之后用金相砂布沿着游标卡尺的表面纹路轻微打磨刻线面和主尺。打磨后的尺面尽量保有些许的摩擦力,不宜打磨得过于光亮。若游框、游标和主尺之间由于磨损过多而导致间隙增大,游框发生左右摆动的情况时,检定人员可以使用冲子对游框底面进行冲击使其变形,进而实现消除间隙的目的。

2、量爪的修理

对内爪进行调试和修理时根据不同的内爪类型采取合适的措施,对于圆柱形内量爪来说,要求倒圆半径在小于或等于两量爪厚度的一半情况下才不会产生误差,因此在修理有误差的圆柱形内爪时,可以采取镀铬或焊接的方式将圆柱形内量爪恢复至有效范围内。在修磨时使用专用的工具和油石,在对内爪进行整修后取整小数即卡尺分度值的整数倍,并在卡尺上标注内爪的修正值。而对刀口形内量爪进行调试和修理时,两爪间的相互摩擦的刀口内爪存在的主要问题。在量爪存在较少部分的损耗和折断时,检定人员可采用砂轮打磨修齐。如果量爪磨损较大,折断较长或全部折断,检定人员可将双面量爪打磨修改成单面量爪继续使用。同时检定人员还要对卡尺的微动装置进行调试,其中包括螺杆、螺母、微动游框和紧固螺钉等微小零件。在进行调修时对有问题的零件可以直接更换。当螺钉时常发生松动和脱落的情形时,采取胀大螺钉底部的措施可以较好地固定螺钉,使其不会轻易松动。

3、零值误差的修理

当游标卡尺的整体平面性合格之后,就可以进行零值误差的修理。在对零位调整之前,检定人员要先将卡尺的两测量面进行合并,观察零位情况,如需调整则要先松开游标刻度片,使用小锤轻敲游标处进行调整和对零。若游标卡尺测量面磨损过于严重,或经过检定人员多次修磨后无法实现对零调整,可以使用什锦锉将游标刻度片的圆孔锉成长圆孔以便调节,或改动游标框上的基孔位置进行零值再调整。

4、示值误差的修理

量爪测量面与主尺基面的不垂直、主尺测量面与游框基面的不垂直、弹簧片或微动片存在故障、主尺与游框间的间隙太大、各零部件磨损情况不一等问题都会造成游标卡尺的示值产生误差,这就需要检定人员根据游标卡尺的实际情况,有针对性地对误差进行修正。由于示值误差是卡尺各部分误差的综合体现,因此在其他部分的修正完成后,示值误差通常都会随之消除。

参考文献

[1]JJG30-2012,通用卡尺检定规程[S].

上一篇:反思性作业下一篇:初三英文毕业感言

本站热搜