【发布时间】:2013-10-09 01:27:29
【问题描述】:
这在VARCHAR2 和(4) 旁边有一个错误:
CREATE OR REPLACE FUNCTION Employee_exists
(p_employee_id IN NUMBER)
RETURN VARCHAR2(4);
AS
BEGIN
SELECT employee_id
FROM employees
WHERE employee_id = p_employee_id;
RETURN 'true';
END Employee_exists;
这里说v_years_service的声明旁边有一个错误:
CREATE OR REPLACE FUNCTION Calculate_Bonus(p_salary IN NUMBER, p_startdate IN DATE)
RETURN NUMBER -- here it errors
AS
v_years_service NUMBER;
BEGIN
v_years_service := TRUNC(Months_Between(SYSDATE, v_startdate) /12);
IF (v_years_service <2) THEN
p_bonus := v_salary * 0.02;
ELSE
IF (v_year_service <2) THEN
p_bonus := v_salary * 0.04;
ELSE
p_bonus := v_salary * 0.05;
RETURN p_bonus;
END IF;
END Calculate_Bonus;
/
show err
【问题讨论】:
-
在您的第二个代码块中,最后一个 else 语句永远不会被命中,因为前两个 if 语句处理所有有效值。首先是小于 2 的任何值,第二个是大于或等于 2 的任何值,最后一个 else 语句没有留下任何东西。
标签: sql oracle plsql syntax-error