关系数据库标准语言SQL12课件

PPT
  • 阅读 114 次
  • 下载 0 次
  • 页数 41 页
  • 大小 1.317 MB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档20.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
关系数据库标准语言SQL12课件
可在后台配置第一页与第二页中间广告代码
关系数据库标准语言SQL12课件
可在后台配置第二页与第三页中间广告代码
关系数据库标准语言SQL12课件
可在后台配置第三页与第四页中间广告代码
关系数据库标准语言SQL12课件
关系数据库标准语言SQL12课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 41
  • 收藏
  • 违规举报
  • © 版权认领
下载文档20.00 元 加入VIP免费下载
文本内容

【文档说明】关系数据库标准语言SQL12课件.ppt,共(41)页,1.317 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92367.html

以下为本文档部分文字说明:

1职工仓库号职工号工资仓库仓库号城市面积供应商供应商号供应商名地址订购单职工号供应商号订购单号订购日期2本章首页本节首页上一页(六)分组及计算查询SQL语言是完备的,也就是说,只要数据按关系方式存入数据库,就能有构造合适的SQL命令把它检索出来。事实上,SQL不仅具有一般

的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、检索某个仓库中职工的最高工资值等。用于计算检索的函数有:1.COUNT——计数2.SUM——求和3.AVG——计算平均值4.MAX——求最大值5.MIN——求最小值这些函数可以用

在SELECT短语中对查询结果进行计算。3本章首页本节首页上一页例20.找出供应商所在地的数目。SELECTCOUNT(DISTINCT地址)FROM供应商;供应商关系共有三个地址:北京、西安和郑州,所以结果为三。注意,除非对关系中的元组

个数进行计数,一般COUNT函数应该使用DISTINCT。比如:SELECTCOUNT(*)FROM供应商;将给出供应商关系中的记录数。供应商(供应商号,单位,地址)例21.求支付的工资总数。SELECTSUM(工资)FROM职工;结果是:6160这个结果是职工关系中工资值

的总和,它并不管是否有重复值。这时若使用命令:SELECTSUM(DISTINCT工资)FROM职工;将得出错误的结果4910职工仓库号职工号工资供应商供应商号供应商名地址4例22.求北京和上海的仓库职工的工资总和。SELECTSUM(工资)FROM职工;WHERE仓库号IN(SELECT仓库号F

ROM仓库WHERE城市=“北京”OR城市=“上海”);结果是:4930例23.求所有职工的工资都多于1210元的仓库的平均面积。SELECTAVF(面积)FROM仓库WHERE仓库号NOTIN(SELECT仓库号FROM职工WHERE工资<=1210);结果是:366.67本章首页本节

首页上一页职工仓库号职工号工资仓库仓库号城市面积5本章首页本节首页上一页这里要注意,以上结果的运算包含了尚没有职工的WH4仓库。如果要排除此仓库,语句应该改为:SELECTAVG(面积)FROM仓库WHERE仓库号NOTIN(SELECT仓库号FROM职工WHERE工资<=1210)AND仓库号

IN(SELECT仓库号FROM职工);350结果是:例24.求在WH2仓库工作的职工的最高工资值。SELECTMAX(工资)FROM职工;WHERE仓库号=“WH2”;1250结果是:与MAX函数相对就的是MIN函数(求最小值)。比如,求最低

工资值可以有如下命令:SELECTMIN(工资)FROM职工;WHERE仓库号=“WH2”;上面几个例子是对整个关系的计算查询,而利用GROUPBY子句进行分组计算查询使用的更加广泛。职工仓库号职工号工资仓库仓库号城市面积6本章首页本节首页上一页例25.求每个仓库的职工平均工资。S

ELECT仓库号,AVG(工资)FROM职工GROUPBY仓库号;WH11230WH21235WH31230结果是:在这个查询中,首先按仓库号属性进行分组,然后再计算每个仓库的平均工资。GROUPBY子句一般跟

在WHERE子句之后,没有WHERE子句时,跟在FROM子句之后。另外,还可以根据多个属性进行分组。在分组查询时,有时要求分组满足某个条件时才检索,这时可以用HAVING子句来限定分组。例26.求至少有两

