2011-03-05 36 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

相关问题