转载于:http://www.itxuexiwang.com/a/shujukujishu/oracle/2016/0216/89.html?1455872314

使用记录类型变量只能保存一行数据,这限制了SELECT语句的返回行数,如果SELECT语句返回多行就会错。Oracle提供了另外一种自定义类型,也就是表类型,它是对记录类型的扩展,允许处理多行数据,类似于表。
创建表类型的语法如下:
TYPE table_name IS TABLE OF data_type [ NOT NULL ]
INDEX BY BINARY_INTEGER ;
语法说明如下:
--table_name  创建的表类型名称。
--IS TABLE  表示创建的是表类型。
--data_type  可以是任何合法的PL/SQL数据类型,例如varchar2。
--INDEX BY BINARY_INTEGER  指定系统创建一个主键索引,用于引用表类型变量中的特定行。

使用表类型的例子:

例一:直接对表类型变量赋值

declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
end;
/

例二:使用表类型变量的方法:变量名.方法名[索引号]

declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp.first||','||new_emp.count||','||new_emp.last);
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
--new_emp.delete(1);
dbms_output.put_line(new_emp.next(1));
end;
//

例三:与游标结合使用#p#分页标题#e#
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
v_num number:=0;
cursor cur_emp is select empno,ename,job,sal from scott.emp;

begin
for v_emp in cur_emp loop
v_num:=v_num+1;
select * into new_emp(v_num) from scott.emp
where ename=v_emp.ename;
end loop;

for i in 1..new_emp.count loop
dbms_output.put_line(new_emp(i).empno ||','||new_emp(i).ename||','||new_emp(i).job||
','||new_emp(i).sal);
end loop;

end;
/
注意:不能直接对表变量赋值:select * into new_emp from scott.emp where deptno=30; 这种赋值方法是错的,赋值需要使用下标,如上面的的例子。

转载于:https://blog.51cto.com/3575196/1743453

oracle 表类型变量的使用相关推荐

  1. oracle 中表变量的用法,oracle 表类型变量的使用

    使用记录类型变量只能保存一行数据,这限制了SELECT语句的返回行数,如果SELECT语句返回多行就会错.Oracle提供了另外一种自定义类型,也就是表类型,它是对记录类型的扩展,允许处理多行数据,类 ...

  2. oracle 表列 自增,ORACLE表建立自增列

    create tablespace studentDB datafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Bo identi ...

  3. Oracle 表空间扩容

    2019独角兽企业重金招聘Python工程师标准>>> 1.查询当前表空间使用情况 col FILE_NAME format a50; col SPACE_NAME format a ...

  4. oracle 创建空文件系统,六分钟学会创建Oracle表空间的实现步骤

    经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西. 1.先查询空闲空间 select tablespace_name,file_id,blo ...

  5. navcat设置oracle表主键自增_初识 Oracle 表空间设置与管理

    本文出自头条号老王谈运维,转载请说明出处. 前言 表空间是 Oracle 特有的一种逻辑结构,是管理和组织 Oracle 数据文件一种方式,一个Oracle 数据库能够有一个或多个表空间,而一个表空间 ...

  6. Oracle 表空间 创建参数 说明

    一. 表空间的说明 官网的几个链接: Logical Storage Structures http://download.oracle.com/docs/cd/E11882_01/server.11 ...

  7. 六分钟学会创建Oracle表空间的步骤

    经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西. 1.先查询空闲空间 select tablespace_name,file_id,blo ...

  8. Zabbix 3.2.6 通过Discovery批量监控Oracle表空间

    一.背景 接到任务,要求对所有数据库的所有表空间进行监控,愿意是遇到表空间不足导致业务数据库的不可用,我们知道通过Zabbix监控Oracle的插件有一些,比如Orabbix或者Pyora,前者通过J ...

  9. zabbix自动发现oracle表空间并监控其使用率

    监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创 ...

最新文章

  1. 史上最强女游戏程序员
  2. python RE库的基本使用!基本定义详细讲解!来源于MOOCpython,课程链接文章末尾有!
  3. 【Spring实战】—— 5 设值注入
  4. Ellipse(椭圆)
  5. IDEA项目搭建七——使用Feign简化消费者端操作
  6. php php_zip.dll,PHP如何开启自带的ZipArchive类,实现压缩解压功能
  7. 8影像计算ndvi landsat_使用GDAL读取遥感影像的信息
  8. Flame v1.4 – 文章、视频、音乐、测验 多功能PHP CMS
  9. POJ1006 中国剩余定理
  10. 很好的开源UI框架Chico UI
  11. Ansible详解(二)——Ansible安装与命令
  12. Mac如何重装系统?
  13. 单目标跟踪 Siamese系列网络:SiamFC、SiamRPN、one-shot跟踪、one-shotting单样本学习、DaSiamRPN、SiamRPN++、SiamMask
  14. 前端实现很哇塞的端扫码功能
  15. 高校医科能转专业去计算机工科,转专业详细(2017最新版)想
  16. 关于解决乱码问题的几个步骤
  17. 2015年6月9日晨_学习
  18. 文化先锋A6客户端自动登陆
  19. vhr部门管理数据库设计与编程
  20. 国标流媒体服务器以ROOT身份运行提示“permission denide”报错解决

热门文章

  1. @autowired注解原理_相见恨晚,一个架构师也不会用的Lombok注解
  2. linux 串口驱动 atmel_set_mctrl何时调用,linux uart serial使用驱动分析
  3. oracle服务器错误,oracle 11g数据库维护中错误总结
  4. python声明_【瞎折腾-03】在Python里面写类型“声明”
  5. git add remote_收藏向 | Git命令与原理速查手册
  6. DeepLearning:手动编辑python实现卷积操作
  7. 深蓝学院《从零开始手写VIO》作业四
  8. 【图像分类】从数据集和经典网络开始
  9. 阿里巴巴副总裁王明强:速卖通向海外输出的跨境零售电商新模式,在全球范围内具备可复制性
  10. 全球及中国橡胶助剂行业需求潜力及未来竞争态势研究报告2021版