拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第21部分 oracle11g的游标

2020年5月15日 848点热度 0人点赞 0条评论

目录

  • 一、目标
    • 1、理解游标的含义
    • 2、掌握oracle11g中的三类游标的使用方式
    • 3、掌握oracle11g中使用fetch ... bulk collect into进行批量、快速提取数据的方式
    • 4、能够根据不同情况,选取不同的游标进行使用
  • 二、游标简介
  • 三、游标简介2
    • 1、逐行处理查询结果,以编程的方式访问数据
    • 2、游标的类型:
  • 四、隐式游标
    • 1、在PL/SQL中使用DML语句时自动创建隐式游标
    • 2、隐式游标自动声明、打开和关闭,名字固定为 SQL,
    • 3、通过检查隐式游标的属性 可以获得最近执行的DML 语句的信息
    • 4、隐式游标的属性有:
  • 五、select into 语句的异常
  • 六、显式游标
    • 1、sqlserver和oracle游标使用流程
  • 七、使用显示游标更新行
    • 1、允许使用游标删除或更新活动集中的行
    • 2、声明游标时必须使用 SELECT … FOR UPDATE语句
  • 八、循环游标
    • 1、循环游标用于简化游标处理代码
    • 2、当用户需要从游标中提取所有记录时使用
    • 3、循环游标的语法如下:
    • 4、缺点:只能用于查询使用
  • 九、Oracle11g的fetch ... bulk collect into
  • 十、显式游标题目
    • 1、已建立表,如下:
    • 2、完成的任务:
  •  十一、REF游标(参照游标)
    • 1、REF 游标和游标变量用于处理运行时动态执行的 SQL 查询
    • 2、创建游标变量需要两个步骤:
    • 3、用于声明 REF 游标类型的语法为:
    • 4 、打开游标变量的语法如下
  • 5、举例:

一、目标

1、理解游标的含义

2、掌握oracle11g中的三类游标的使用方式

3、掌握oracle11g中使用fetch ... bulk collect into进行批量、快速提取数据的方式

4、能够根据不同情况,选取不同的游标进行使用

二、游标简介

三、游标简介2

1、逐行处理查询结果,以编程的方式访问数据

2、游标的类型:

(1)隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql,不区分大小写。

(2)显式游标:显式游标用于处理返回多行的查询。

(3)REF 游标(参照游标):REF 游标用于处理运行时才能确定的动态 SQL 查询的结果

四、隐式游标

1、在PL/SQL中使用DML语句时自动创建隐式游标

2、隐式游标自动声明、打开和关闭,名字固定为 SQL,

3、通过检查隐式游标的属性 可以获得最近执行的DML 语句的信息

4、隐式游标的属性有:

(1)%FOUND – SQL 语句影响了一行或多行时为 TRUE

(2)%NOTFOUND – SQL 语句没有影响任何行时为TRUE

(3)%ROWCOUNT – SQL 语句影响的行数

(4)%ISOPEN  - 游标是否打开,始终为FALSE

(5)测试

只有在 DML 语句影响一行或多行时,才返回 True
SQL> SET SERVEROUTPUT ON
SQL> 
BEGIN
  UPDATE toys SET toyprice=270
  WHERE toyid= 'P005';
  IF SQL%FOUND THEN
  DBMS_OUTPUT.PUT_LINE(‘表已更新');
  END IF;
END;
/

五、select into 语句的异常

1、NO_DATA_FOUND

2、TOO_MANY_ROWS

 

六、显式游标

1、sqlserver和oracle游标使用流程

SQLSERVER:声明游标、打开游标、使用游标取出记录、关闭游标、deallocate丢弃游标

ORACLE:声明游标、打开游标、使用游标取出记录、关闭游标

2、普通游标使用

3、带参游标的使用

 

七、使用显示游标更新行

1、允许使用游标删除或更新活动集中的行

2、声明游标时必须使用 SELECT … FOR UPDATE语句

3、语法:

(1)更新的语法

  CURSOR <cursor_name> IS
  SELECT statement FOR UPDATE;
  UPDATE <table_name>
  SET <set_clause>
  WHERE CURRENT OF <cursor_name>

(2)删除的语法

    CURSOR <cursor_name> IS
    SELECT statement FOR UPDATE;
    DELETE FROM <table_name>
    WHERE CURRENT OF <cursor_name>

八、循环游标

1、循环游标用于简化游标处理代码

2、当用户需要从游标中提取所有记录时使用

3、循环游标的语法如下:

FOR <record_index> IN <cursor_name>
LOOP
  <executable statements>
END LOOP;

4、缺点:只能用于查询使用

九、Oracle11g的fetch ... bulk collect into

【此方法要远远快于fetch into的方法,尤其是几百万行,几千万行的数据】

declare
  cursor  my_cursor is select ename from emp where deptno=10;
  type  ename_table_type is table of varchar2(10);
  ename_table  ename_table_type;
begin
  open  my_cursor;
  fetch my_cursor bulk collect into  ename_table;
  for  i in 1..ename_table.count  loop
     dbms_output.put_line(ename_table(i));
  end  loop;
  close my_cursor;
end;

十、显式游标题目

1、已建立表,如下:

create table student (xh number, xm varchar2(10));
insert into student values(1,'A'); 
insert into student values(2,'B');
insert into student values(3,'C');
insert into student values(4,'D');
create table address (xh number, zz varchar2(10));
insert  into address values(2,'郑州');
insert  into address values(1,'开封');
insert  into address values(3,'洛阳');
insert  into address values(4,'新乡');

2、完成的任务:

给表student添加一列zz,是varchar2(10)类型;再从address中,将zz字段的数值取出来,对应的插入到

student新增的zz列中。

即:得到的结果:student表中,是:

 XH XM         ZZ
-- ---------- ------
1 A          开封
2 B          郑州
3 C          洛阳
4 D          新乡

或直接用sql语句:【上述只是用于游标的练习】

update student set zz=(select zz from address where address.xh=student.xh);

 十一、REF游标(参照游标)

1、REF 游标和游标变量用于处理运行时动态执行的 SQL 查询

2、创建游标变量需要两个步骤:

(1)声明 REF 游标类型

(2)声明 REF 游标类型的变量

3、用于声明 REF 游标类型的语法为:

TYPE <ref_cursor_name> IS REF CURSOR

[RETURN <return_type>];

 

4 、打开游标变量的语法如下

OPEN cursor_name FOR select_statement;

5、举例:

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年5月18日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号