个职工的以上仓库的平均工资。!!!SELECT仓库号,COUNT(*),AVG(工资)FROM职工;GROUPBY仓库号HAVINGCOUNT(*)>=2;WH121230WH221235结果是:HAVING子句总是跟在GROUPB

Y子句之后,不可以单独使用。HAVING子句和WHERE子句不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。职工仓库号职工号工资7本章首页本节首页上一页COMPUTE子句的格式GROUPBY子句能完成汇总,但是却

不能显示细节。当我们希望在分组的细节后显示汇总结果时,GROUPBY子句就无能为力了。这时我们可以使用COMPUTE子句,该子句的功能和GROUPBY子句有相似之处,即可以完成分组汇总的功能;不同之处是利用COMPUT

E子句,汇总结果是附加在细节之后显示的,这样用户既能看到细节,又能看到汇总行。COMPUTE<函数名>(<列名>)[,<函数名>(<列名>)…][BY<列名>[,<列名>…]]这里<函数名>只能是用于SELECT计算查询的函数SUM、AV

G、MIN、MAX和COUNT。COMPUTE子句中的BY子句是用来说明分组的,如果在COMPUTE子句中不使用BY子句,则是对整个表进行汇总。需要强调的是如果这里使用BY子句,也必须使用ORDERBY子句,BY子句指出的列必须和ORDERBY子句指出的列顺序相

同,但BY子句的列数可以少于ORDERBY子句的列数。8SELECTDISTINCT<列名>*,FROM<表名>,WHERE<查询条件>BY<列名>GROUP,HAVING<谓词>BY<列名>ORDERASCD

ESC<COMPUTE短语>;9本章首页本节首页上一页比如,ORDERBY子句是:ORDERBYa,b,cCOMPUTE…By子句的三种形式:COMPUTE…Bya,b,cCOMPUTE…Bya,bCOMPUTE…Bya

例27.列出职工全部记录并计算各仓库的平均工资小计,最后给出全体职工的平均工资和工资总和(使用COMPUTE…BY)。SELECT仓库号,职工号,工资FROM职工ORDERBY仓库号COMPUTEAVG(工资),SUM(工资)BY仓库号COMPUTEAVG(工资),SUM(工资)

;职工仓库号职工号工资10sum====1230avg====1232sum====6160结果是:WH1E31210WH1E71250avg====1230sum====2460WH2E11220WH2E41250

avg====1235sum====2470WH3E61230avg====1230例28.列出职工全部记录并计算全体职工的平均工资和工资总和(使用COMPUTE)。SELECT仓库号,职工号,工资FROM职工COMPUTEAVG(工资),SUM(工资);结果是:WH2

E11220WH1E31210WH2E41250WH3E61230WH1E71250avg====1232sum====6160职工仓库号职工号工资11职工号供应商号订购单号订购日期E3E1E7E6E3E1E3E3OR67OR73OR76OR77OR79OR

80OR90OR91S7S4S4S4S31998/06/231998/07/281998/05/251998/06/131998/07/13(七)利用空值查询假设在订购单关系中,一名职工正在准备订购单,但尚未选定供应商,这样若把信息存入数据库,则供应商号和订购

日期两个属性均为空值,如下表所示。E6OR77E1OR80E3OR90注意,查询空值时要使用ISNULL;而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。SELECT*FROM订购单WHERE供应商号ISNULL;结果是(参见上表):例29.找尚未确定供应商的

订购单。订购单12表4-4常用的查询条件查询条件谓词比较=、>、<、>=、<=、!=、<>、!>、!<;确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE%和_空值ISNULL,ISNOTNULL多重条件AND,

OREXISTS、NOTEXISTSUNIQUEALL、ANY13例30.列出已经确定了供应商的订购单信息。E3S7OR671998/06/28E1S4OR731998/07/28E7S4OR761998/05/25E3S4OR

791998/06/13E3S3OR911998/07/13SELECT*FROM订购单WHERE供应商号ISNOTNULL;结果是:本章首页本节首页上一页订购单职工号供应商号订购单号订购日期14(一)简

