2013-12-17 3 views
-1

Я не могу понять синтаксическую ошибку по следующему запросу .. Help? Помогите ? Помогите ?Ошибка синтаксиса в MYSQL '1064'

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
+0

Мне кажется, вам нужно место в 'ELSEIF'. как этот 'ELSE IF' – Nithesh

+0

ELSE IF находится в mssql не mysql. mysql имеет ELSEIF – Nisar

+0

Почему geven me -2 ..; ( – Nisar

ответ

1

Отдельные COUNT (suffixPrefixId) FROM в COUNT (suffixPrefixId) ОТ

+0

Спасибо, но снова у меня есть ошибка в строке 8 – Nisar

1

Попробуйте удалить точку с запятой из следующих if заявление:

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

Спасибо, но снова у меня есть ошибка в строке 8 – Nisar

3

Попробуйте положить ваши DECLARE statements право после BEGIN:

DECLARE разрешен только внутри составного заявления BEGIN ... END и должен быть в начале, перед любыми другими инструкциями.

+0

Спасибо, но опять у меня ошибка в строке 26 - – Nisar

+0

... поэтому у вас другая ошибка синтаксиса где-то в другом месте. – Gumbo

+0

@Gumbo На самом деле это правильный ответ на основной вопрос OPs (+1). Ответ, данный мной, отсутствует в изображении, если OP не объявляет заявления за пределами цикла if. – Bhushan

Смежные вопросы