【发布时间】:2025-12-11 11:00:01
【问题描述】:
我无法找出以下查询的语法错误。帮助?帮助 ?帮忙?
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):您的 SQL 语法有错误;检查手册
对应于您的 MySQL 服务器版本,以便在 'DECLA 附近使用正确的语法
RE p_prefix VARCHAR(50);
声明 p_startIndex int ;
在第 8 行声明 p_suffix VARHA'
【问题讨论】:
-
我认为您需要
ELSEIF中的空间。像这样ELSE IF -
ELSE IF 在 mssql 而不是 mysql 。 mysql有ELSEIF
-
为什么给我-2 .. ;(
标签: php mysql sql stored-procedures