单查询(二)连接查询(三)嵌套查询(四)几个特殊算符(六)分组及计算查询(七)利用空值查询(五)排序查询SQL查询语句15SELECT城市FROM仓库WHERE仓库号IN(SELECT仓库号FROM职工WHERE职工号IN(SELECT职工号FROM订订购单WHE

RE供应商号IN(SELECT供应商号FROM供应商WHERE地址=“北京”)));结果是:北京上海(八)多层嵌套查询例31.找出哪些城市的仓库向北京的供应商发出了订购单。这里我们所要求的信息出自仓库关系,但相关条件与订购单关系有关,为此又要涉及到职工关系和订购单关系和供应商关系,也就是说这

个查询将涉及到四个关系。事实上,我们希望检索的是仓库元组,最后这个订购单元组要对应一个地址属性值为“北京”的供应商元组。完成这个查询的SQL命令是:职工仓库号职工号工资仓库仓库号城市面积供应商供应商号供应商名地址订购单职工号供应商号订购

单号订购日期16例32.给出有北京仓库订购单的北京供应商的名称。SELECT供应商名FROM供应商WHERE地址=“北京”AND供应商号IN(SELECT供应商号FROM订购单WHERE职工号IN(SELECT职工号FROM职工WHERE

仓库号IN(SELECT仓库号FROM仓库WHERE城市=“北京”)));结果是:爱华电子厂华通电子公司职工仓库号职工号工资仓库仓库号城市面积供应商供应商号供应商名地址订购单职工号供应商号订购单号订购日期17(九)别名和自连接查询SELECT

供应商名FROM供应商,订购单,职工,仓库WHERE地址=“北京”AND仓库.城市=“北京”AND供应商.供应商号=订购单.供应商号AND订购单.职工号=职工.职工号AND订购单.仓库号=仓库.仓库号;例33.用连接操作完成上例的查询。这是一个基于多个关系的连接操作。一般能用

嵌套查询完成的操作,都能用等价的连接查询完成;但是,反之却不一定。一般当查询的数据出自多个关系时,就不适合用嵌套查询,能用连接查询。职工仓库号职工号工资仓库仓库号城市面积供应商供应商号供应商名地址订购单职工号供应商号订购单号订购日期18(九)别名和自连接

查询例33.用连接操作完成上例的查询。在连接操作中,经常需要使用关系名作前缀,有时这样显得很麻烦。因此,SQL允许在FROM短语中为关系名定义别名,格式为:<关系名><别名>比如,刚才的连接语句可以写为:SELECT供应商名FROM供应

商S,订购单P,职工E,仓库WWHERE地址=“北京”ANDW.城市=“北京”ANDS.供应商号=P.供应商号ANDP.职工号=E.职工号ANDE.仓库号=W.仓库号职工仓库号职工号工资仓库仓库号城市面积供应商供应商号供应商名地址订购单职工号供应商号订购单号订购日期19在这个例子中,别名并

不是必须的,但是在关系的自连接操作中,别名就是必不可少的了。SQL不仅可以对多个关系实行连接操作,也可以将同一关系与其自身进行连接,这种连接就称为自连接。在可以进行这种自连接操作的关系上,实际存在着一种特殊的递归联系,即关系中的

一些元组,根据出自同一个值域的两个不同的属性,可以与另外一些元组有一种对应关系(一对多的联系)。本章首页本节首页上一页为了说明自连接,我们假设有一个雇员关系:雇员(雇员号,雇员姓名,经理)其中雇员号和经理两个属性出自同

一个值域,同一元组的这两个属性值是“上、下级”关系。侧图说明了雇员关系和它的一个实例。20雇员姓名雇员号经理1:n雇员雇员号雇员姓名经理E3E4E6E8赵涌钱潮孙洁李渌E3E3E3E6例34.根据雇员关系列

出上一级经理及其职员(被其领导)的清单。SELECTS.雇员姓名,“领导”,E.雇员姓名;FROM雇员S,雇员EWHERES.雇员号=E.经理;结果是:赵涌领导钱潮赵涌领导孙洁孙洁领导李渌这里通过定义别名形成了两个逻辑关系,一个是经理关系S,一个是职

员关系E,结果在关系S和E上的连接实现了我们的检索要求。另外,在SELECT短语中可以有常量,如这里的“领导”。本章首页本节首页上一页21(十)内、外层互相关嵌套查询事实上,有时也需要内、外层互相关的查询。比如,我们在订购单关系中加入一个新字段总金额,

