我在freebsd上使用Mysql 5.1.28-rc。我刚刚决定在MYSQL中使用存储过程并创建一个测试过程如下:
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'
我该如何解决这个问题?问题在哪里?
答案 0 :(得分:20)
ENDIF
需要MySQL空间吗?即END IF
答案 1 :(得分:5)
只需在存储过程中的end if
中需要空格
答案 2 :(得分:0)
不应该使用像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 $$