Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx

上传人:b****0 文档编号:13204950 上传时间:2022-10-08 格式:DOCX 页数:14 大小:37.79KB
下载 相关 举报
Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx_第1页
第1页 / 共14页
Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx_第2页
第2页 / 共14页
Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx_第3页
第3页 / 共14页
Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx_第4页
第4页 / 共14页
Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx

《Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

Oracle实验5PLSQL复合数据类型记录表和可变数组资料Word格式.docx

PL/SQL过程已成功完成。

SQL语句

setSERVEROUTPUTON

DECLARE

TYPEemp_recordisRECORD

(empnoEMP.EMPNO%TYPE,

enameEMP.ENAME%TYPE,

JobEMP.JOB%TYPE,

mgrEMP.MGR%TYPE,

hiredateEMP.HIREDATE%TYPE,

salEMP.SAL%TYPE,

commnumber(10,2):

=0,

deptnonumber(3):

=10

);

e_recordemp_record;

begin

select*intoe_record

fromempwhereempno=7788;

dbms_output.put_line(e_record.ename||'

的工资为:

'

||to_char(e_record.sal));

end;

/

实验结果截图

2、声明一张Index_By(关联数组)表,用来接收并存储DEPT表的信息,把部门号作为键,不要忘记部门号是10的倍数。

使用循环从DEPT表中将所有部门信息检索到PL/SQL记录表中,然后用另一个循环来显示表中的这些信息。

执行结果为:

10,ACCOUNTING,NEWYORK

20,RESEARCH,DALLAS

30,SALES,CHICAGO

40,OPERATIONS,BOSTON

SETSERVEROUTPUTON

typedept_typeistableOFdept%rowtype

indexbybinary_integer;

v_countnumber;

dept_listdept_type;

selectCOUNT(*)intov_countFROMdept;

foriIN1..v_countLOOP

select*intodept_list(i*10)

fromdeptwheredeptno=i*10;

ENDLOOP;

FORiIN1..v_countLOOP

DBMS_OUTPUT.PUT_LINE(dept_list(i*10).deptno||'

'

||dept_list(i*10).dname||'

||dept_list(i*10).loc);

3、*阅读以下程序,找出出错之处,说明出错原因,预测运行输出结果是什么。

请删改错误,加上适当注释后,运行该程序,验证自己的预测是否正确。

DECLARE

TYPEdept_listISTABLEOFdept.dname%TYPE;

--定义嵌套表

TYPEtop5_listISVARRAY(5)OFdept.loc%TYPE;

--定义可变数组

dis_deptdept_list;

--嵌套表的声明

num_5top5_list;

--可变数组的声明

BEGIN

dis_dept

(1):

='

AMGN'

;

IFdis_deptISNULLTHEN

dis_dept:

=dept_list('

BGEN'

DBMS_OUTPUT.PUT_LINE('

dis_dept表当前元素个数为:

||to_char(dis_dept.count));

ENDIF;

num_5:

=top5_list('

ORCL'

CSCO'

NULL,NULL);

IFnum_5(3)ISNULLTHEN

num_5(3):

CPQ'

num_5(4):

DELL'

FORCOUNTERIN1..4LOOP

DBMS_OUTPUT.PUT_LINE(NUM_5(COUNTER));

END;

/*修改:

在此处给dis_dept初始化,否则无法使用*/

4、将上题改为使用INDEXBYBINARY_INTEGER的索引表,则实现同一执行结果,程序要做哪些相应的改变。

以下是与上题对应的另一个相关的例子:

TYPEdept_listISTABLEOFdept.dname%TYPEindexbybinary_integer;

--定义索引组织表

--索引表的声明

v_countnumber(3);

--为表元素赋值

IFnotdis_dept.exists

(2)THEN

dis_dept

(2):

--dis_dept.extend

(2);

--索引表无须使用extend(n)增加元素,使用了反而出错

dis_dept(3):

EXTEND_ELEMENT'

v_count:

=dis_dept.count;

dis_dept表增添元素后的个数为:

FORiIN1..v_countloop

DBMS_OUTPUT.PUT_LINE(dis_dept(i));

5、使用%ROWTYPE属性,基于游标student_cur定义记录。

显示'

CS'

系学生的序号、姓名和年龄等信息。

(参见教材P255例11.3)

序号学生姓名年龄

1李明勇20

2张立19

declare

CURSORstudent_cur

IS

SELECTsno,sname,sageFROMstudent

WHEREsdept='

stu_recordstudent_cur%rowtype;

DBMS_OUTPUT.PUT_LINE('

序号姓名年龄'

FORstu_recordINstudent_curLOOP

DBMS_OUTPUT.PUT_LINE(stu_record.sno||'

'

||stu_record.sname||'

||stu_record.sage);

6.阅读以下程序,并写出程序执行结果。

{

CREATETYPEsname_typeISTABLEOFVARCHAR2(10);

CREATETABLEMentors(

mentor_idNUMBER(5)

CONSTRAINTmentor_pkPRIMARYKEY,

mentor_nameVARCHAR2(10)NOTNULL,

student_namesname_type

)NESTEDTABLEstudent_nameSTOREASsname_table;

INSERTINTOmentors

VALUES(10101,'

王彤'

sname_type('

王晓芳'

张纯玉'

刘春苹'

));

VALUES(10104,'

孔世杰'

王天仪'

韩刘'

}

SETSERVEROUTON

DECLARE

sname_table1sname_type;

sname_table2sname_type;

sname_tablesname_type;

BEGIN

SELECTstudent_name

INTOsname_table1

FROMmentors

WHEREmentor_name='

DBMS_OUTPUT.PUT_LINE('

集合sname_table1中的元素--'

FORiIN1..sname_table1.COUNTLOOP

学生姓名:

||sname_table1(i));

INTOsname_table2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1