1、备注:题号相同的题目或者增加的一些题目是11级网络的模拟试题第 1 题, 选择题 (2分):ORACLE中,游标可以分为三类,下面不是Oracle游标的是( 1 )。(1) 系统游标 (2) 显式游标 (3) 隐式游标 (4) REF游标 第 2 题, 选择题 (2分): PL/SQL块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) IS SELECT sal,comm FROM emp WHERE deptno=dnum; 那么正确打开此游标的语句是( 1) (1) OPEN emp_cursor(20); (2) OPEN emp_cursor FO
2、R 20; (3) OPEN emp_cursor USING 20; (4) FOR rmp_rec IN emp_cursor20 LOOP . END LOOP; 第 3 题, 选择题 (2分):有关ORACLE索引说法正确的是(A ) (1) 索引的数据和表的数据分开存储,但索引组织表除外 (2) 所有索引中的数据是顺序排序 (3) 分区表的索引必须统一存储 (4) 只能对分区表的索引进行分区第 4 题, 选择题 (2分):下列有关包的使用说法错误的是( A) (1) 必须先创建包头,然后创建包体 (2) 在不同的包内模块可以重名 (3) 包的私有过程不能被外部程序调用 (4) 包体中
3、的全局过程和函数必须在包第 5 题, 选择题 (2分):以下定义的哪个变量是非法的?( A) (1) var_ab number default:=1; var_ab number default 1; (2) var_ab number not null :=0; (3) var_ab number; (4) var_ab number:=3;第 6 题, 选择题 (2分):PL/SQL块中不能直接使用的SQL命令是(A) (1) drop (2) insert (3) update (4) select-第 7 题, 选择题 (2分):下列有关函数的特点说法错误的是(1) (1) 函数的调
4、用应使用EXECUTE命令 (2) 函数必须定义返回类型 (3) 函数参数的类型可以是OUT (4) 在函数体内可以多次使用RETURN语句第 8 题, 选择题 (2分):函数to_char(to_date(65-10-21,yy-mm-dd),yyyy-mm-dd) 的返回值是 ( 1)。 (1) 2065-10-21 (2) 65-10-21 (3) 1965-10-21 (4) 2185-11-12 你的答案:null-第 9 题, 选择题 (2分):与where salary between 2000 and 3000等价的语句是 ( 1 )。 (1) salary = 2000 an
5、d salary 2000 and salary = 2000 or salary 2000 or salary (select max(assets) from a_db.branch where branch_city=Brooklyn)order by branch_name;-第 23 题, SQL题 (5分):功能:查询每门课程的课程号,以及每门课程考试成绩第一名(可以并列)的学生的姓名,按课程号与姓名升序排列。相关表:A_DB模式中的学生,成绩注意: 1. 创建SQL查询,并定义为一个视图(VIEW)。视图名为:V23 2. 必须按照题目要求的顺序写查询对象列表(select-li
6、st);-create view v23 asselect distinct 课程号,姓名 FROM (select 成绩.*,rank()over(PARTITION by 课程号 order by 分数 DESC NULLS LAST) RK from a_db.成绩)R left join a_db.学生 on R.学号=学生.学号where rk=1order by 课程号,姓名;第 24 题, 程序设计题 (10分): 注意: 函数中不能出现DDL、提交或回退等语句。 题目:学生的平均年龄 相关表:A_DB模式中的“学生“。 请编写一个名为myfun24()的存储函数(无参数),执行
7、如下操作:计算学生的平均年龄(保留2位小数)并函数值返回。 年龄的计算方式:假如今年是m年,学生的注册日期是n年,则年龄为m-n+18。 create or replace FUNCTION myfun24 RETURN NUMBER AS y_var1 NUMBER; y_var2 NUMBER; BEGIN SELECT TO_CHAR(SYSDATE,YYYY)INTO y_var1 FROM dual; SELECT AVG(y_var1 - TO_CHAR(注册日期,yyyy)+18) INTO y_var2 FROM a_db.学生; RETURN y_var2; END; -第
8、24 题, 程序设计题 (10分):注意: 函数中不能出现DDL、提交或回退等语句。题目:1+2+n请编写一个名为F24()的存储函数(无参数),计算 1+2+n 的和。说明:n的值存放在A_DB模式中的“输入参数表”中。-CREATE OR REPLACE FUNCTION F24 RETURN integer as n integer; total integer:=0;BEGIN SELECT 参数值 INTO n FROM a_db.输入参数表 WHERE 题目=1+2+n; FOR e IN 1.n LOOP total:=total+e; END LOOP; RETURN tota
9、l; END; -第 25 题, 程序设计题 (15分):注意: 函数中不能出现DDL、提交或回退等语句。题目:水仙花数在A_DB模式中有一个名为tanbn1(a,b)的表,表中有若干个整数(不要管是否有重复)。请编写一个名为F25()的存储函数(无参数),统计该表中有多少个数是水仙花数,并作为函数返回值返回。说明:如果一个三位数等于其各位数字的立方之和,则该数称为水仙花数。如153=1*1*1+5*5*5+3*3*3。 create or replace function F25 RETURN INTEGER AS m integer:=0;beginfor e in(select * FR
10、OM a_db.tanbn1)loopif e.a=100 and e.a=100 and e.b1000 thenif e.b= trunc(e.b/100)*3+mod(trunc(e.b/10),10)*3+mod(e.b,10)*3then m:=m+1;end if;end IF ;end LOOP ;return m;end; 题目:闰年 在A_DB模式中有一个名为tan3(a)的表,表中有若干个整数(不要管是否有重复),假设这些数表示年份。 请编写一个名为myfun25()的存储函数(无参数),统计该表中有多少个年份是闰年,并作为函数返回值返回。 说明:闰年的计算方法:被400整除,或被4整除而不能被100整除的年份为闰年。SELECT * FROM ACCOUNT;CREATE OR REPLACE FUNCTION myfun25 return integer as total integer:=0;beginfor y in(select * from a_db.tan3)loopif mod(y.a, 400)=0 or(mod(y.a,4)=0 and mod(y.a, 100)=0)then total:=total+1;dbms_output.put_line(y.a);end IF ;END LOOP;return total;END ;