尝试运行pl / sql函数我收到以下错误:
发生了算术,数字,字符串,转换或约束错误。例如,如果尝试将值NULL分配给声明为NOT NULL的变量,或者尝试将大于99的整数分配给声明为NUMBER(2)的变量,则会发生此错误。
这是功能:
CREATE OR REPLACE FUNCTION get_service_yrs
(p_empid IN employees.employee_id%TYPE)
RETURN NUMBER
IS
v_yrsjh NUMBER(3,2);
v_yrsemp NUMBER(3, 2);
BEGIN
SELECT SUM(TRUNC(((end_date-start_date)/365),2))
INTO v_yrsjh
FROM job_history
WHERE employee_id=p_empid;
IF SQL%NOTFOUND THEN
v_yrsjh:=0;
END IF;
SELECT TRUNC(((sysdate-hire_date)/365), 2)+v_yrsjh
INTO v_yrsemp
FROM employees
WHERE employee_id=p_empid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202, 'Wrong employee id');
END IF;
DBMS_OUTPUT.PUT_LINE(v_yrsjh);
RETURN v_yrsemp;
END get_service_yrs;
它说错误就是第15行。出了什么问题?
答案 0 :(得分:2)
错误发生在NUMBER(3,2)
我想您希望使用天数,但是您尝试将其置于NUMBER(3,2)
数据类型中,并且当天数大于999时会引发错误。
尝试NUMBER(7)
v_yrsjh
和v_yrsemp