2013-07-12 3 views
1

У меня есть некоторые проблемы с моей хранимой процедурой mysql, mysql всегда показывает ошибку 1064, синтаксис ошибки mysql. где я был неправ?MySQL выдает ошибку Функция IF в хранимой процедуре

DELIMITER $$ 

    USE `itin`$$ 

    DROP PROCEDURE IF EXISTS `sp_Transaction`$$ 

    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_Transaction`(IN inpt TINYINT(4), IN inpt2 TINYINT(4)) 
    BEGIN 

    IF((inpt = 0) AND (inpt2 = 0)) THEN 
    SELECT idtr_inventory, showStatus(idms_status) AS idms_status, showLocation(idms_location) AS idms_location 
, showUnitType(idms_unittype) AS idms_unittype, USER, user_email 
, showDepartment(idms_department) AS idms_department, asset_tag, sn, brand, model, showBBUser(bb_user) AS bbUser 
, dt_purchase, warranty, dt_warranty_exp, nm_computer, ip_address, remarks 
    FROM tr_inventory; 

ELSE IF(inpt = 0) THEN 
SELECT idtr_inventory, showStatus(idms_status) AS idms_status, showLocation(idms_location) AS idms_location 
, showUnitType(idms_unittype) AS idms_unittype, USER, user_email 
, showDepartment(idms_department) AS idms_department, asset_tag, sn, brand, model, showBBUser(bb_user) AS bbUser 
, dt_purchase, warranty, dt_warranty_exp, nm_computer, ip_address, remarks 
FROM tr_inventory WHERE (idms_location = inpt2); 

ELSE IF(inpt2 = 0) THEN 
SELECT idtr_inventory, showStatus(idms_status) AS idms_status, showLocation(idms_location) AS idms_location 
, showUnitType(idms_unittype) AS idms_unittype, USER, user_email 
, showDepartment(idms_department) AS idms_department, asset_tag, sn, brand, model, showBBUser(bb_user) AS bbUser 
, dt_purchase, warranty, dt_warranty_exp, nm_computer, ip_address, remarks 
FROM tr_inventory WHERE (idms_unittype = inpt) 

ELSE 
SELECT idtr_inventory, showStatus(idms_status) AS idms_status, showLocation(idms_location) AS idms_location 
, showUnitType(idms_unittype) AS idms_unittype, USER, user_email 
, showDepartment(idms_department) AS idms_department, asset_tag, sn, brand, model, showBBUser(bb_user) AS bbUser 
, dt_purchase, warranty, dt_warranty_exp, nm_computer, ip_address, remarks 
FROM tr_inventory WHERE (idms_unittype = inpt) AND (idms_location = inpt2); 

END IF; 
END IF; 
END IF; 

END$$ 

DELIMITER ; 

Неправильно ли в конце, если утверждение? если да, где мне нужно разместить? Благодарю.

ошибка: запрос: CREATE DEFINER = root @localhost ПРОЦЕДУРЫ sp_Transaction (в INPT TINYINT (4), В inpt2 TINYINT (4)), если начать ((INPT = 0) И ... Код ошибки: 1064 у вас есть ошибка в вашем синтаксисе SQL, проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «еще

+0

Мы неспособны признать то, что ELSE для которого IF. –

+0

Пожалуйста, сообщите полное сообщение об ошибке –

ответ

1

Вы пропустили ;

... 
FROM tr_inventory WHERE (idms_unittype = inpt); 
               ^------here 
ELSE 
... 
+0

oh man. благодаря! – randytan