记录表TABLE的使用详解
定义记录表(或索引表)数据类型与记录类型相似,但它是对记录类型的扩展。它可以处理多行记录,类似于高级中的二维数组,使得可以在PL/SQL中模仿数据库中的表。
定义记录表类型的语法如下:
1
2
|
TYPE table_name IS TABLE OF element_type [ NOT NULL ] INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARRAY2]; |
记录表中的方法:
方法 |
描述 |
EXISTS(n) |
如果集合的第n个成员存在,则返回true |
COUNT |
返回已经分配了存储空间即赋值了的成员数量 |
FIRST LAST |
FIRST:返回成员的最低下标值 LAST:返回成员的最高下标值 |
PRIOR(n) |
返回下标为n的成员的前一个成员的下标。如果没有则返回NULL |
NEXT(N) |
返回下标为n的成员的后一个成员的下标。如果没有则返回NULL |
TRIM |
TRIM:删除末尾一个成员 TRIM(n) :删除末尾n个成员 |
DELETE |
DELETE:删除所有成员 DELETE(n) :删除第n个成员 DELETE(m, n) :删除从n到m的成员 |
EXTEND |
EXTEND:添加一个null成员 EXTEND(n):添加n个null成员 EXTEND(n,i):添加n个成员,其值与第i个成员相同 |
LIMIT |
返回在varray类型变量中出现的最高下标值 |
例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
DECLARE TYPE dept_table_type IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER; my_dname_table dept_table_type; v_count number(2) :=4; BEGIN FOR int IN 1 .. v_count LOOP SELECT * INTO my_dname_table( int ) FROM dept WHERE deptno= int *10; END LOOP; FOR int IN my_dname_table. FIRST .. my_dname_table. LAST LOOP DBMS_OUTPUT.PUT_LINE( 'Department number: ' ||my_dname_table( int ).deptno); DBMS_OUTPUT.PUT_LINE( 'Department name: ' || my_dname_table( int ).dname); END LOOP; END ; |
例2&3:按一维数组使用记录表例 & 按二维数组使用记录表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
DECLARE --定义记录表数据类型 TYPE reg_table_type IS TABLE OF varchar2(25) INDEX BY BINARY_INTEGER; --声明记录表数据类型的变量 v_reg_table REG_TABLE_TYPE; BEGIN v_reg_table(1) := 'Europe' ; v_reg_table(2) := 'Americas' ; v_reg_table(3) := 'Asia' ; v_reg_table(4) := 'Middle East and Africa' ; v_reg_table(5) := 'NULL' ; DBMS_OUTPUT.PUT_LINE( '地区名称:' ||v_reg_table (1)|| '、' ||v_reg_table (2)|| '、' ||v_reg_table (3)|| '、' ||v_reg_table (4)); DBMS_OUTPUT.PUT_LINE( '第5个成员的值:' ||v_reg_table(5)); END ; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
DECLARE --定义记录表数据类型 TYPE emp_table_type IS TABLE OF employees%ROWTYPE INDEX BY BINARY_INTEGER; --声明记录表数据类型的变量 v_emp_table EMP_TABLE_TYPE; BEGIN SELECT first_name, hire_date, job_id INTO v_emp_table(1).first_name,v_emp_table(1).hire_date, v_emp_table(1).job_id FROM employees WHERE employee_id = 177; SELECT first_name, hire_date, job_id INTO v_emp_table(2).first_name,v_emp_table(2).hire_date, v_emp_table(2).job_id FROM employees WHERE employee_id = 178; DBMS_OUTPUT.PUT_LINE( '177雇员名称:' ||v_emp_table(1).first_name || ' 雇佣日期:' ||v_emp_table(1).hire_date || ' 岗位:' ||v_emp_table(1).job_id); DBMS_OUTPUT.PUT_LINE( '178雇员名称:' ||v_emp_table(2).first_name || ' 雇佣日期:' ||v_emp_table(2).hire_date || ' 岗位:' ||v_emp_table(2).job_id); END ; |
记录表TABLE的使用详解的更多相关文章
- ORACLE中RECORD、VARRAY、TABLE的使用详解(转)
原文地址:ORACLE中RECORD.VARRAY.TABLE的使用详解
- Bootstrap Table使用方法详解
http://www.jb51.net/article/89573.htm bootstrap-table使用总结 bootstrap-table是在bootstrap-table的基础上写出来的,专 ...
- Bootstrap Table 表格参数详解
表格参数 名称 标签 类型 默认 描述 - data-toggle String 'table' 不用写 JavaScript 直接启用表格. classes data-class ...
- UITableView回调和table相关成员方法详解
http://blog.csdn.net/kingsley_cxz/article/details/9123959 1.UITableView的datasource实现: //回调获取每个sectio ...
- Flutter 布局(九)- Flow、Table、Wrap详解
本文主要介绍Flutter布局中的Flow.Table.Wrap控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Flow A widget that implements the ...
- Element table使用技巧详解
1.控制table某些行数不显示 下载附件的需求,有些行有附件,有些没有,所以需要过滤,重点是:Array.filter()使用 <el-card :body-style="{ pad ...
- Bootstrap Table的使用详解
Bootstrap Table是基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序.分页,以及编辑.导出.过滤(扩展)等等的功能.接下来我们来介绍B ...
- lua table操作实例详解
lua_gettable lua_getglobal(L, "mytable") <== push mytable lua_pushnumber(L, 1) & ...
- 11、mysql索引详解
1.索引介绍: 2.建立索引的方法: 注意:索引名称不要相同: (1)在建表的时候,可以增加主键索引的语句如下: 1)例一: create table student1 ( id int(4) not ...
随机推荐
- 浅谈jrebel
有个同事提高个jrebel的工具,提起tomcat的热部署方案. jrebel是一款收费的JVM级的热部署工具包. JVM级的热部署也就是说,可以不重启JVM,让修改或添加的类加载到JVM中. 加载器 ...
- Unity Screen Screen.currentResolution 当前分辨率
The current screen resolution (Read Only). 当前屏幕的分辨率.(只读) If the player is running in window mode, th ...
- 怎么为android控件边缘添加阴影
为控件设置一个有阴影感的背景图片即可,可以使用shape 在自定义shape中增加一层或多层,并错开,即可显示阴影效果.为增加立体感,按钮按下的时候,只设置一层.我们可以通过top, bottom, ...
- Cinder Columns
http://www.screencast.com/users/xiangxinyong/folders/Smaug http://www.screencast.com/t/SLqCyOwtBRl
- 021-动态生成验证码jsp代码模板
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 分布式任务框架elastic-job 学习笔记
官方资料:https://github.com/dangdangdotcom/elastic-job ------------------------------------------------- ...
- lftp 快速使用
登录 lftp username:password@ip:port 设置字符集 set ftp:charset 'gbk' set ftp:charset 'utf-8' 下载文件 mget *.tx ...
- fillder script使用
打开fiddler script editor 在fiddler中Rules -> Customize Rules打开 在editor中点击open, 打开CustomRules.js文件, 对 ...
- CentOS 搭建Redis4 环境
下载 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 安装步骤 tar xvf redis-4.0.10.tar.gz mak ...
- sql数据库基础知识整理,常用函数及常用语法
1常用数据库聚合函数max()min()sum()avg()count() 2字符串处理函数len() 与 datalength() 区别:len是返回字符长度 datalength是返回字节长度 ...