2011-03-05 95 views
0

我有列eno, ename, job, sal, commemployees和像插入語句,而無需使用用戶定義的函數

INSERT a new employee 
eno as 7787, 
ename as 'abc', 
job as 'salesman' 
sal as 2000, 
comm as tax amount 

查詢此就像

CREATE OR REPLACE FUNCTION tax 
(p_sal employees.sal%type 
) 
RETURN NUMBER 
IS 
v_tax employees.sal%type; 
BEGIN 
v_tax:= CASE 
     WHEN SAL> 4000 THEN SAL * 0.33 
     WHEN SAL >2500 THEN SAL *0.25 
     WHEN SAL >1500 THEN SAL * 0.20 
     ELSE 0 
     END; 
RETURN v_tax 
END tax; 

功能在INSERT語句我不能使用函數tax作爲列comm。 有沒有其他方法可以做到這一點,或者如何最好地實現?

回答

2

當你說

我不能使用功能tax爲列comm

你的意思是你不能使用該功能,否則你不能弄清楚如何使用它?

假設後者,我不明白爲什麼你不應該能夠在INSERT語句中使用函數。但是,您有INSERT語句的語法完全錯誤。

嘗試

INSERT INTO employee (eno, ename, job, sal, comm) 
    VALUES (7787, 'abc', 'salesman', 2000, tax(2000)); 

我不知道在哪裏amount在你的INSERT語句從何而來,但考慮到你的函數需要一個參數叫做p_sal,我猜它的應用價值在列sal

相關問題