oracle 三种复合类型变量分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,实际项目中,经常遇到的三种复合类型变量。结合部分项目实例做个整理,具体如下:记录类型:记录类型可以包含一个或多个成员,而每个成员的类型可以不同,成员可以是标量类型。也可以引用其他的变量类型。这种类型的
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
幻塔红石柱是哪个服务器的
惠康服务器cpu转速过快
dell服务器引导盘
火车票 服务器
佛山德展精工软件开发
请问软件开发能自学吗
网络技术招聘职责
景泰县公安局网络安全保卫大队
sql数据库试图的创建
兰州百信服务器报价
软件开发计划书融资计划书
租用华为云和数据库
朱海仑关于网络安全指示
魔兽裁缝数据库
anytask连接数据库
什么是服务器监控
tp5中取数据库总数
物种查询数据库
高级网络技术是什么
小学生的网络安全标语
安全教育网络安全养成篇
为什么风铃绝地服务器有异常
创鑫互联网科技有限公司
linux 下 网络安全
专升本计算机网络技术基础
网络安全之qq群
企业邮箱配置服务器
抚州网络安全信息港
网络安全四个禁止
网络慢会不会让数据库死锁