2013-08-22 57 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

你想要的是一個CASE表達式:

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