помогите поправить процедуру в MySQL
От: alchy  
Дата: 03.04.08 18:54
Оценка:
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
==========================

я не вижу тут ошибки, позскажите как быть? что править?

подскажите, куда копать? я не вижу тут ошибку
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.