oracle_pl_sql讲解2(游标).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle_pl_sql讲解2(游标)

PL/SQL 目录 显式游标简介 显式游标属性 游标 FOR 循环 带参数的游标 使用游标更新数据 使用多个游标 显式游标简介 此部分将讲解: 区分显式游标和隐式游标 在 PL/SQL 中为什么、何时使用显式游标 如何声明、使用显式游标 声明游标 打开游标 获取数据 关闭游标 显式游标简介 通过前面学习我们知道,在 PL/SQL中使用 SQL SELECT 语句一次只能获取一条记录. 如果你需要执行返回多行记录的 SELECT 语句呢? 例如, 生成有关所有员工的报表. 要返回多行记录, 需要使用显式游标. 游标和上下文区域 Oracle 服务为SQL语句分配一块私有内存区域用于保存相关数据 ,此内存区称为上下文区域( context area ). 每个上下文区域(因而也就是每条 SQL 语句) 都有一个关联的游标. 你可把游标看作上下文区域的标签或指针. 事实上, 游标两者都是. 隐式和显式游标 有两种游标: 隐式游标(Implicit cursors): Oracle自动为所有 SQL DML 语句 (INSERT, UPDATE, DELETE and MERGE) 和 单行 SELECT 语句定义. 显式游标(Explicit cursors): 程序员为多行查询语句声明. 可使用显式游标命名上下文区域并访问其中的数据. 隐式游标的限制 EMPLOYEES 表有多条记录: DECLARE v_salary employees.salary%TYPE; BEGIN SELECT salary INTO v_salary FROM employees; DBMS_OUTPUT.PUT_LINE( Salary is : || v_salary); END; 显式游标 通过显式游标, 你可从数据库获取多条记录, 得到一个可指向每行记录的指针, 逐行处理每条记录. 下面是使用显式游标的部分原因: 它是 PL/SQL 中一次从数据表获取多条记录的唯一方法. 程序语句逐行获取每行记录, 程序员可更灵活的处理数据. 显式游标示例 下例使用显式游标获取亚洲国家的国家名和国庆节日期. 显式游标 多行查询返回的记录集称为活动集( active set ), 保存在上下文区域中. 包括符合查询条件的所有记录. 显式游标 把上下文区域 (通过 cursor 命名) 看成一个盒子, 活动集看作盒子内内容. 获取数据, 必须 OPEN 盒子 每次一行获取所有数据( FETCH ). 数据取完必须 CLOSE 盒子. 显式游标 显式游标 显式游标 游标的活动集由声明游标时给出的语句决定. 语法: 语法中: cursor_name 是 PL/SQL 标识符 select_statement 是没有 INTO 子句的 SELECT 语句 显式游标 游标 emp_cursor 用于从employees表获取 部门 30 的员工的 employee_id 和 last_name. 显式游标 游标 dept_cursor 用于获取 location_id 为1700 的所有部门 信息. 我们想按部门名称升序排列并处理数据. 显式游标 游标中的 SELECT 语句可包含联接, 分组函数和子查询. 下例要获取至少有两名员工的部门 ,包括部门名称和员工人数. 显式游标 游标的 SELECT语句中不能包含 INTO 子句,因为后面用 FETCH 语句获取数据时会有. 如果需要按一定顺序处理记录, 则在游标定义查询中使用 ORDER BY 子句. 游标的 SELECT语句可为任意合法的 SELECT语句,可包含联接, 分组函数和子查询. 如果游标中用到了 PL/SQL 变量, 变量要先于游标定义. 示例 游标中可引用变量 DECLARE v_dept_id NUMBER := 90; CURSOR cur_emp IS SELECT salary FROM employees WHERE department_id = v_dept_id; v_salary NUMBER; BEGIN OPEN cur_emp; LOOP FETCH cur_emp INTO v_salary; EXIT WHEN cur_emp%NOTFOUND; dbms_output.put_line(v_salary); END LOOP; END; 打开游标 OPEN 语句执行游标中的查询语句, 得到活动集, 把游标指针指向活动集第一行. OPEN 语句应当在 PL/SQL 块的执行部分. 打开游标 OPEN 语句执行以下操作: 1. 分配上下文区域 (创建盒子) 2. 执行游标的

文档评论(0)

kelly + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档