--=============cursor:在pl/sql中用来 处理多行多列(包括0行) 的记录数据===================== -- Cursor: oracle使用专有的sql 工作区(private sql workparea)来执行sql语句,存储信息.这个工作区称之为cursor --oracle每执行每一个sql语句都有唯一的cursor与之对应. --2.游标的分类 ----显示游标:即用户自定义游标,专门用于处理select语句返回的多行数据 ----隐式游标:系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句 --3.游标使用的一般过程: ----显式游标:声明(declare), 打开(open,执行sql语句,产生结果集), 读取(fetch,提取结果集中记录), 关闭(close) ------显示cursor的属性: ------属性 类型 描述 ------%isopen boolean open--> true ------%notfound boolean 前一个fetch没有返回一行记录-->true ------%found boolean 前一个fetch返回一行记录-->true,同%notfound相反. ------%rowcount number 到目前为止 cursor已提取的总行数 ----隐式游标:直接使用读取,声明、打开、关闭都是系统自动进行的 ------隐式cursor的属性: ------ 属性 类型 描述 ------SQL%isopen boolean dml执行为true,结束后false; ------SQL%notfound boolean sql%found属性返回值相反 ------SQL%found boolean dml操作成功 true ------SQL%rowcount number dml执行成功的数据行数 --======显式游标============================================ ---=============================================================================== declare --声明游标: Cursor is select xxx ; 在没有open之前 不会执行该select语句 Cursor c_emp is select * from emp where deptno = 10 or deptno = 20; v_emp emp%rowtype; --声明变量,用来接收从cursor中的取出的每一条数据 begin open c_emp; --打开cursor ,开始执行select 语句 loop --循环读取cursor结果 fetch c_emp into v_emp; --从结果集中取数据到v_emp变量,并移动指向数据的指针 if c_emp%FOUND --如果上一个fetch找到记录 就返回true . then dbms_output.put_line(v_emp.ename); else EXIT; end if; end loop; close c_emp; --关闭close,释放资源 end; --2.record类型 + while处理cursor declare -- 定义record类型 type r_emp_rec is record( eid emp.empno%type, name emp.ename%type ); Cursor c_emp_cursor is select empno , ename from emp where empno = 7900; v_emp r_emp_rec;--声明 v_emp 记录类型的变量 begin open c_emp_cursor; --必须先fetch,c_emp_cursor%found的值才会是true或false, - --若不fetch, c_emp_cursor%found的值为null fetch c_emp_cursor into v_emp; --通过循环处理结果集中的数据,若c_emp_cursor%Found的值为false,循环结束 while c_emp_cursor%FOUND LOOP dbms_output.put_line(v_emp.name); fetch c_emp_cursor into v_emp; --再次fetch end loop; close c_emp_cursor; end; / -- 3 . record类型 + for处理cursor +游标参数 -- ----For循环对cursor的处理进行了集成, ------ 不需要open、循环处理fetch、close。cursor中的数据通过for循环中的记录类型的变量emp执行引用。 declare -- type t_emp_rec is record( -- salary emp.sal%type, name emp.ename%type -- ); -- v_emp t_emp_rec; Cursor c_emp(emp_id number) is -- emp_id是参数 select sal , ename from emp where empno = emp_id; begin for emp in c_emp(7900) LOOP dbms_output.put_line(emp.ename); end LOOP; end ; / --===========总结============== --cursor的声明 ----1.在游标声明中使用标准的select 语句 ----2.查询中可以用order by来处理次序问题。 ----3.可以在查询中引用变量,但必须在cursor语句之前声明这些变量. Cursor c_emp_id(emp_id number) is select id from service where cost_id = emp_id; --open cursor ----通过open cursor来执行select语句 并标识结果集. ----select语句没有记录返回 不会出现异常. ----open cursor emp_id(5); --fech cursor. ----1.检查当前行 ,把值赋给变量.变量可以是record类型或者标量类型 ----2. fetch cursorName into 变量1,变量2 | record_name ; --cursor结果集处理 ----1.使用loop处理cursor. ----2.每次fetch一行,反复进行. ----3.使用%notfound属性检测一次不成功的提取操作 ----4.使用显示cursor的属性检测提取是否成功,避免死循环. --关闭cursor ----1.最后一条记录,应该关闭cursor.(有需要,可以再次open) ----2,cursor一旦关闭,所有和当前cursor相关的资源都会释放,不能从关闭的 cursor中fetch数据. ----3.对任何关闭的cursor的操作都会invalid_cursor错误。 ----4.每个session打开的cursor数量由open_cursor参数决定 --===========练习================= -- 打印每个员工的ename , id ,不存在则打印not exists; declare Cursor c_emp is --select * from emp where 1 = 2; -- 模拟没有查询到记录 select * from emp where 1 = 1; v_emp emp%rowtype; begin open c_emp; fetch c_emp into v_emp; if c_emp%FOUND then while c_emp%FOUND LOOP dbms_output.put_line(v_emp.ename ||'--------------'|| v_emp.deptno); fetch c_emp into v_emp; exit when c_emp%NOTFOUND; end loop; else dbms_output.put_line('not exists'); end if; close c_emp; end; /
相关推荐
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
单片机C语言Proteus仿真实例占空比可调模拟仿真程序提取方式是百度网盘分享地址
单片机C语言Proteus仿真实例用数码管设计的可调式电子钟提取方式是百度网盘分享地址
2023年第16届中国大学生计算机设计大赛附往届获奖作品合集资料提取方式是百度网盘分享地址
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
需要系数法负荷计算软件
变压器差动计算软件
单片机C语言Proteus仿真实例数码管动态显示提取方式是百度网盘分享地址
Python源码-小海龟之螺旋曲线
Python源码-图形验证码考眼力游戏
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
架空送电线路导地线弧垂计算小软件
W25Q512数据手册。The W25Q512JV (512M-bit) Serial Flash memory provides a storage solution for systems with limited space, pins and power. The 25Q series offers flexibility and performance well beyond ordinary Serial Flash devices. They are ideal for code shadowing to RAM, executing code directly from Dual/Quad SPI (XIP) and storing voice, text and data. The device operates on a single 2.7V to 3.6V power supply with current consumption as low as 1µA for power-down. All devices are offered in space-
完整示例代码
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
单片机C语言Proteus仿真实例数码管显示4×4键盘矩阵按键提取方式是百度网盘分享地址
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
附件1:证券公司及基金管理公司子公司资产证券化业务管理规定(修订稿).pdf
信息可视化类广东省大学生计算机设计大赛三等奖追溯党史数看百年历程视频提取方式是百度网盘分享地址