说明完成该订购单所应付出的总金额数,新的订购单关系如下表所示。职工号供应商号订购单号订购日期总金额E3E1E7E6E3E1E3E3S7S4S4S6S4S6S6S3OR67OR73OR76OR77OR79OR80OR90OR911998/06/231998/07/2

81998/05/251998/06/291998/06/131998/07/291998/06/221998/07/133500012000725060003005025600769012560订购单例35.列出每个职工经手的具有最高总金

额的订购单信息。SELECTout.职工号,out.供应商号,out.订购单号,out.订购日期,out.总金额FROM订购单outWHERE总金额=(SELECTMAX(总金额)FROM订购单innerWHERE

out.职工号=inner.职工号);22在这个查询中,外层查询和内层查询使用同一个关系,给它们分别指定别名out和inner。外层查询提供out关系中的每个元组的职工号值给内层查询使用;内层查询利用这个职工号值,确定该职

工经手的具的最高总金额的订购单的总金额;随后外层查询再根据out关系的同一元组的总金额值与该总金额值进行比较,如果相等,则该元组被选择。(十一)超(OUT)连接查询在新的SQL标准中还支持两个新的关系连接运算符,它们与原来我们所了解的等值

连接和自然连接不同。原来的连接是只有满足连接条件,相应的结果才会出现在结果表中;而这两个新的连接运算是,首先保证一个表中满足条件的元组都在结果表中,然后将满足连接条件的元组与另一表的元组进行连接,不满足连接条件的则将来自另一表的属性值置为空值。两个超连接运算符的含义见下表。运算符含义*=

在结果表中包含第一个表中满足条件的所有记录;如果是在连接条件上匹配的元组,则第二个表返回相应值,否则第二个表返回空值。=*在结果表中包含第二个表中满足条件的所有记录;如果是在连条件上匹配的元组,则第一个表返回相应

值,否则第一个表返回空值。23则结果是:WH1北京370E31210WH1北京370E71250WH2上海500E11220WH2上海500E41250WH3广州200E61230如果是左部超连接:SELECT仓库.仓库号,城市,面积,职工号

,工资FROM仓库,职工WHERE仓库.仓库号*=职工.仓库号;则结果是:WH1北京370E31210WH1北京370E71250WH2上海500E11220WH2上海500E41250WH3广州200E61230WH4武汉400如果是自然连接:SELECT仓库.仓

库号,城市,面积,职工号,工资FROM仓库,职工WHERE仓库.仓库号=职工.仓库号;设有仓库和职工两个关系职工仓库号职工号工资仓库仓库号城市面积24作业4.4p103学生(学号,姓名,性别,年龄,所在系)课程(课

程号,课程名,学分)选课(学号,课程号,成绩)UPDATE选课SET成绩=0FROM学生,课程,选课WHERE(选课.学号=学生.学号AND选课.课程号=课程.课程号)AND(姓名=LIKE‟刘*’AND课程名=’高等数学’)UPDATE学生信息INNERJOIN

(课程INNERJOIN成绩ON课程.课程号=成绩.课程号)ON学生信息.学号=成绩.学号SET成绩.期末成绩=0WHERE(学生信息.姓名Like“刘*”)AND(课程.课程名Like“高等数学”);254.7嵌入式SQLSQL语言提供了两种工作方式:交

互式SQL、嵌入式SQL前面介绍的SQL,是作为独立的数据语言可以直接以交互的方式使用的,除此之外,SQL还可以作为子语言嵌入在宿主语言中使用,这里所说的宿主语言就是指我们常见的高级程序设计语言,如C、C++、Java等等。下边主要介绍

SQL作为子语言嵌入在宿主语言中使用的一般方法。把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题:1.嵌入识别问题。宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和S

QL语句。2.宿主语言与SQL语言的数据交互问题。SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用。3.语言的单记录与SQL的多记录的问题。宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的集合,这个矛盾

必须解决。26宿主语言的编译系统不能识别SQL语句。解决这个问题的一般方法是,为SQL语句加一个特殊的前缀,在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句转换为宿主语言的合法函数调用。常用的前缀格式是:EXECSQL如:EXECSQLINSERTINT

