2015-03-19 3 views
2
CREATE DEFINER=`root`@`localhost` PROCEDURE `Mobile_ForgotPassword`(IN`v_email` VARCHAR(30), IN `v_valid` INT) 
NO SQL 
IF (v_valid = 0) THEN 
    SELECT email FROM user_registration WHERE email = v_email; 
ELSE 
    SELECT password FROM user_registration WHERE email = v_email; 
END IF; 

У меня есть эта хранимая процедура MySQL и ее не работает. Всякий раз, когда я пытаюсь выполнить этот скрипт на phpmyadmin, получив ошибку в строке 4, у меня есть синтаксическая ошибка. Поскольку я использую phpmyadmin, разделитель уже добавлен динамически, и у меня есть привилегии для учетной записи root. Я попытался удалить DEFINER, но все же он не работает. По моим сведениям, я не вижу синтаксической ошибки в скрипте, или я не получаю ее. Кто угодно ?MySQL Хранимая процедура с If ... else не выполняется

ответ

1
CREATE DEFINER=`root`@`localhost` PROCEDURE `Mobile_ForgotPassword`(IN `v_email` VARCHAR(30), IN `v_valid` INT) 
NO SQL 
IF (v_valid = 0) THEN 
    SELECT email FROM user_registration WHERE email = v_email LIMIT 1; 
ELSE 
SELECT password FROM user_registration WHERE email = v_email LIMIT 1; 
END IF; 
  1. Удалены Разделитель по умолчанию из текстового поля под редактора сценариев в PhpMyAdmin
0

Вам нужно добавить DELIMITER

DELIMITER | 
    CREATE PROCEDURE `Mobile_ForgotPassword`(IN`v_email` VARCHAR(30), IN `v_valid` INT) 
    NO SQL 
    IF (v_valid = 0) THEN 
     SELECT email FROM user_registration WHERE email = v_email; 
    ELSE 
     SELECT PASSWORD FROM user_registration WHERE email = v_email; 
    END IF; 
    | 
    DELIMITER ; 
+0

Неа. Пробовал это и потерпел неудачу. И, как я уже упоминал, я использую phpmyadmin для запуска этой процедуры, и phpmyadmin добавляет сам разделитель – Mahadev

+0

, он отлично работает в моем phpmyadmin, а также sqlyog. вы просто копируете и вставляете в свой редактор sql и запускаете запрос. –

+0

Хорошо, позвольте мне попробовать еще раз. – Mahadev