関数をコンパイルすると、このエラーが発生します。
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;
/
ポイントは、2 つの数値 (employeeid と、テーブルに既にリストされている給与を増やすパーセンテージ) を取り、更新された給与を返すことです。増やせない理由がわかりません。