记录表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 ...
随机推荐
- 牛客网练习赛28A
题目链接:https://www.nowcoder.com/acm/contest/200/A 链接:https://www.nowcoder.com/acm/contest/200/A来源:牛客网 ...
- linux_api之文件操作
本篇索引: 1.引言 2.文件描述符 3.open函数 4.close函数 5.read函数 6.write函数 7.lseek函数 8.i/o效率问题 9.内核用以维护打开文件的相关数据结构 10. ...
- 自定义java代码快捷生成器使用与问题解决
对于很多的工作了有几年的开发人员来说,初期都是逐个单词语法的自己编写的.而一旦技术水平提高了到了一定的层次之后,在同时工作量的加大,要求我们必须加快提高工作效率.因此就可以利用必要的快捷开发手段和工具 ...
- HDU 5335——Walk Out——————【贪心】
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 【补充】docker基础学习
docker 基础知识 之前写了一篇docker未授权访问的文章,现在来补充一下docker基础知识,以便更好的学习docker上的漏洞. docker是一款轻量级的虚拟化的产品,它属于层级化的架构. ...
- Day3下
少女[问题描述]你是能看到第一题的 friends呢.—— hja少女在图上开车, 她们希望把每条边分配给与其相连的点中一个并且每个点最多被分配一条边,问可能的方案数.[输入格式]第一行两个整数
- Android 程序结构介绍
创建好Android开发环境后,创建一个Android Project, 截图如下:
- CheckBox全选、取消全选
关于CheckBox全选取消全选 //全选 $("#SysAllSelectedID").click(function () { $("[name=SysCheckbox ...
- checkBox 全选、全不选、反选
checkBox的使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- Android监听安装卸载
需要通过receiver来监听: 在AndroidManifest.xml文件中注册的receiver中必须加上<data android:scheme="package"/ ...