游标循环record变量.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
游标循环record变量

游标与循环的嵌套使用方法若干定义游标,打开游标要求事先定义变量,类型同游标取出值特点: l_art_info varchar2(100); OPEN c_art_info; FETCH c_art_info INTO l_art_info;CLOSE c_art_info;案例:隐式打开游标,显式进行循环要求事先定义循环名与游标名的关系:循环名 游标名%ROWTYPE特点:循环与打开游标同时进行FOR (循环名) IN (游标名) LOOP CONTENT;END LOOP;案例:优点:游标和循环定义都非常清晰,简单明了缺点:循环至取完游标内所有数据后自动终止。因此当游标所取数据量很大时,不建议用此循环。显式打开游标,显式进行循环要求事先定义循环名与游标名的关系:循环名 游标名%ROWTYPE特点:游标打开和关闭有需要定义,循环开始和结束也需要定义OPEN 游标名; LOOP FETCH 游标名 INTO 循环名 ; CONTENT; EXIT WHEN 游标名%NOTFOUND ; END LOOP;CLOSE游标名;案例:优点:游标和循环定义都非常清晰,简单明了。(同案例1)缺点:循环至取完游标内所有数据后自动终止。因此当游标所取数据量很大时,不建议用此循环。(同案例1)隐式定义和打开游标,显式进行循环不要求定义循环名与游标名的关系,直接调用REC 循环变量即可。也无需定义游标名称,调用和定义游标同时进行。特点:游标名称无需定义,游标调用方式为先调用后定义。循环开始和结束显式进行。FOR rec IN (定义游标) LOOP CONTENT;END LOOP;案例:优点:不用事先定义游标名称,通过先调用后定义的方式读取游标内的数据,方便。缺点:循环至取完游标内所有数据后自动终止。该游标只能在本次循环内程序部分使用。显式定义和打开游标,循环次数自定义要求事先定义循环名与游标名的关系:循环名 游标名%ROWTYPE ,循环变量为 i特点:循环次数可自定义FOR i IN 1 .. 10 LOOP CONTENT;END LOOP;案例:优点:循环次数可自定义,与RECORD变量配合比较方便。缺点:单独使用时实用性不强。ROWNUM() OVER (PARTITION BY COL1 ORDER BY COL2)的实用方法实例ROWNUM() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)实例:初始化数据create table employee (empid int ,deptid int ,salary decimal(10,2)) COMMIT;BEGINinsert into employee values(1,10,5500.00);insert into employee values(2,10,4500.00);insert into employee values(3,20,1900.00);insert into employee values(4,20,4800.00);insert into employee values(5,40,6500.00);insert into employee values(6,40,14500.00);insert into employee values(7,40,44500.00);insert into employee values(8,50,6500.00);insert into employee values(9,50,7500.00);COMMIT;END ;数据显示为:需求:根据部门分组,显示每个部门工资最高的那个人的部门号以及工资预期结果:脚本:SELECT * FROM (SELECT deptid,salary,ROW_NUMBER() OVER (PARTITION BY DEPTID ORDER BY SALARY DESC) AS RANK FROM employee) T WHERE T.RANK =1;RECORD变量实用方法实例Record变量的实用方法

文档评论(0)

wdjp11801 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档