oracle 三种复合类型变量分析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,实际项目中,经常遇到的三种复合类型变量。结合部分项目实例做个整理,具体如下:记录类型:记录类型可以包含一个或多个成员,而每个成员的类型可以不同,成员可以是标量类型。也可以引用其他的变量类型。这种类型的
千家信息网最后更新 2025年11月07日oracle 三种复合类型变量分析
实际项目中,经常遇到的三种复合类型变量。结合部分项目实例做个整理,具体如下:
记录类型:记录类型可以包含一个或多个成员,而每个成员的类型可以不同,成员可以是标量类型。也可以引用其他的变量类型。这种类型的特点是比较适合处理查询语句中有多个列的情况,最常用的情况就如在调用某一张表中的一行记录。
索引表类型(关联数组):索引表类型和数组相似,他利用键值查找对应的值,这里的键值同真正数组的下标不同,索引表中下标允许使用字符串。数组的长度不是固定值,可以根据需要自动增长。其中的键值是整数或是字符串,其中的值就是普通的标量类型,也可以是记录类型。(下标从1开始)
VARRAY 变长数组:变长数组的元素个数需要限制,他是一个存储有序元素的集合,数组的下标从1开始,适合较少数据时使用。
eg1:记录类型-declare type pro_x is record (v_id product_info.id%type, v_name varchar2(10), v_price number(8,2)); v_pro pro_x;//声明变量 v_pro,v_pro的数据类型是pro_x类型。 begin select id,name,price into v_pro from product_info where id='11011211410086'; dbms_output.put_line('id:'||v_pro.v_id||','||'name:'||v_pro.v_name||','||'price:'||v_pro.v_price); end; 记录类型声明方式:type type_name is record(field_name datatype[not null]{:=|default}expression) 说明:not null 可以约束记录成员非空。 可以使用%rowtype进行代替,实现上述功能。即: declarev_pro product_info%rowtype; begin select id,name,price into v_pro from product_info where id='11011211410086'; dbms_output.put_line('id:'||v_pro.id||','||'name:'||v_pro.name||','||'price:'||v_pro.price); end; eg2:索引表类型(关联数组)---×××校验 declare type TiArray is table of integer; type TcArray is table of varchar2(1); type id_emp is table of qlr_info%type index by binary_integer; rst id_emp; W TiArray; A TcArray; S integer; tab varchar2(200); zuihyw varchar2(1); jieguo number; shenfzh varchar2(20); cursor c is select zjbh from qlr_info where length(zjbh)=18 and zjzl='居民×××' and regexp_like(substr(zjbh,1,17),'^[0-9]*$');//regexp_like(substr(zjbh,1,17),'^[0-9]*$') 表示查找截取的前17为字符串为数字。^:匹配开始位置;$:匹配结束位置;*:匹配零次或多次。 begin W:=TiArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); A:=TcArray('1','0','X','9','8','7','6','5','4','3','2');for emc in c loopS:=0;shenfzh:=emp.zjbh;for i in 1..17 loopS:=S+to_number(substr(shenfzh,i,1)*W(i));end loop;jieguo:=S mod 11;zuihyw:=A(jieguo+1);zuihyw2:=substr(shenfzh,18,1);if (zuihyw<>zuihyw2) thendbms_output_line('证件编号:'emp.zjbh||'错误!')end if;end loop;end;eg2.1使用字符串为键值的索引表declaretype pro is table of number(8) index by varchar2(20);v_pro pro;beginv_pro('test'):=253;v_pro('test1'):=256;dbms_out.put_line(v_pro.first ||','||v_pro(v_pro.first));end;索引表类型声明:type type_name is table of {column_type|variable_name%type|table_name%rowtype}[not null] index by {pls_integer|binary_integer|varchar2(v_size)}eg3,变长数组declaretype varr is varray(10) of varchar2(10);//定义数组长度10v_pro varr:=varr('1','2');//初始化了两个元素(最多可以初始化10个)beginv_pro(1):='haha';v_pro(2):='ouou';dbms_output.put_line(v_pro(1)||','||v_pro(2));end;变长数组声明:type type_name is {varray|varying array}(size_limit)of element_type[not null] 2016.05.11
类型
数组
索引
下标
字符
字符串
成员
变量
元素
不同
位置
多个
数据
标量
长度
项目
关联
普通
有序
相似
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网投资金融解析星钻科技
万方数据库的检索评价结果
太原软件开发品牌
网络安全法主题活动
解决网络安全的有效办法
对于软件开发的总结
成都圆 系统集成软件开发
生存服务器造飞机
nba2k服务器出现问题怎么办
网络安全大赛有哪些项目
电话接通一会无法联接服务器
背景数据库
上海网络技术转让包括什么
云数据库优点
万方数据库现在情况
现在软件开发都用什么编译器
odbc数据库连接的命令
软件开发总监模板
网络安全操作题题库
无锡什么是软件开发
软件开发标的
显示服务器拒绝
检察 网络安全态势
网络安全有哪些防范措施
天河软件开发哪家有实力
网络安全标语解读
网络安全大赛有哪些项目
go可以操作的数据库
网络安全审计器
php 数据库驱动