资源描述:
《浅谈oracle复合数据类型.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、浅谈oracle复合数据类型--本文档可以直接拷贝运行。/*oracle复合数据类型PL/SQL有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。*//*一、记录类型类似C语言中的结构,有两种定义方式:显式定义和隐式定义。*/createtabletest(idvarchar2(20),mcvarchar2(60));insertintotestvalues('111','11111');insertintotestvalues('222','22222');insertintotestvalues('333','33333'
2、);insertintotestvalues('444','44444');insertintotestvalues('555','55555');insertintotestvalues('666','66666');commit;/*1.1、显示定义记录*/setserveroutondeclaretypet_recordisrecord(idtest.id%type,mctest.mc%type);var_recordt_record;counternumberdefault0;begin forrow_testin(selectid,m
3、cfromtest)loop counter:=counter+1; var_record.id:=row_test.id; var_record.mc:=row_test.mc; dbms_output.put_line('var_record:'
4、
5、var_record.id
6、
7、'---'
8、
9、var_record.mc); dbms_output.put_line('row_test:'
10、
11、row_test.id
12、
13、'---'
14、
15、row_test.mc); dbm
16、s_output.put_line('================loop'
17、
18、counter
19、
20、'times.'); endloop; exceptionwhenothersthen dbms_output.put_line(sqlcode
21、
22、sqlerrm);end;//*有一些PL/SQL指令在使用隐式定义记录时没有使用%ROWTYPE属性,比如游标FOR循环或触发器中的ld和:new记录。*//*1.2、隐式定义记录*/隐式定义记录中,我们不用描述记录的每一个域,在声明记录变量时使用%ROWTYPE命令定义与数据
23、库表,视图,游标有相同结构的记录。declaret_record1test%rowtype;cursorcur_test(v_idinvarchar2)isselectid,mcfromtestwhereid<=v_id;t_record2cur_test%rowtype;begin forrow_testincur_test('333')loop t_record1.id:=row_test.id; t_record1.mc:=row_test.mc; t_record2.id:=row_test.i
24、d; t_record2.mc:=row_test.id; dbms_output.put_line('t_record1:'
25、
26、t_record1.id
27、
28、'---'
29、
30、t_record1.mc); dbms_output.put_line('t_record2:'
31、
32、t_record2.id
33、
34、'---'
35、
36、t_record2.mc); dbms_output.put_line('row_test:'
37、
38、row_test.id
39、
40、'---'
41、
42、row_test.mc); dbm
43、s_output.put_line('================loop'
44、
45、cur_test%rowcount
46、
47、'times.'); endloop; exceptionwhenothersthen dbms_output.put_line(sqlcode
48、
49、sqlerrm);end;//*二、集合类似C语言中的数组,在ORACLE7.3及以前的版本中只有一种集合称为PL/SQL表,这种类型的集合依然保留,就是索引(INDEX_BY)表。PL/SQL有三种类型的集合a、Index_by表;b、嵌套表;c、VARRA
50、Y三种类型的集合之间的差异,包括数据绑定、稀疏性(sparsity)、数据库中的存储能力都有不相同。数据绑定