вставить оператор в Oracle без использования определенной пользователем функции - PullRequest
0 голосов
/ 05 марта 2011

У меня есть таблица 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 Ответ

2 голосов
/ 05 марта 2011

Когда вы говорите

Я не могу использовать функцию tax для столбца comm

Вы имеете в виду, что вам не разрешено использовать эту функцию, или вы не можете понять, как ее использовать?

Принимая во внимание последнее, я не понимаю, почему вы не сможете использовать функцию в операторе INSERT. Однако у вас совершенно неверный синтаксис оператора INSERT.

Попробуйте

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

Я не знаю, откуда взято amount в вашем операторе INSERT, но, учитывая, что ваша функция принимает параметр с именем p_sal, я предполагаю, что он применяется к значению в столбце sal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...