黑马程序员技术交流社区
标题:
麻烦各位想想下面两题的Oracle代码怎么写,思路是什么?
[打印本页]
作者:
黄文伯
时间:
2013-5-9 22:55
标题:
麻烦各位想想下面两题的Oracle代码怎么写,思路是什么?
1.编写PL/SQL程序块,使用变量定义员工号为7900,使用记录变量接收该员工号的员工信息(员工姓名、工资和所在部门名称),
并分别将其姓名、工资和所在部门名称打印输出
2.编写PL/SQL程序块更新表emp,定义变量部门编号,根据部门编号更新该部门的员工工资
先对部门编号进行If判断。若部门编号不存在,则显示“该部门不存在”,否则使用case执行以下步骤
部门10的员工增加10%的工资
部门20的员工降低5%的工资
其它部门的员工增加300元的工资
作者:
金辉
时间:
2013-5-9 23:19
先抢楼,帮顶
作者:
黄文伯
时间:
2013-5-10 13:12
金辉 发表于 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;
/
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2