在oracle中插入语句而不使用用户定义的函数

时间:2011-03-05 16:53:13

标签: sql oracle oracle10g

我的表employees包含eno, ename, job, sal, comm列 和像

这样的查询
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。 有没有其他方法可以做到这一点,或者如何才能最好地实现这一目标?

1 个答案:

答案 0 :(得分:2)

当你说

  

我无法将功能tax用于列comm

你的意思是你不允许使用这个功能,或者你无法弄清楚如何使用它?

假设后者,我不明白为什么你不能在INSERT语句中使用函数。但是,您已经完全错误地了解了INSERT语句的语法。

尝试

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

我不知道你的INSERT语句中的amount来自哪里,但鉴于你的函数采用了一个名为p_sal的参数,我猜它是应用于sal列中的值的。 1}}。