PLSQL集合总结

本文详细介绍了PL/SQL中的三种复杂数据类型:索引表、嵌套表和变长数组的特点及用法。通过具体实例展示了每种数据类型的定义方式、特性以及如何在实际编程中应用。
一、索引表
描述
1、索引表只能作为PL/SQL符合数据类型使用,而不能作为表列的数据类型使用。
2、索引表的下标可以为负值,索引表的下标没有限制。
语法
TYPE index_table_type IS TABLE OF element_type
INDEX BY VARCHAR2|BINARY_INTEGER|PLS_INTEGER
identifier type_name
实例
实例一
DECLARE
TYPE ename_table_type IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGET
ename_table ename_table_type;
BEGIN
SELECT ename INTO ename_table(-1) FROM emp
WHERE empno=&no;
dbms_output.put_line('雇员名:'||ename_table(-1));
END;
实例二
DECLARE
TYPE area_table_type IS TABLE OF NUMBER
INDEX BY VARCHAR2(10);
area_table area_table_type;
BEGIN
area_table('北京'):=1;
area_table('上海'):=2;
area_table('广州'):=3;
dbms_output.put_line('第一个元素:'||area_table.first);
dbms_output.put_line('最后一个元素:'||area_table.last);
END;
二、嵌套表
描述
1、嵌套表的元素下标从1开始,并且元素个数没有限制。
2、嵌套表元素的数组元素值可以是稀疏的。
3、嵌套表可以当作表中的列使用
语法一
TYPE type_name IS TABLE OF element_type;
identifier type_name;
实例一
DECLARE
TYPE ename_table_type IS TABLE OF emp.ename%TYPE;
ename_table ename_table_type:=ename_table_type('A','A');
实例二
DECLARE
TYPE ename_table_type IS TABLE OF emp.ename%TYPE;
ename_table ename_table_type;
BEGIN
ename_table:=ename_table_type('MARY','MARY','MARY');
SELECT ename INFO ename_table(2) FROM emp
WHERE empno=&no;
dbms_output.put_line('雇员名:'||ename_table(2));
END;
语法二
当使用嵌套表类型作为表列的数据类型时,必须要为嵌套表列指定专门的存储表
CREATE phone_type IS TABLE OF VARCHAR2(20);
/
CREATE TABLE employee(
id NUMBER,
name VARCHAR2(10),
sal NUMBER(6,2),
phone phone_type
)NESTED TABLE phone STORE AS phone_table;
实例三
往嵌套表插入数据
BEGIN
INSERT INTO employee VALUES(1,'SCOTT',800,
phone_type('0471-3456788','13804711111'));
END;
实例四
检索嵌套表列的数据
DECLARE
phone_table phone_type;
BEGIN
SELECT phone INTO phone_table
FROM employee WHERE id=1;
FOR i IN 1..phone_table.COUNT LOOP
dbms_output.put_line('电话号码:'||phone_table(i));
END LOOP;
END;
跟新嵌套表列的数据
DECLARE
phone_table phone_type:=phone_type('0471-3456788',
'13804711111','0471-2233066','13056278568');
BEGIN
UPDATE employee SET phone=phone_table
WHERE id=1;
END;
三、变长数组
描述
1、该数据类型与高级语言数组非常相似,其元素下标以1开始,并且元素
2、的最大个数是有限制的。
语法一
TYPE type_name IS VARRAY(size_limit) OF element_type [NOT NULL];
identifier type_name;
实例一
DECLARE
TYPE ename_table_type IS VARRAY(20) OF emp.ename%TYPE;
ename_table ename_table_type:=ename_table_type('A','A');
实例二
DECLARE
TYPE ename_table_type IS VARRAY(20) OF emp.ename%TYPE;
ename_table ename_table_type:=ename_table_type('mary');
BEGIN
SELECT ename INTO ename_table(1) FROM emp
WHERE empno=&no;
dbms_output.put_line('雇员名:'||ename_table(1));
END;
基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问题的研究与实现,重点利用Matlab进行算法编程和仿真。p-Hub选址是物流与交通网络中的关键问题,旨在通过确定最优的枢纽节点位置和非枢纽节点的分配方式,最小化网络总成本。文章详细阐述了粒子群算法的基本原理及其在解决组合优化问题中的适应性改进,结合p-Hub中转网络的特点构建数学模型,并通过Matlab代码实现算法流程,包括初始化、适应度计算、粒子更新与收敛判断等环节。同时可能涉及对算法参数设置、收敛性能及不同规模案例的仿真结果分析,以验证方法的有效性和鲁棒性。; 适合人群:具备一定Matlab编程基础和优化算法理论知识的高校研究生、科研人员及从事物流网络规划、交通系统设计等相关领域的工程技术人员。; 使用场景及目标:①解决物流、航空、通信等网络中的枢纽选址与路径优化问题;②学习并掌握粒子群算法在复杂组合优化问题中的建模与实现方法;③为相关科研项目或实际工程应用提供算法支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现逻辑,重点关注目标函数建模、粒子编码方式及约束处理策略,并尝试调整参数或拓展模型以加深对算法性能的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值