Oracle数据库应用 复习题及答案

1、执行结果: 子块:n1=20,n2=20 主块:n1=10,n2=20

2、使用记录变量查询显示部门号为“10”的部门信息。 3、根据从键盘输入的百分制成绩,判断是否合格。 4、计算并显示10!。 5、输出结果: i=5 i=4 i=3 i=2 i=1

1—5的和为:15

6、通过游标逐行显示staff表中性别为“男”的记录的sno,sname,sbirthday3个字段信息。

7、通过IN 和OUT参数,查询并返回指定编号的员工记录。 8、创建行级触发器“staff_trig”,用于对表“staff”进行DML操作之后,显示相应的操作信息。

六、编写程序

1、SET SERVEROUTPUT ON DECLARE

21

grade CHAR(1):='B'; BEGIN CASE grade

WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('优秀'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('良好'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('中等'); WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('及格'); WHEN 'E' THEN DBMS_OUTPUT.PUT_LINE('不及格'); ELSE DBMS_OUTPUT.PUT_LINE('不存在'); END CASE; END;

2、SET SERVEROUTPUT ON DECLARE

Jch NUMBER:=1; i NUMBER:=1;

n int:=&n; BEGIN

WHILE i<=n LOOP jch:=jch* i; i:= i+1; END LOOP;

DBMS_OUTPUT.PUT_LINE('n的阶乘为:'||jch);

22

END;

3、SET SERVEROUTPUT ON DECLARE

n NUMBER;

CURSOR staff3_cursor(sex CHAR) IS SELECT * FROM staff WHERE ssex=sex; --声明游标

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

OPEN staff3_cursor(‘男’); --打开游标 FETCH staff3_cursor into c1; --提取游标数据行 WHILE staff3_cursor%FOUND LOOP DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); FETCH staff3_cursor into c1; END LOOP;

CLOSE staff3_cursor; --关闭游标 END;

4、SET SERVEROUTPUT ON DECLARE

n NUMBER;

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

23

BEGIN

FOR c1 in staff3_cursor LOOP

DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); END LOOP; END;

5、创建存储过程:

CREATE OR REPLACE PROCEDURE

swap(p1 IN OUT NUMBER, p2 IN OUT NUMBER) IS

v_temp NUMBER; BEGIN

v_temp := p1; p1 := p2; p2 := v_temp; END;

调用存储过程: SET SERVEROUT ON DECLARE

num1 NUMBER :=&num1; num2 NUMBER :=&num2; BEGIN

24

swap(num1, num2);

DBMS_OUTPUT.PUT_LINE('num1 = ' || num1); DBMS_OUTPUT.PUT_LINE('num2 = ' || num2); END;

6、CREATE FUNCTION staff1_fun (c1 IN CHAR)

RETURN staff%ROWTYPE AS

v1_staff staff%ROWTYPE;

BEGIN

SELECT * INTO v1_staff FROM staff WHERE sno=c1;

RETURN v1_staff;

END;

25

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4