金辉 发表于 2013-5-9 23:19
先抢楼,帮顶
下面是第1题代码,还有待优化
思路:1,使用变量定义员工好为7900应该理解为:v_empno=7900
2,使用记录变量接受该员工的员工信息应该理解为:v_emp_rec emp%ROWTYPE; v_dname dept.dname%TYPE,v_dept_rec dept%ROWTYPE , v_emp_rec.ename,v_emp_rec.sal,v.dept.rec.dname;
3,emp表和dept表之间的关联是emp.deptno = dept.deptno;- SET serveroutput ON
- DEFINE v_empno = 7900
- DECLARE
- v_emp_rec emp%ROWTYPE;
- v_dept_rec dept%ROWTYPE;
- BEGIN
- BEGIN
- SELECT * INTO v_emp_rec FROM emp WHERE empno = '&v_empno' ;
- EXCEPTION
- WHEN TOO_MANY_ROWS THEN
- DBMS_OUTPUT.PUT_LINE('取得结果员工信息错误处理');
- WHEN OTHERS THEN
- NULL;
- END;
- BEGIN
- SELECT d.deptno,d.dname,d.loc INTO v_dept_rec
- FROM emp e,dept d
- WHERE e.deptno = d.deptno AND e.empno = '&v_empno';
- EXCEPTION
- WHEN TOO_MANY_ROWS THEN
- DBMS_OUTPUT.PUT_LINE('取得结果部门信息错误处理');
- WHEN OTHERS THEN
- NULL;
- END;
- DBMS_OUTPUT.PUT_LINE('该员工的信息如下所示:');
- DBMS_OUTPUT.PUT_LINE('员工姓名:'||v_emp_rec.ename);
- DBMS_OUTPUT.PUT_LINE('工资:'||v_emp_rec.sal);
- DBMS_OUTPUT.PUT_LINE('所在部门名称:'||v_dept_rec.dname);
- END;
- /
复制代码 |