1、PL/SQL 过程已成功完成。SQL语句set SERVEROUTPUT ONDECLARETYPE emp_record is RECORD( empno EMP.EMPNO%TYPE, ename EMP.ENAME%TYPE, Job EMP.JOB%TYPE, mgr EMP.MGR%TYPE, hiredate EMP.HIREDATE%TYPE, sal EMP.SAL%TYPE, comm number(10,2):=0, deptno number(3):=10);e_record emp_record;beginselect * into e_recordfrom emp w
2、here empno=7788;dbms_output.put_line(e_record.ename|的工资为:|to_char(e_record.sal); end;/实验结果截图2、声明一张Index_By(关联数组)表,用来接收并存储DEPT表的信息,把部门号作为键,不要忘记部门号是10的倍数。使用循环从DEPT表中将所有部门信息检索到PL/SQL记录表中,然后用另一个循环来显示表中的这些信息。执行结果为:10, ACCOUNTING, NEW YORK20, RESEARCH, DALLAS30, SALES, CHICAGO40, OPERATIONS, BOSTONSET SER
3、VEROUTPUT ONtype dept_type is table OF dept%rowtypeindex by binary_integer;v_count number;dept_list dept_type; select COUNT(*) into v_count FROM dept; for i IN 1.v_count LOOP select * into dept_list(i*10) from dept where deptno=i*10; END LOOP; FOR i IN 1.v_count LOOP DBMS_OUTPUT.PUT_LINE(dept_list(i
4、*10).deptno|,|dept_list(i*10).dname|dept_list(i*10).loc);3、*阅读以下程序,找出出错之处,说明出错原因,预测运行输出结果是什么。请删改错误,加上适当注释后,运行该程序,验证自己的预测是否正确。DECLARE TYPE dept_list IS TABLE OF dept.dname%TYPE; -定义嵌套表 TYPE top5_list IS VARRAY(5) OF dept.loc%TYPE; -定义可变数组 dis_dept dept_list; -嵌套表的声明 num_5 top5_list; -可变数组的声明BEGIN dis
5、_dept(1):=AMGN; IF dis_dept IS NULL THEN dis_dept :=dept_list(BGEN DBMS_OUTPUT.PUT_LINE(dis_dept表当前元素个数为:|to_char(dis_dept.count); END IF; num_5:=top5_list(ORCLCSCO,NULL,NULL); IF num_5(3) IS NULL THEN num_5(3):CPQ num_5(4):DELL FOR COUNTER IN 1.4 LOOP DBMS_OUTPUT.PUT_LINE(NUM_5(COUNTER);END; /*修改:在
6、此处给dis_dept初始化,否则无法使用*/ 4、将上题改为使用INDEX BY BINARY_INTEGER的索引表,则实现同一执行结果,程序要做哪些相应的改变。以下是与上题对应的另一个相关的例子: TYPE dept_list IS TABLE OF dept.dname%TYPE index by binary_integer; -定义索引组织表 -索引表的声明 v_count number(3); -为表元素赋值 IF not dis_dept.exists(2) THEN dis_dept(2) : - dis_dept.extend(2); -索引表无须使用extend(n)增加
7、元素,使用了反而出错 dis_dept(3):EXTEND_ELEMENT v_count:=dis_dept.count;dis_dept表增添元素后的个数为: FOR i IN 1. v_count loop DBMS_OUTPUT.PUT_LINE(dis_dept(i);5、使用%ROWTYPE属性,基于游标student_cur定义记录。显示CS系学生的序号、姓名和年龄等信息。(参见教材P255例11.3)序号 学生姓名 年龄1 李明勇 202 张立 19declare CURSOR student_cur IS SELECT sno, sname,sage FROM student
8、 WHERE sdept= stu_record student_cur%rowtype;DBMS_OUTPUT.PUT_LINE(序号 姓名 年龄 FOR stu_record IN student_cur LOOP DBMS_OUTPUT.PUT_LINE(stu_record.sno| | stu_record.sname|stu_record.sage);6. 阅读以下程序,并写出程序执行结果。CREATE TYPE sname_type IS TABLE OF VARCHAR2(10);CREATE TABLE Mentors ( mentor_id NUMBER(5) CONSTR
9、AINT mentor_pk PRIMARY KEY, mentor_name VARCHAR2(10) NOT NULL, student_name sname_type)NESTED TABLE student_name STORE AS sname_table;INSERT INTO mentors VALUES(10101,王彤,sname_type(王晓芳张纯玉刘春苹); VALUES(10104,孔世杰王天仪韩刘SET SERVEROUT ON DECLARE sname_table1 sname_type; sname_table2 sname_type; sname_table sname_type; BEGIN SELECT student_name INTO sname_table1 FROM mentors WHERE mentor_name = DBMS_OUTPUT.PUT_LINE (集合sname_table1中的元素- FOR i IN 1.sname_table1.COUNT LOOP学生姓名:|sname_table1(i); INTO sname_table2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1