2015-11-05 39 views
2

我正在嘗試創建一個MySQL過程來計算稅收。不過它說我在第9行有一個涉及')'標記的錯誤。任何想法如何解決它?錯誤信息:我的SQL代碼有什麼問題?在最後一行獲取錯誤

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT ((pSalary - taxExempt) * taxRate) INTO taxesDue; END' at line 27 

我的代碼是:

DELIMITER // 

CREATE PROCEDURE calc_state_tax(
IN pSalary DECIMAL(9,2), 
IN pStateCode VARCHAR(2), 
IN pStatus VARCHAR(6), 
OUT taxesDue DECIMAL(9,2) 
) 

BEGIN 
    DECLARE taxRate DECIMAL(7,5); 
    DECLARE taxExempt DECIMAL(9,2); 

SELECT 
    s1.taxRate, 
    s1.exemptperfiler 
    INTO taxRate,taxExempt 
FROM statetax s1 
WHERE s1.statecode = CONCAT("'",pStateCode ,"'") 
    AND s1.type = CONCAT("'",pStatus,"'") 
    AND s1.bracket = ( 
     SELECT MAX(s2.bracket) 
     FROM statetax s2 
     WHERE s1.statecode = s2.statecode 
     AND s1.type = s2.type 
     AND s2.bracket < pSalary) 


    SELECT ((pSalary - taxExempt) * taxRate) INTO taxesDue; 

END; // 
DELIMITER; 
+2

+0

哇哦。知道這是槍殺是愚蠢的。 – user1093111

+0

啊,@ angelcool-net。我們正在同時回答這個問題;-)在我發佈之前沒有看到您的評論。 –

回答

2

正如我的評論說:你以後`和s2.bracket缺少一個分號

你缺少一個分號後AND s2.bracket < pSalary)

1

我相信問題是前一個行缺少分號;它應該看起來像這樣:

AND s2.bracket < pSalary);

看看是否有幫助。乾杯!