【发布时间】:2015-12-18 03:26:43
【问题描述】:
我如何创建一个带有 2 个参数 func 和 sal 的过程来验证员工的薪水在 min_salary 和 max_salary 之间(来自 JOBS 表的 2 个列),如果它们不在其中,则需要抛出异常? 另外我正在使用员工表中的行(salary,employee_id,job_id)到目前为止我得到了这个:
CREATE OR REPLACE PROCEDURE check_sal(func employees.job_id%type,sal employees.salary%type)
IS
max_sal jobs.max_salary%type;
min_sal jobs.min_salary%type;
empid employees.employee_id%type;
BEGIN
SELECT e.employee_id,e.salary,e.job_id,j.max_salary,j.min_salary INTO empid,sal,func,max_sal,min_sal
FROM employees e JOIN jobs j ON e.job_id = j.job_id
ORDER by e.employee_id;
FOR i IN empid.FIRST..empid.LAST LOOP
IF(sal < min_sal) OR (sal > max_sal) THEN RAISE_APPLICATION_ERROR(-20000,'OUT OF BOUND');
ELSE DMBS_OUTPUT.PUT_LINE('OK');
END IF;
END LOOP;
END;
我在第 10 行收到错误错误:PL/SQL:语句被忽略。我做错了什么?
【问题讨论】:
-
为什么需要使用employees表中的行?除非我误解了,否则您真正需要做的就是查询作业表。
-
因为你需要从Employees表行中提取salary中的行,所以我们需要将每个员工与作为Jobs表中的行的min_salary和max_salary进行比较
标签: plsql