簡體   English   中英

最后一行附近的錯誤

[英]Error in last line near end

當我執行存儲過程時,我不知道為什么在最后一行顯示錯誤...我找不到任何錯誤

錯誤告訴

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

嘗試與此有關,我已經更新了一些更改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;

您在使用DELIMITER嗎? 如果不行,請通過以下說明:

MySQL中的分隔符

我希望這能解決您的問題。

在ELSE中刪除分號:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM