索引表后Word格式文档下载.docx
- 文档编号:19917319
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:27
- 大小:21.32KB
索引表后Word格式文档下载.docx
《索引表后Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《索引表后Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
南京'
=2;
上海'
=3;
dbms_output.put_line(num_table('
));
--把所有员工的姓名打印
typename_table_typeistableofemp.ename%typeindexbybinary_integer;
name_tablename_table_type;
selectenamebulkcollectintoname_tablefromemp;
foriin1..name_table.countloop
dbms_output.put_line('
雇员的名字:
'
||name_table(i));
typeename_table_typeistableofemp.ename%typeindexbybinary_integer;
ename_tableename_table_type;
selectenameintoename_table(-1)fromempwhereempno=&
no;
雇员:
||ename_table(-1));
type..istableof..indexby..
--嵌套表:
--下标从1开始,在使用的时候必须初始化,可以当做表中某一列的数据类型来使用
--初始化了几个元素,只能使用几个元素
typetype_nameistableofelement_type
typenum_table_typeistableofnumber;
num_table:
=num_table_type(1,2,3,4,1,2,3,41,2,3,41,2,3,41,2,3,41,2,3,41,2,3,41,2,3,41,2,3,41,2,3,4);
--创建一个stu表id,age,sname要求name包含firstName和lastName
--定义嵌套表数据类型;
createtypename_table_typeistableofvarchar2(20)
createtablestu(
idnumberprimarykey,
agenumber,
snamename_table_type
)nestedtablesnamestoreasname_table
select*fromstu;
--插入数据:
insertintostuvalues(1,22,name_table_type('
hello'
'
world'
--查询:
selectsnameintoname_tablefromstuwhereid=1;
dbms_output.put_line(name_table(i));
select*fromtable(selectsnamefromstuwhereid=1)
--更新数据
s_namename_table_type:
=name_table_type('
a'
b'
);
updatestusetsname=s_namewhereid=1;
/*
索引表下标可以正也负元素的个数没有限制用的时候可以不用初始化不能作为表中某一列的数据类型
typetype_nameistableofelement_typeindexbybinary_integer/varchar2
嵌套表
下标只能从1开始,元素的个数也没有限制,用的时候必须初始化,初始化几个长度只能使用几个长度,可以作为表中某一列的数据类型
typetype_nameistableofelement_type;
数组:
下标从1开始,元素的个数是有限制的,用的时候必须初始化,可以作为表中某一列的数据类型
*/
typenum_arrayisvarray(10)ofnumber;
--定义一个数组类型
v_numnum_array;
--声明一个数组类型的变量
v_num:
=num_array(1,2,3,4,5,6,7,8,9,10);
v_num(i):
foriin1..v_num.countloop
dbms_output.put_line(v_num(i));
--显示所有员工的姓名,工作,工资,部门名称
typeemp_recordisrecord(
enameemp.ename%type,
jobemp.job%type,
salemp.sal%type,
dnamedept.dname%type
);
--定义一个记录类型
--typeemp_arrayisvarray(20)ofemp_record;
--定义个数组类型
typeemp_table_typeistableofemp_recordindexbybinary_integer;
v_empemp_table_type;
selectename,job,sal,dnamebulkcollectintov_empfromemp,deptwhereemp.deptno=dept.deptno;
foriin1..v_emp.countloop
dbms_output.put(v_emp(i).ename);
dbms_output.put('
'
||v_emp(i).job);
||v_emp(i).sal);
||v_emp(i).dname);
createtypename_arrayisvarray(3)ofvarchar2(20);
agenumber,
snamename_array
)
insertintostuvalues(1,22,name_array('
select*fromtable(selectsnamefromstuwhereid=1)
v_namename_array;
selectsnameintov_namefromstuwhereid=1;
foriin1..v_name.countloop
dbms_output.put_line(v_name(i));
selectename,job,sal,dnamefromemp,deptwhereemp.deptno=dept.deptno;
集合中的方法
--集合中的方法:
--count,exists,limitfirst,last,prior,next,delete
typeename_table_typeistableofvarchar2(20)indexbybinary_integer;
ename_table(-5):
='
张三'
;
ename_table
(1):
lisi'
ename_table(5):
wangwu'
ename_table(10):
zhaoliu'
集合中有'
||ename_table.count||'
个元素'
typeename_table_typeistableofvarchar2(20);
ifename_table.exists
(1)then
dbms_output.put_line(ename_table
(1));
else
请初始化集合'
endif;
--limit用在varray上返回这个集合的最大值,用在索引表或嵌套表上返回null
typename_arrayisvarray(20)ofnumber;
v_name:
=name_array(1,2,34);
集合最大的元素:
||v_name.limit);
||ename_table.limit);
第一个元素的下标:
||ename_table.first);
最后一个元素的下标:
||ename_table.last);
typevistableofnumberindexbyvarchar2(20);
av;
a('
zhangsan'
=12;
=22;
=33;
abc'
||a.first);
||a.last);
--prior,next
下标为5的元素前一个元素的的下标:
||ename_table.prior(5));
标为5的元素后一个元素的下标:
||ename_table.next(5));
下标为5的元素前一个元素的值:
||ename_table(ename_table.prior(5)));
标为5的元素后一个元素的值:
||ename_table(ename_table.next(5)));
--deletedeletedelete(5)delete(5,10)只能用在索引表和嵌套表上不能用在数组上
ename_table.delete(5);
||ename_table(10)||'
v_name.delete;
批量绑定
varray
typevarray_nameisvarray(20)ofelement_type;
集合中方法:
exists(下标值),count,limit,first,last,prior,next,deletedelete(n)delete(m,n)
批量绑定:
forall主要用于:
insertupdatedelete
foralliin1..10000
sql
bulkcollect主要用在selectinto,fetch,dml返回子句
把一万条数据插入到某一张表中
12-14
createtabledemo(idnumber,namevarchar2(20));
typeid_table_typeistableofnumberindexbybinary_integer;
typename_table_typeistableofvarchar2(20)indexbybinary_integer;
id_tableid_table_type;
begin_timenumber;
end_timenumber;
foriin1..10000loop
id_table(i):
name_table(i):
=to_char(i);
begin_time:
=dbms_utility.get_time;
foriin1..id_table.countloop
insertintodemovalues(id_table(i),name_table(i));
end_time:
dbms_output.put_line(end_time-begin_time);
begin_time:
foralliin1..id_table.count
insertintodemovalues(id_table(i),name_table(i));
end_time:
dbms_output.put_line((end_time-begin_time));
--id小于100的name的值前加aa
foriin1..100loop
aa'
||to_char(i);
updatedemosetname=name_table(i)whereid=id_table(i);
--删除前100条数据
deletefromdemowhereid=id_table(i);
--bulkcollect
--打印所有员工的姓名,工资
--emp_table(n)
typeemp_table_typeistableofemp%rowtype;
emp_tableemp_table_type;
select*bulkcollectintoemp_tablefromemp;
foriin1..emp_table.countloop
dbms_output.put_line(emp_table(i).ename||'
||emp_table(i).sal);
--删除10好部门的所有员工,并且返回删除后的员工的名字
typeename_table_typeistableofvarchar2(20)indexbynumber;
deletefromempwheredeptno=10returningenamebulkcollectintoename_table;
foriin1..ename_table.countloop
dbms_output.put_line(ename_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 索引