MYSQL Хранимые процедуры, если утверждение Проблема - PullRequest
8 голосов
/ 17 июля 2009

Я работаю с Mysql 5.1.28-rc на freebsd. Я просто решил использовать хранимые процедуры в MYSQL и создал тестовую процедуру, как показано ниже:

<code>DELIMITER $$ 
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test( IN test VARCHAR(22) )
BEGIN
 DECLARE count INT(11);
 SET count = (SELECT COUNT(*) FROM Test WHERE test_column = test );
 SELECT count;
 IF count = 0 THEN
  SET count = 1;
 ELSE
  SET count = 2;
 ENDIF;
END $$
DELIMITER;

Эта процедура хорошо работает без оператора IF, но с оператором if, который она дает, 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 '; END'

Как я могу решить эту проблему? Где проблема?

Ответы [ 3 ]

20 голосов
/ 17 июля 2009

ENDIF требует пробела в MySQL, не так ли? т.е. END IF

5 голосов
/ 23 декабря 2011

Просто нужно место в end if в хранимой процедуре

0 голосов
/ 22 июля 2013

Не следует использовать переменные, такие как count или что-то еще. Поэтому, пожалуйста, найдите решение для этого -

DELIMITER $$ 
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test(IN test VARCHAR(22) )
BEGIN
 DECLARE var_count INT;
 SET var_count = (SELECT COUNT(*) FROM test WHERE test.textfield = test);
 IF var_count = 0 THEN
  SET var_count = 1;
 ELSE SET var_count = 2;
 END IF;
 SELECT var_count;
END $$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...