56,940
社区成员




DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `test`.`HashValue`(IN accountName CHAR(32))
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SET @size = LENGTH(accountName);
SET @pos = 1;
SET @hashValue = 0;
WHILE @pos<@size+1 DO
SET @nCh = SUBSTRING(accountName,@pos,1);
SET @hashValue = @hashValue + ASCII(@nCh);
SET @pos = @pos + 1;
END WHILE;
SELECT @size,@hashValue;
END$$
DELIMITER ;
DELIMITER $$
CREATE
PROCEDURE `test`.`HashValue`(IN str CHAR(32))
BEGIN
SET @pos = 1;
SET @hashValue = 0;
SET @szHex = HEX(str);
SET @size = LENGTH(@szHex);
WHILE @pos<@size+1 DO
SET @cCh = SUBSTRING(@szHex,@pos,2);
SET @nCh =CAST(ASCII(UNHEX(@cCh)) AS UNSIGNED);
SET @hashValue = @hashValue + @nCh;
SET @pos = @pos + 2;
END WHILE;
SELECT @hashValue;
END$$
DELIMITER ;