"ORA-00905: missing keyword" 用于案例陈述
"ORA-00905: missing keyword" for case statement
DECLARE
var_employee_number VARCHAR2(30);
var_employee_name VARCHAR2(30);
var_salary VARCHAR2(30);
BEGIN
SELECT employee_number,employee_name,
CASE var_salary
WHEN salary <= 10000 THEN salary:= salary* .02 /*I am getting an error over here*/
WHEN salary BETWEEN 10000 AND 15000 THEN salary := salary * .02
WHEN salary BETWEEN 15000 AND 20000 THEN salary := salary * .025
END AS salary INTO var_employee_number,var_employee_name,var_salary
FROM EMPLOYEES
WHERE employee_number := var_employee_number;
dbms_output.put_line('The salary is '||var_salary);
END;
我想写一个案例陈述,如果你的薪水在一个特定的范围内,薪水应该乘以 20% 或 25%,具体取决于薪水范围。
您的 CASE
陈述有几个问题:
CASE var_salary -- you don't need var_salary here
WHEN salary <= 10000 THEN salary:= salary* .02 /*I am getting an error over here*/ -- you don't need "salary:=" here
WHEN salary BETWEEN 10000 AND 15000 THEN salary := salary * .02
WHEN salary BETWEEN 15000 AND 20000 THEN salary := salary * .025
END AS salary
所以更正这些问题应该只是:
CASE WHEN salary <= 10000 THEN salary * 0.2
WHEN salary BETWEEN 10000 AND 15000 THEN salary * 0.2
WHEN SALARY BETWEEN 15000 AND 20000 THEN salary * 0.25
END AS salary
您可能还注意到 <= 10000
和 BETWEEN 10000 AND 15000
的情况相同,因此可以合并。
还要记住 BETWEEN ... AND
是包含值,因此值 15000 将 return 15000 * 0.2
(3000),而不是 * 0.25
.
此外,请注意我更正了您的数字...20% 是 0.2
,而不是 .02
。
DECLARE
var_employee_number VARCHAR2(30);
var_employee_name VARCHAR2(30);
var_salary VARCHAR2(30);
BEGIN
SELECT employee_number,employee_name,
CASE var_salary
WHEN salary <= 10000 THEN salary:= salary* .02 /*I am getting an error over here*/
WHEN salary BETWEEN 10000 AND 15000 THEN salary := salary * .02
WHEN salary BETWEEN 15000 AND 20000 THEN salary := salary * .025
END AS salary INTO var_employee_number,var_employee_name,var_salary
FROM EMPLOYEES
WHERE employee_number := var_employee_number;
dbms_output.put_line('The salary is '||var_salary);
END;
我想写一个案例陈述,如果你的薪水在一个特定的范围内,薪水应该乘以 20% 或 25%,具体取决于薪水范围。
您的 CASE
陈述有几个问题:
CASE var_salary -- you don't need var_salary here
WHEN salary <= 10000 THEN salary:= salary* .02 /*I am getting an error over here*/ -- you don't need "salary:=" here
WHEN salary BETWEEN 10000 AND 15000 THEN salary := salary * .02
WHEN salary BETWEEN 15000 AND 20000 THEN salary := salary * .025
END AS salary
所以更正这些问题应该只是:
CASE WHEN salary <= 10000 THEN salary * 0.2
WHEN salary BETWEEN 10000 AND 15000 THEN salary * 0.2
WHEN SALARY BETWEEN 15000 AND 20000 THEN salary * 0.25
END AS salary
您可能还注意到 <= 10000
和 BETWEEN 10000 AND 15000
的情况相同,因此可以合并。
还要记住 BETWEEN ... AND
是包含值,因此值 15000 将 return 15000 * 0.2
(3000),而不是 * 0.25
.
此外,请注意我更正了您的数字...20% 是 0.2
,而不是 .02
。