欢迎来到天天文库
浏览记录
ID:34725173
大小:49.94 KB
页数:4页
时间:2019-03-10
《oracle聚合函数使用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、集合类似C语言中的数组,在ORACLE7.3及以前的版本中只有一种集合称为PL/SQL表,这种类型的集合依然保留,就是索引(INDEX_BY)表。PL/SQL有三种类型的集合a、Index_by表 b、嵌套表c、VARRAY三种类型的集合之间的差异,包括数据绑定、稀疏性(sparsity)、数据库中的存储能力都有不相同。数据绑定: 绑定涉及到集合中元素数量的限制,VARRAY集合中的元素的数量是有限,Index_by和嵌套表则是没有限制的。稀疏性(sparsity): 稀疏性描述了集合的下标是否有间隔,Index_by表和嵌套表可以是稀疏的
2、,VARRAY类型的集合则是紧密的,它的下标之间没有间隔。存储: Index_by表不能存储在数据库中,但嵌套表和VARRAY可以被存储在数据库中。 Index_by表定义语法如下: TYPEtype_nameISTABLEOFelement_type[NOTNULL]INDEXBYBINARY_INTEGER; 关键字是INDEXBYBINARY_INTEGER,没有这个关键字,那么集合将是一个嵌套表。由于不存储在数据库中, element_type可以是任何合法的PL/SQL数据类型,包括:PLS/INTEGER、SIGNTYPE、和BOOLEA
3、N。嵌套表定义语法如下: 嵌套表非常类似于Index_by表,创建的语法也非常相似。只是没有INDEXBYBINARY_INTEGER子串 TYPEtype_nameISTABLEOFelement_type[NOTNULL]; 存储在一个数据库中的嵌套表并不与表中的其它数据存放在同一个数据块中,它们实际上被存放在第二个表中。 从数据库中取回的嵌套表也不保证元素的顺序。集合数据是离线存储的,所以嵌套表适合大型集合。 VARRAY定义语法如下: TYPEtype_nameIS[VARRAY
4、VARYINGARRAY](max_size)OFele
5、ment_type[NOTNULL]; max_size是一个整数,用于标示VARRAY集合拥有的最多元素数目。VARRAY集合的元素数量可以低于max_size,但不能超过max_size。 element_type是一维元素的数据类型,如果element_type是记录,那么这个记录只能使用标量数据字段(与嵌套标相似)。 VARRAY存储在数据库中时与表中的其他数据存放在同一个数据块中,元素的顺序保存在VARRAY中。 集合是在线存储的,VARRAY很适合于小型集合。 嵌套表和VARRAY都能作为列存储在数
6、据库表中,所以集合自身可以为NULL,当集合为NULL时,用户也不能引用集合中的元素。用户可以使用ISNULL操作符检测集合是否为NULL。1、index_by表:*/declarecursorcur_testisselectid,mcfromtest;typet_test1istableofvarchar2(60)indexbybinary_integer;typet_test2istableoftest%rowtypeindexbybinary_integer;var_test1t_test1;var_test2t_test2;var_newt_test2;beginSELE
7、CTid,mcINTOvar_test2(0)FROMtestWHEREid='111';dbms_output.put_line('var_test2(0):'
8、
9、var_test2(0).id
10、
11、'---'
12、
13、var_test2(0).mc);SELECTid,mcINTOvar_test2(8)FROMtestWHEREid='333';dbms_output.put_line('var_test2(8):'
14、
15、var_test2(8).id
16、
17、'---'
18、
19、var_test2(8).mc);var_new:=var_test2;dbms_output.put_line('
20、===== copyvar_test2tovar_new =====');dbms_output.put_line('var_new(0):'
21、
22、var_new(0).id
23、
24、'---'
25、
26、var_new(0).mc);dbms_output.put_line('var_new(8):'
27、
28、var_new(8).id
29、
30、'---'
31、
32、var_new(8).mc);end;//*嵌套表和VARRAY由构造函数初始化2、嵌套表和VARRAY:*/DECLARETYPEt_test
此文档下载收益归作者所有