MySQl 5.0.45
есть две процедуры:
-- ----------------------------
-- Procedure structure for checkLogin
-- ----------------------------
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `checkLogin`(uname VARCHAR(16), pword VARCHAR(40), ip VARCHAR(20), OUT ret INT)
BEGIN
DECLARE num_uname INT;
DECLARE pass VARCHAR(40);
DECLARE psalt VARCHAR(40);
SELECT count(*),password,salt INTO num_uname,pass,psalt FROM accounts WHERE login = uname GROUP BY password;
IF(num_uname > 0) THEN
SET pword = sha1(CONCAT(pword,psalt));
IF(pass = pword) THEN
UPDATE accounts SET lastactive = NOW(), lastIP = ip WHERE login = uname;
SET ret = 1;
ELSE
SET ret = 0;
END IF;
ELSE
SET ret = -1;
END IF;
END;;
DELIMITER ;
-- ----------------------------
-- Procedure structure for createAccount
-- ----------------------------
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `createAccount`(uname VARCHAR(16), pword VARCHAR(40), ip VARCHAR(20), nsalt VARCHAR(40), OUT ret INT)
BEGIN
DECLARE num_uname INT;
START TRANSACTION;
SELECT count(*) INTO num_uname FROM accounts WHERE login = uname FOR UPDATE;
IF(num_uname > 0) THEN
SET ret = 0;
ELSE
SET pword = sha1(CONCAT(pword, nsalt));
INSERT INTO accounts (login, password, lastactive, lastIP, salt) VALUES (uname, pword, NOW(), ip, nsalt);
SET ret = 1;
END IF;
COMMIT;
END;;
DELIMITER ;
при попытки их добавления в ДБ идёт ошибка синтаксиса...
пример:
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 'PROCEDURE `checkLogin`(uname varchar(16) pword varchar(40) ip varchar(20' at line 1
==========================
я не вижу тут ошибки, позскажите как быть? что править?
подскажите, куда копать? я не вижу тут ошибку
Обе хранимки создались.
Версия MySQL у меня такая: mysql Ver 14.12 Distrib 5.0.45, for apple-darwin8.5.1 (i686) using readline 5.0