首页 > 解决方案 > 错误:FUNCTION EMP_SAL_RANKING

问题描述

我不知道为什么这个函数不起作用,我实际上想制作一个函数,根据同一工作类别中员工的当前最低和最高工资计算员工的工资排名

CREATE OR REPLACE  FUNCTION emp_sal_ranking 

(empid NUMBER)

 RETURN NUMBER IS 

 minsal emp.sal%type;


 maxsal emp.sal%type;

 v_jobid emp.job%type;

 v_sal emp.sal%type;

BEGIN

 select job,sal,INTO v_jobid,V_sal from emp 

WHERE empno = empid;

 select MIN(sal),MAX(sal) INTO minsal,maxsal 

from emp

   where job=V_jobid;

   return ((V_sal - minsal)/(maxsal-minsal));

 END emp_sal_ranking;

标签: oracleplsql

解决方案


“不工作”很难调试。这是什么意思?

如果这是你的另一个错别字(真的,你应该更加注意你在做什么),然后删除多余的逗号。之后,函数返回结果。我不知道这是否是您想要的,但是-它“有效”。

SQL> CREATE OR REPLACE FUNCTION emp_sal_ranking(
  2    empid NUMBER
  3  )RETURN NUMBER IS
  4
  5    minsal   emp.sal%TYPE;
  6    maxsal   emp.sal%TYPE;
  7    v_jobid  emp.job%TYPE;
  8    v_sal    emp.sal%TYPE;
  9  BEGIN
 10    SELECT job,
 11           sal                  --> remove comma
 12           into v_jobid,
 13           v_sal
 14    FROM emp
 15    WHERE empno = empid;
 16
 17    SELECT MIN(sal),
 18           MAX(sal)
 19    INTO
 20      minsal,
 21      maxsal
 22    FROM emp
 23    WHERE job = v_jobid;
 24
 25    return((v_sal - minsal)/(maxsal - minsal));
 26  END emp_sal_ranking;
 27  /

Function created.

SQL> select emp_sal_ranking(7499) from dual;

EMP_SAL_RANKING(7499)
---------------------
                    1

SQL>

推荐阅读