表emp中必须有数据,从你的程序来看,每条记录的SAL不能相同,否则也会出错

解决方案 »

  1.   

    修改:应该是同DEPT的记录SAL不能相同
      

  2.   

    将FUNC_FIND_MAXSAL中的
    SELECT empno
      INTO v_empno 
      FROM EMP
    WHERE sal = (SELECT MAX(sal)
                   FROM EMP
                                   WHERE deptno = p_deptno);
    改为
    SELECT MAX(empno)
      INTO v_empno 
      FROM EMP
    WHERE sal = (SELECT MAX(sal)
                   FROM EMP
                                   WHERE deptno = p_deptno);SELECT ...INTO ..语句当无记录符合条件时,将出错。
      

  3.   

    SELECT empno INTO v_empno  FROM EMP WHERE sal = 
    (SELECT MAX(sal) FROM EMP WHERE deptno = p_deptno);当dept表中没有与emp表的deptno对应记录,那么,以上此句会出错.
      

  4.   

    从EMP表结构中发现,主键设置上已有问题,部门一对多员工,员工一对多部门。
    那么,员工表也要设置成联合主键,不能排除一个员工可以同时在几个部门任职.
    PRIMARY KEY ( EMPNO, DEPTNO)