O职工VALUES(“WH8”,“E20”,1560);下图示意了嵌入了SQL的应用程序的执行过程。嵌入了SQL语句的应用程序,首先要经过预编译转换成宿主语言源程序,接着由宿主语言的编译系统产生中间代码,然后根据中间代码、宿主语言函数库和SQL函数据库连接产生可执行程序,执行程序时由S

QL语句通过DBMS访问数据库。应用程序预编译编译连接执行应用程序DBMS源程序SQL库函数宿主语言库函数中间代码可执行程序数据库(一)嵌入识别与预编译27(二)数据通信区与主变量在嵌入使用SQL语句的程序中,一般在程

序的前部都要有一条:INCLUDESQLCA这里的SQLCA即是SQL与宿主语言的通信区,它类似于结构变量,各个分量分别反映SQL语句的各种执行状态。负责SQL语句与宿主语言语句数据交换的是主(Host)变量,这种变量既可以用在SQL语句中,又可以用在宿主语言语句

中。本章首页本节首页上一页这种变量必须在DECLARESECTION中说明,说明的格式是:BEGINDECLARESECTION…主变量说明…ENDDECLARESECTION28经以上方式说明的主变量可以在SQL语

句中使用,只是用在SQL语句中时,必须冠以冒号前缀,如:UPDATE仓库SET面积=:wh_areaWHERE仓库号=:whnumb;主变量用在宿主语言语句中时,和一般程序变量的使用方法是一样的。本章首页本节首页上一页下面是在C语言程序中说明主变量的例子:EXECSQLB

EGINDECLARESECTIONcharwhnumb[5]charcity[12]intwh_areaEXECSQLENDDECLARESECTION;29(三)游标(Cursor)宿主语言一般只能在单记录方式下工作,即一次处

理一个记录。而SQL语句的查询结果常常是一张表,它包含多个记录,为此需要用游标(Cursor)作为桥梁做一些特殊处理。与游标有关的命令共有四条:DECLARECURSOROPENFETCHCLOSE通过下面的介绍我们会发现游标类似于文件的概念,

游标有时的含义是整个“文件”,有时的含义是指向某个记录的指针。下面我们通过具体的几条语句来理解游标的概念。定义游标的DECLARECURSOR语句的格式是:EXECSQLDECLARE<游标名>CURSORFOR<SELECT-查询块>;该语句用<SEL

ECT-查询块>定义一个游标(文件),它的内容是:<SELECT-查询块>的查询结果(多个记录组成的表)。30启动或打开游标(文件)的语句是OPEN,其格式是:EXECSQLOPEN<游标名>;该语句的功能是打开或启动指出的游标。

该游标名是用DECLAERCURSOR语句已经定义好的。执行该语句意味着执行在DECLARECURSOR语句中定义的SELECT查询,并使游标(指针)指向查询结果的第一条记录。31读记录的FETCH语句的格式是:EXECSQLFETCH

<游标名>INTO:<主变量1>,:<主变量2>…;该语句的功能是取出游标所指记录并送入主变量,同时向前拨动游标,使游标指向下一条记录。这里的游标必须是已经说明并打开了的,INTO后的主变量要与在DECLARECUR

SOR中SELECT的字段相对应。当查询结果为空,或游标已经指向查询结果集的结尾时,SQLCA.sqlcode的代码将为-1,说明游标没有指向新记录。关闭游标(文件)的CLOSE语句的格式是:EXECSQLCLOSE<游标名>;该语句的功能是关闭或停止指出的游标。

与程序设计语言中的文件相对照,DECLARECURSOR相当于说明了一个文件,OPEN相当于打开文件,FETCH相当于读一条记录,CLOSE相当于关闭文件。EXECSQLDECLARE<游标名>CURSORFOR<SELECT-查询

块>;324.7.3嵌入式SQL的使用技术1.不涉及游标的SQLDML语句【例4.43】给出在C语言中不涉及游标的嵌入式SQLDML语句的使用例子。(1)在学生表中,根据共享变量sno的值查询学生的姓名、性别和年龄。EXECSQLSELECT姓名,性别,年龄IN

TO:name,:sex,:ageFROM学生WHERE学号=:sno;这里,sno、name、sex、age都是共享变量,已在主程序中定义,并用SQL的DECLARE语句说明,在使用时加上“:”作为标识,以区别数据库中的变量。主程序中已先赋值给sno,S

