中南大学oracle数据库期末考试试题及答案 下载本文

IF sales_res.tsales=sales_res.asales THEN

DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'已达到销售额'); ELSE

DBMS_OUTPUT.PUT_LINE('产品:' ||sales_rec.pid||'

销售业绩出色'); END IF; END IF; END LOOP; END;

10、完成以下PL/SQL块,功能是:创建一个交换两数的过程。 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;

11、完成以下PL/SQL块,功能是:创建一个函数dept_name,其功能是接受职员编号后返回职员所在部门名称。(注:部门名称在dept表中,而职员信息在emp表中,职员所在部门号的列名为deptno)

CREATE OR REPLACE FUNCTION dept_name (emp_no NUMBER)

RETURN VARCHAR2 AS dept_no NUMBER(2); result dept.dname%TYPE; BEGIN Selecet deptno into dept_no from emp where empno=emp_no SELECT dname INTO result FROM dept WHERE deptno = dept_no; Return result EXCEPTION

WHEN OTHERS THEN RETURN NULL; END;

12、要执行pack_me包中的order_proc过程(有一个输入参数),假设参数值为?002?,可以输入以下命令: EXECUTE pack_ma.order-proc(‘002’)

13、完成以下PL/SQL块的功能是:创建一个触发器biu_job_emp,无论用户插入记录,还是修改EMP表的job列,都将用户指定的job列的值转换成大写。

CREATE OR REPLACE TRIGGER biu_job_emp

Before insert or update of job on emp For each row BEGIN

:NEW.job :=upper(;new.job) END;

答案 1.A 2.D 3.C 4.A 5.B 6.B 7.B 8.C 9.B 10.C 11.C 12.C 13.A 14.B 15.D 16.C 17.D 18.B 19.A 20.B 21.C 22.C 23.C 24.A 25.A 26.A 27.A 28.A 29.B 30.C 二、填空题(每空2分,共40分) [1] [2] [3] [4] [5] [6] [7] [8] [9] Connect martin/martinpass@aptech Grant select on scott.emp to martin Select * from employee where 1=2 To_char NVL even_number 1..25 SELECT ename INTO empname FROM employee WHERE empno=eno; EXCEPTION [10] OPEN toy_cur [11] FETCH toy_cur INTO my_toy_price; [12] FOR sales_rec IN sales_cur LOOP [13] sales_rec.tsales = sales_rec.asales [14] IN OUT [15] SELECT deptno INTO dept_no FROM emp WHERE empno=emp_no; [16] RETURN result; [17] pack_ma.order_proc(‘002’)

[18] BEFORE INSERT OR UPDATE OF job ON emp [19] FOR EACH ROW [20] UPPER(:NEW.job)