2014-02-17 25 views
0

雖然我執行一個存儲過程,我不知道爲什麼顯示最後一行錯誤... 我找不到它的任何錯誤錯誤在近端最後一行

錯誤是告訴

ERROR 1064 (42000): 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 '' at 
line 60 

_

CREATE PROCEDURE `PartyBalanceViewByLedgerId` 

    (
    p_ledgerId varchar(50), 
    p_crOrDr varchar(50), 
    p_branchId varchar(50) 
    ) 

BEGIN 

IF (p_crOrDr='Dr') 
THEN 
    SELECT 
    TEMP.voucherNo +'_'+ TEMP.voucherType AS ID, 
    TEMP.voucherType, 
    CASE WHEN (TEMP.voucherType = 'Receipt Voucher') 
    THEN 
     (SELECT receiptMasterId FROM tbl_ReceiptMaster 
      WHERE (receiptMasterId = TEMP.voucherNo)) 
    ELSE 
     (SELECT purchaseMasterId FROM tbl_PurchaseMaster 
     WHERE (purchaseMasterId = TEMP.voucherNo)) 
    END AS voucherNo, 
    CAST(CAST(TEMP.balance AS DECIMAL(24,2)) AS char(27)) 
    AS amount 
    FROM(SELECT 
     A.voucherNo, 
     A.voucherType, 
     (SUM(ifnull(A.credit, 0)) - SUM(ifnull(A.debit, 0))) 
     AS balance 
     FROM tbl_PartyBalance AS A 
     WHERE (A.voucherType = 'Purchase Invoice' 
      OR A.voucherType = 'Receipt Voucher') 
     AND A.ledgerId=p_ledgerId 
     AND A.branchId=p_branchId 
     AND A.optional='False' 
     GROUP BY A.voucherNo,A.voucherType 
    )AS TEMP 
    WHERE TEMP.Balance>0 ; 
ELSE 
     SELECT 
      TEMP.voucherNo +'_'+ TEMP.voucherType ID, 
      TEMP.voucherType, 
      CASE WHEN TEMP.voucherType = 'Payment Voucher' THEN 
      (SELECT paymentMasterId FROM tbl_PaymentMaster WHERE (paymentMasterId = TEMP.voucherNo)) 
      ELSE 
      (SELECT salesInvoiceNo FROM tbl_SalesMaster WHERE (salesMasterId = TEMP.voucherNo)) END AS voucherNo, 
      CAST(CAST(TEMP.balance AS DECIMAL(24,2))AS char(27)) AS amount 
      FROM(
       SELECT 
       A.voucherNo, 
       A.voucherType, 
       (SUM(ifnull(A.debit, 0)) - SUM(ifnull(A.credit,0))) AS balance   

       FROM tbl_PartyBalance AS A 
       WHERE (A.voucherType = 'Sales Invoice' OR A.voucherType = 'Payment Voucher'OR A.voucherType = 'Job Invoice') AND A.ledgerId=p_ledgerId AND A.branchId=p_branchId AND A.optional='False' 
       GROUP BY A.voucherNo,A.voucherType 
       )AS TEMP 
     WHERE TEMP.Balance > 0 ; 
END 
+0

你可以在這裏添加的錯誤... –

+0

Jhunjhunwala .. 錯誤1064(42000):您的SQL語法有錯誤;檢查手冊, 對應於您的MySQL服務器版本爲正確的語法使用附近的''在 行60 – Nisar

+0

可能是一個分號';'''後'END' –

回答

0

是否使用分隔符?如果沒有PL經歷這樣的描述:

Delimiters in MySQL

我希望這將解決您的問題。前ELSE在

+0

是的,我正在運行帶分隔符的代碼..但沒有幫助 – Nisar

+2

好吧..確定你的代碼中沒有'END IF'代碼塊。在最後的'結束'之前將它加上。 – Neels

0

刪除分號:

GROUP BY A.voucherNo,A.voucherType 
)AS TEMP 
WHERE TEMP.Balance>0 
ELSE 
    SELECT 
     TEMP.voucherNo +'_'+ TEMP.voucherType ID, 
     TEMP.voucherType, 
1

嘗試這個我更新了一些變化END IF;

CREATE PROCEDURE `PartyBalanceViewByLedgerId` 

    (
    p_ledgerId varchar(50), 
    p_crOrDr varchar(50), 
    p_branchId varchar(50) 
    ) 

BEGIN 

IF (p_crOrDr='Dr') 
    SELECT 
    TEMP.voucherNo +'_'+ TEMP.voucherType AS ID, 
    TEMP.voucherType, 
    CASE WHEN (TEMP.voucherType = 'Receipt Voucher') 
    THEN 
     (SELECT receiptMasterId FROM tbl_ReceiptMaster 
      WHERE (receiptMasterId = TEMP.voucherNo)) 
    ELSE 
     (SELECT purchaseMasterId FROM tbl_PurchaseMaster 
     WHERE (purchaseMasterId = TEMP.voucherNo)) 
    END AS voucherNo, 
    CAST(CAST(TEMP.balance AS DECIMAL(24,2)) AS char(27)) 
    AS amount 
    FROM(SELECT 
     A.voucherNo, 
     A.voucherType, 
     (SUM(ifnull(A.credit, 0)) - SUM(ifnull(A.debit, 0))) 
     AS balance 
     FROM tbl_PartyBalance AS A 
     WHERE (A.voucherType = 'Purchase Invoice' 
      OR A.voucherType = 'Receipt Voucher') 
     AND A.ledgerId=p_ledgerId 
     AND A.branchId=p_branchId 
     AND A.optional='False' 
     GROUP BY A.voucherNo,A.voucherType 
    )AS TEMP 
    WHERE TEMP.Balance>0; 

ELSE 
     SELECT 
      TEMP.voucherNo +'_'+ TEMP.voucherType ID, 
      TEMP.voucherType, 
      CASE WHEN TEMP.voucherType = 'Payment Voucher' THEN 
      (SELECT paymentMasterId FROM tbl_PaymentMaster WHERE (paymentMasterId = TEMP.voucherNo)) 
      ELSE 
      (SELECT salesInvoiceNo FROM tbl_SalesMaster WHERE (salesMasterId = TEMP.voucherNo)) END AS voucherNo, 
      CAST(CAST(TEMP.balance AS DECIMAL(24,2))AS char(27)) AS amount 
      FROM(
       SELECT 
       A.voucherNo, 
       A.voucherType, 
       (SUM(ifnull(A.debit, 0)) - SUM(ifnull(A.credit,0))) AS balance   

       FROM tbl_PartyBalance AS A 
       WHERE (A.voucherType = 'Sales Invoice' OR A.voucherType = 'Payment Voucher'OR A.voucherType = 'Job Invoice') AND A.ledgerId=p_ledgerId AND A.branchId=p_branchId AND A.optional='False' 
       GROUP BY A.voucherNo,A.voucherType 
       )AS TEMP 
     WHERE TEMP.Balance > 0 ; 
END IF; 
END; 
+0

謝謝Satish ..我在最後一行失蹤END IF ..... – Nisar

相關問題