2013-08-22 3 views
0

У меня есть хранимая процедура, которая вызывает столбцы таблицы из базы данных примеров, но моя проблема заключается в том, что я хотел бы сделать одно имя столбца переменной, чтобы я мог использовать его в состоянии. Мой код не работает, но я не знаю, как сделать его переменной.Сохраненная процедура - имя столбца таблицы как переменная

Я хочу сделать имя столбца SALARY в виде переменной.

Вот мой код:

CREATE PROCEDURE TAXEXEMPT() 

    DYNAMIC RESULT SETS 1 
    LANGUAGE SQL 

BEGIN 

    DECLARE display CURSOR WITH RETURN TO CLIENT FOR 

     SELECT EMPNO, LASTNAME, SALARY, SALARY AS "TAX EXEMPTION" 
     FROM EMPLOYEE 
     WHERE WORKDEPT BETWEEN 'C01' AND 'D21'; 

     IF (SALARY < 15001) THEN 
      --DO NOTHING 
     ELSEIF (SALARY >= 15001 OR SALARY <= 22000) THEN 
      UPDATE EMPLOYEE SET "TAX EXEMPTION" = SALARY * 1.03; 
     ELSEIF (SALARY >= 22001 OR SALARY <= 32000) THEN 
      UPDATE EMPLOYEE SET "TAX EXEMPTION" = (SALARY * 1.05) + 100; 
     ELSEIF (SALARY >= 32001 OR SALARY <= 45000) THEN 
      UPDATE EMPLOYEE SET "TAX EXEMPTION" = (SALARY * 1.07) + 200; 
     ELSE 
      --DO NOTHING 
     END IF; 

    OPEN display; 

END 

Любой вид помощи будет делать, заранее спасибо.

ответ

3

То, что вы хотите это выражение СЛУЧАЙ:

DECLARE display CURSOR WITH RETURN TO CLIENT FOR 

     SELECT EMPNO, LASTNAME, SALARY, 
        CASE 
        WHEN SALARY < 15001 THEN SALARY 
        WHEN SALARY BETWEEN 15001 AND <= 22000 THEN SALARY * 1.03 
        WHEN SALARY BETWEEN 20001 AND <= 32000 THEN (SALARY * 1.05) + 100 
        ... 
        ELSE SALARY 
        END AS "TAX EXEMPTION" 
     FROM EMPLOYEE 
     WHERE WORKDEPT BETWEEN 'C01' AND 'D21'; 

    OPEN display; 
+0

Большое спасибо. Это действительно помогло мне. Моя путаница теперь исчезла. –

+0

Но у вас есть идея, как выглядит эта блок-схема? –

+0

Я думаю, что это похоже на кучу прямоугольников, связанных стрелками, нет? Серьезно, хотя, я не думаю, что я понимаю вопрос. – mustaccio