ELECT的查询结果(一条记录)送到共享变量name、sex、age中。33(2)在学生表中插入一条新纪录,数据已在相关的共享变量中。EXECSQLINSERT学生(学号,姓名,性别,年龄)VALUES(:sno,

:name,:sex,:age);如果某个属性值未给出,则自动置为空值。(3)从选课表中删除一个学生的各个成绩,学号在共享变量sno中。EXECSQLDELETEFROM选课WHERE学号=:sno;(4)将所有学生的“MA

THS”课程成绩增加某个值(在共享变量a中)。EXECSQLUPDATE选课SET成绩=成绩+:aWHERE课程号IN(SELECT课程号FROM课程WHERE课程名=„MATHS‟);342.涉及游标的SQL

DML语句当SELECT语句的查询结果为多个元组时,宿主语言程序无法使用,所以一定要有游标机制将多个元组一次一个地传送给宿主语言程序进行处理。具体有以下步骤:①先用游标定义语句定义一个游标和某个SELECT语句对应。②

游标打开后,处于活动状态,此时游标指向查询结果集的第一个元组前。③每执行一次FETCH语句,游标指向下一个元组,并把其值送到共享变量,供程序处理,如此反复,直到所有查询结果处理完毕。④最后关闭游标;关闭的游标也可以重新打开,与新的查询结果集相

对应,在没有打开前不能使用。35【例4.44】在教学数据库中检索成绩不及格的学生信息(学号,姓名,课程,成绩),下面是该查询的一个C函数。#defineNO_MORE_TUPLES!(strcmp(SQLSTATE,

“02000”))Voidsel(){EXECSQLBEGINDECLARESECTIONCharsno[5],sname[9],cname[11];Intg;CharSQLSTATE[6];EXECSQLENDDECLARESECTION;EXECS

QLDECLAREscxCURSORFORSELECT学生.学号,姓名,课程名,成绩FROM学生,课程,选课WHERE学生.学号=选课.学号and课程.课程号=选课.课程号and成绩<60;36EXECSQLOPENscx;While(1){EXECSQL

FETCHFROMscxINTO:sno,:sname,:cname,:g;If(NO_MORE_TUPLES)break;Printf(“%s,%s,%s,%d\n”,sno,sname,cname,g);}EXECSQLCLOSEscx;}这里使用了C语言中的宏定义

NO_MORE_TUPLES,表示查不到元组时,其值为1.在游标处于活动状态时,可以修改或删除游标指向的元组。37【例4.45】在上例中对成绩作如下处理:对不及格的成绩分别加10分,显示不及格的学生信息。修改while(1){…}语句为:While(1){EXE

CSQLFETCHFROMscxINTO:sno,:sname,:cname,:g;If(NO_MORE_TUPLES)break;EXECSQLUPDATE选课SET成绩=成绩+10WHERECURRENTOFscx;Printf(“%s,%s,%s,%d

\n”,sno,sname,cname,g);}383滚动游标的定义和推进之前我们介绍的游标在推进时只能沿查询结果集中的元组顺序一行行推进,不能回退,这给使用带来不便。SQL2标准提供了滚动游标(ScrollCursor)技术,游标在推进时可以上下滚动,

进退自如。(1)滚动游标的定义语句。DECLARE<游标名>SCROLLCURSEFOR<SELECT语句>END_EXEC;与前面的游标定义语句比较,这里多了一个关键字“SCROLL”。滚动游标的打

开和关闭语句与前面一样。39(2)滚动游标的推进语句。NEXTPRIORFIRSTEXECSQLFETCHLASTFROM<游标名>INTORELATIVE<整数><共享变量组>ABSOLLUTE<整数>END_EXEC;其中:NEXT表示把游标从当前位置推进一行;PR

IOR表示把游标从当前位置返回一行;40FIRST表示把游标移向查询结果集的第一行;LAST表示把游标移向查询结果集的最后一行。后两种句法举例说明:RELATIVE3表示把游标从前位置推进3行。RELATIVE-5表示把游标

从前位置返回5行。ABSOLLUTE3表示把游标移向查询结果集的第3行。ABSOLLUTE-5表示把游标移向查询结果集的倒数第5行。41

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?