分享
 
 
 

集合和成员函数

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

有时也被称为索引表(index-by tables),可以在PL/SQL中使用,能够模拟数组的非永久表。

用法:

1、 定义一个PL/SQL表类型

2、 声明这种类型的变量。

3、 将记录添加到PL/SQL表中,并采用与引用数组元素大体相同的方式引用他们

语法:p233

特点:只能有一列和一个主健。但是可以有无数的行

举例:

set serveroutput on

declare--定义PL/SQL表

type my_text_table_type is table of varchar2(200)

index by binary_integer;

type my_emp_table_type is table of employees%rowtype

index by binary_integer;

l_text_table my_text_table_type;

l_emp_table my_emp_table_type;

begin

l_text_table(1) :=’donny’;

l_text_table(2) :=’Chen’;

l_emp_table(10).employee_id :=10;

l_emp_table(10).first_name:=’Sean’;

l_emp_table(10).last_name:=’Dillon’;

l_emp_table(10).email :=’donny@hotmail’;

l_emp_table(10).hire_date:=sysdate;

l_emp_table(10).job_id :=’HR’;

l_emp_table(20).employee_id :=20;

l_emp_table(20).first_name:=’Chris’;

l_emp_table(20).last_name:=’Doo’;

l_emp_table(20).email :=’donny@sina’;

l_emp_table(20).hire_date:=sysdate-5;

l_emp_table(20).job_id :=’IT’;

dbms_output.put_line(l_text_table.count);

dbms_output.put_line(l_emp_table.count);

dbms_output.put_line(l_text_table(1));

dbms_output.put_line(l_text_table(2));

dbms_output.put_line(l_emp_table(1).first_name);

dbms_output.put_line(l_emp_table(2).first_name);

end;

/

关于索引算子:

必须是合法的BINARY_INTEGER,介于--2的31次幂~2的31次幂

从PL/SQL表中删除记录:

declare--定义PL/SQL表

type my_text_table_type is table of varchar2(200)

index by binary_integer;

l_text_table my_text_table_type;

l_empty_table my_text_table_type;

begin

l_text_table(10):=’A value’;

l_text_table(20):=’Another value’;

l_text_table(30):=’third value’;

dbms_output.put_line(l_text_table.count);

l_text_table.DELETE(20);

dbms_output.put_line(l_text_table.count);

l_text_table.DELETE;

dbms_output.put_line(l_text_table.count);

l_text_table(15):=’some text’;

l_text_table(25):=’ some more text’;

dbms_output.put_line(l_text_table.count);

l_text_table:=l_empty_table;

dbms_output.put_line(l_text_table.count);

end;

/

FIRST / NEXT / LAST:

我们知道count返回表中行的数量。

FIRST: 返回PL/SQL表中“第一个”或者最小的索引。LAST则是最后一个。

NEXT返回PL/SQL表中当前索引的下一个索引。NEXT有一个参数,即当前的索引。

Conn scott/tiger

Set serveroutput on

Declare

type my_text_table_type is table of varchar2(200)

index by binary_integer;

l_text_table my_text_table_type;

l_index number;

begin

for emp_rec in (select * from emp) loop

l_text_table(emp_rec.empno):=emp_rec.ename;

end loop;

l_index:= l_text_table.first;

loop

exit when l_index is null;

dbms_output.put_line(l_index ’:’ l_text_table(l_index));

l_index :=l_text_table.next(l_index);

end loop;

end;

/

记录:

TYPE <记录名称 IS RECORD(

字段名1 类型;

字段名2 类型;

。。。。。。

);

记录可以拥有任意数目的不同数据类型的列,而PL/SQL表却不是这样的,只能有一列和一个主健。

declare

type location_record_type is record(

street_addressvarchar2(40),

postal_code varchar2(40),

cityvarchar2(30),

state_province varchar2(25),

contry_idchar(2) not null :=’US’

);

l_my_loc location_record_type;

begin

l_my_loc.street_address:=’

Oracle street

’;

l_my_loc.postal_code:=’10010’;

l_my_loc.city:=’Reston’;

l_my_loc.state_province:=’CA’;

dbms_output.put_line(l_my_loc.street_address);

dbms_output.put_line(l_my_loc.postal_code);

dbms_output.put_line(l_my_loc.city);

dbms_output.put_line(l_my_loc.state_province);

end;

/

绑定变量:

declare

type Numtab is table of char(15) index by binary_integer;

type Nametab is table of char(25) index by binary_integer;

vnums Numtab;

vname Nametab;

t1 char(5);

t2 char(5);

t3 char(5);

procedure get_time( t out number) is

begin

select to_char(sysdate,’sssss’) into t from dual;

end;

begin

for j in 1.. 15000 loop

vnums(j) :=j;

vname(j) :=’vendor nmane ‘ to_char(j);

end loop;

get_time(t1);

forall i in 1.. 15000

insert into vender values(vnums(i), vname(i));

get_time(t2);

for i in 1.. 15000 loop

insert into vender values(vnums(i), vname(i));

end loop;

get_time(t3);

dbms_output.put_line(‘Forall loop ’ to_char(t2-t1));

dbms_output.put_line(‘For loop ’ to_char(t3-t2));

end;

/

declare

type Numtab is table of char(15) index by binary_integer;

type Nametab is table of char(25) index by binary_integer;

vnums Numtab;

vname Nametab;

cursor c1 is select * from vender;

begin

open c1;

fetch c1 bulk collect into vnums, vname;

dbms_output.put_line(vnums.count);

close c1;

end;

/

create or replace type add_ty as object(

h_no number(3),

h_street varchar2(20),

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有