编译函数时出现此错误。
PLS-00103:遇到符号" *"当期待以下之一时: :=。 (@%;
以下是代码:
CREATE OR REPLACE FUNCTION IncreaseSalary
(para_empid IN employee.employeeid%TYPE, para_increase IN NUMBER)
RETURN NUMBER
IS
v_SalaryOut NUMBER(10,2);
v_salary2 NUMBER;
BEGIN
SELECT Salary INTO v_Salary2
FROM Employee
WHERE employeeid = para_empid;
--this is the area that pertains to the error
(v_salary2 * para_increase) + v_salary2 = v_salaryout;
RETURN v_SalaryOut;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Employee not found.');
END IncreaseSalary;
/
下一部分不是函数的一部分,也不是错误的一部分 但可能有错误。
DECLARE
v_SalaryOutput NUMBER := IncreaseSalary;
BEGIN
IncreaseSalary('01885', '20%');
DBMS_OUTPUT.PUT_LINE ('Increased Salary: ')
|| TO_CHAR(v_SalaryOutput));
END;
/
重点是接受两个数字(employeeid和百分比以增加表中已列出的工资)并返回更新的工资。我不明白为什么我不能成倍增长。
答案 0 :(得分:0)
你不能assign value to variable那样。目标变量应该首先出现。它应该是,
v_salaryout:=(v_salary2 * para_increase)+ v_salary2;
您已将para_increase声明为NUMBER。但是在调用函数时,您传递'20%'作为值。这将导致numeric or value error: character to number conversion error
。
dbms_output语句中有一个额外的括号。
DBMS_OUTPUT.PUT_LINE ('Increased Salary: ' || TO_CHAR(v_SalaryOutput));