简体   繁体   English

MYSQL'1064'中的语法错误

[英]syntax error in MYSQL '1064'

I am unable to figure out the syntax error on the following query.. Help ? 我无法找出以下查询的语法错误。 help ? 救命 ? help ? 救命 ?

CREATE PROCEDURE VoucherNumberGenerationForClass(
p_voucherType varchar(50),
p_yearId varchar(50),
p_NO longtext)
begin
IF((SELECT COUNT(suffixPrefixId)FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType))<>0) 
    then
        DECLARE p_prefix VARCHAR(50);
        DECLARE p_startIndex int ;
        DECLARE p_suffix VARCHAR(50) ;
        DECLARE p_voucherNo VARCHAR(50) ;
        DECLARE p_prefix1 VARCHAR(50) ;
        DECLARE p_suffix1 VARCHAR(50) ;
            IF ((( SELECT COUNT(suffixPrefixId)FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) ))<>0 );
                    then
                        SET p_prefix=(SELECT ifnull(prefix,'') FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) );
                        SET p_suffix=(SELECT ifnull(suffix,'') FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) );

                        SET p_startIndex=(SELECT startIndex FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) );
                        SET p_startIndex=p_startIndex-1;

                            IF p_voucherType='Sales Invoice' 
                                then SET p_voucherNo=( SELECT ifnull(MAX(voucherNo+1),1) FROM tbl_SalesMaster WHERE((suffixPrefixId = (SELECT suffixPrefixId FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) ))
                                ) )
                            END if ;
                        SET p_voucherNo=p_voucherNo+p_startIndex ;
                        SET p_voucherNo= p_prefix+ p_voucherNo+p_suffix ;
                        SELECT p_voucherNo ;
            END if;
ELSEIF
    IF p_voucherType='Sales Invoice' 
        then SET p_voucherNo=( SELECT ifnull(MAX(voucherNo+1), 1) FROM tbl_SalesMaster ) ;
    SELECT p_voucherNo ;
END IF ;
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 'DECLA
RE p_prefix VARCHAR(50);
DECLARE p_startIndex int ;
DECLARE p_suffix VARCHA' at line 8

Try putting your DECLARE statements right after BEGIN : 尝试在BEGIN之后放置DECLARE语句

DECLARE is permitted only inside a BEGIN ... END compound statement and must be at its start, before any other statements. 仅在BEGIN ... END复合语句中允许使用DECLARE并且必须在其开始处以及其他任何语句之前。

COUNT(suffixPrefixId)FROMCOUNT(suffixPrefixId)分开

尝试从以下if语句中删除分号:

IF ((( SELECT COUNT(suffixPrefixId)FROM tbl_SuffixPrefix WHERE (yearId = p_yearId) AND (voucherType = p_voucherType) ))<>0 );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM