sql/plus复合变量之记录复合类型和索引表类型
来源:互联网 发布:网络医生咨询是真的吗 编辑:程序博客网 时间:2024/05/18 01:52
复合变量
用于存放多个值的变量
复合变量必须先定义,再使用
1 记录复合变量
1.1 创建记录复合变量
1.1.1 通过自定义复合类型定义复合变量
type 复合类型名 is record (列名1,列名2,列名3);
变量名 复合类型名
1.1.2 通过rowtype关键之直接创建记录复合类型变量
变量名 表名%rowtype;
解释:比如你需要把得到emp表中查询某一条完整的记录,这些记录包括emp表中一行数据的所有列
就可以使用此种方式创建记录复合型数据
备注:
记录复合型数据只能针对单行多列数据,不能对多行数据进行操作。
DECLARE
--方式一
TYPE rec IS RECORD (--声明复合类型
v_name emp.ename%TYPE,
v_sal emp.sal%TYPE,
v_comm emp.comm%TYPE
);
rec1 rec;--定义记录复合类型变量
--方式二
rec2 emp%ROWTYPE;--定义基于emp表的记录复合变量
BEGIN
--方式一测试
SELECT emp.ename,emp.sal,emp.comm INTO rec1.v_name,rec1.v_sal,rec1.v_comm FROM emp WHERE emp.empno = 7369;
dbms_output.put_line(rec1.v_name||':'||rec1.v_sal);
--方式二测试
SELECT * INTO rec2 FROM emp WHERE emp.empno = 7369;
dbms_output.put_line(rec2.ename||':'||rec2.sal);
END;
/
2 索引表复合变量
别名:pl/sal表
特点:索引下表可以为负值,元素个数不受限制,下标没有限制。元素可以不连续存在
延伸:可以理解为javascript中的数组,长度可以变,元素不连续存在。
1 定义索引表复合类型
注意 定义索引表复合类型需要指定该表存放数据的类型以及索引下标的类型
语法:type 索引表名称 is table of 索引表类型存放数据的类型 index by 索引数据类型(通常为binary_integer)
2 备注:索引表只能针对多行单列数据进行操作。不能操作多列数据
DECLARE
--定义索引表复合类型
TYPE ind IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER;
--声明索引表变量
inds ind;
BEGIN
SELECT emp.ename INTO inds(1) FROM emp WHERE emp.empno = 7369;
SELECT emp.ename INTO inds(2) FROM emp WHERE emp.empno = 7876;
SELECT emp.ename INTO inds(10) FROM emp WHERE emp.empno = 7902;
dbms_output.put_line(inds(1));
dbms_output.put_line(inds(10));
dbms_output.put_line(inds.last);--得到最后一个索引下标
END;
/
3 索引表复合类型和记录复合类型综合运用可以操作多行多列的数据
要点: 定义一个索引表类型,他的存放数据类型定义为记录类型
举例说明:type empindex is table of emp%rowtype index by binary_integer
备注:在查询得到的多行多列数据存放到索引表变量中要注意借助bulk collect关键字
举例:
DECLARE
TYPE empindex IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER;
empind empindex;
BEGIN
SELECT * BULK COLLECT INTO empind FROM emp WHERE emp.deptno = 20;
END;
/
- sql/plus复合变量之记录复合类型和索引表类型
- Oracle pl/sql编程 7---复合变量之记录类型
- Oracle pl/sql编程 8---复合变量之记录表类型
- C++ 变量和复合类型
- c++primer plus复合类型之枚举
- c++primer plus复合类型之指针
- pl/sql之定义并使用变量,复合类型
- pl/sql之定义并使用变量,复合类型
- pl/sql 复合类型,表
- pl/sql 复合类型,记录实例
- pl/sql复合类型
- PL/SQL复合类型
- c++ Primer Plus学习记录(一) 复合类型
- C++之复合类型
- Hive之复合类型
- C++之复合类型
- 复合类型之引用
- 复合类型之指针
- JAVA日期加减运算
- Linux下谷歌浏览器的安装
- 用C语言实现Ping程序功能
- TeX&LaTeX宏包冲突集锦
- 如何消除sharepoint升级到2010后主页上多余的"Home"内容
- sql/plus复合变量之记录复合类型和索引表类型
- (*)使用Boost.Asio编写通信程序
- JDBC开发
- Opengl ES 阴影(shadow)
- Android项目导入出现The type java.lang.Object cannot be resolved.问题解决办法!!
- Android中dip、dp、sp、pt和px的区别
- WebView
- 求python老师一位,周末空闲的
- linux-0.01 boot.s 改编成适合 NASM 语法