Oracle数据库应用 复习题及答案 下载本文

WHERE deptno='10';

DBMS_OUTPUT.PUT_LINE(r1.deptno||','||r1.dname||','||r1.loc); END;

3、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE

score float:=&score; BEGIN

IF score<0 OR score>100 THEN

DBMS_OUTPUT.PUT_LINE('成绩不合理'); ELSIF score>=60 then

DBMS_OUTPUT.PUT_LINE('合格'); ELSE

DBMS_OUTPUT.PUT_LINE('不合格'); END IF; END;

4、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE

j NUMBER:=1; i NUMBER:=1;

BEGIN

11

LOOP j:=j* i; i:= i+1;

EXIT WHEN i>10;

END LOOP;

DBMS_OUTPUT.PUT_LINE(j); END;

5、写出以下程序块的输出结果: SET SERVEROUTPUT ON DECLARE

s NUMBER:=0;

BEGIN FOR i IN REVERSE 1..5 LOOP

s:=s+i;

DBMS_OUTPUT.PUT_LINE('i='||i)

END LOOP;

DBMS_OUTPUT.PUT_LINE('1--5的和为:END;

6、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE

n NUMBER;

12

'||s); CURSOR staff3_cursor IS SELECT * FROM staff WHERE ssex='男'; --声明游标

c1 staff3_cursor%rowtype;--定义参考游标结构的记录变量 BEGIN

select count(*) into n from staff where ssex='男'; OPEN staff3_cursor; --打开游标 FOR i in 1..n LOOP

FETCH staff3_cursor into c1; --提取游标数据行 DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); END LOOP;

CLOSE staff3_cursor; --关闭游标 END;

7、写出下列存储过程的功能: CREATE PROCEDURE staff2_pro

(c1 IN CHAR,v1_staff OUT staff%ROWTYPE)

AS BEGIN

SELECT * INTO v1_staff FROM staff

WHERE sno=c1; END;

8、写出下列触发器的功能:

13

CREATE TRIGGER staff_trig

AFTER INSERT OR UPDATE OR DELETE ON staff FOR EACH ROW BEGIN

IF INSERTING THEN

DBMS_OUTPUT.PUT_LINE('正在向staff表插入数据!'); ELSIF UPDATING THEN

DBMS_OUTPUT.PUT_LINE('正在staff中更新数据!'); ELSIF DELETING THEN

DBMS_OUTPUT.PUT_LINE('正在staff删除数据!'); END IF; END;

六、编写程序

1、利用标准CASE语句根据grade变量的值ABCDE分别输出“优秀”、“良好”、“中等”、“及格”、“不及格”。

2、使用while循环,编程计算并输出n! 。n从键盘输入。 3、将第五题中第6小题改写成带参数游标并使用while循环来实现。 4、将第五题中第6小题改写成不带参数的游标FOR循环来实现。 5、编写存储过程swap交换两个参数,并写出调用程序。 6、利用存储函数staff_func重做第五题第7小题。

14

参 考 答 案

一、选择题 1. A 2. B 3. BA 4. D 5. B 6. A 7. D 8. C 9. A 10. A 11. B 12. C 13. B 14. B 15. B 16. D 17. B 18. C 19. A 20. D

15