bcom/sql/registerPerson.sql

34 lines
636 B
SQL

DROP PROCEDURE IF EXISTS RegisterPerson;
DELIMITER //
CREATE PROCEDURE RegisterPerson
(
IN p_pseudo TEXT,
IN p_password TEXT,
OUT outputCode INT
)
MODIFIES SQL DATA
BEGIN
SET outputCode :=(
SELECT
(
CASE
WHEN LENGTH(p_pseudo) > 255 THEN 2002
WHEN CAST(p_pseudo AS BINARY) NOT REGEXP BINARY '^[-a-zA-Z0-9\_]+$' THEN 2003
WHEN(
SELECT
COUNT(*)
FROM
membres
WHERE
pseudo = p_pseudo
) > 0 THEN 2004
ELSE 42
END
)
);
IF outputCode = 42 THEN INSERT INTO membres(pseudo,hashedPassword,dateCreation) VALUES (CAST(p_pseudo AS CHAR(255)),MD5(p_password),NOW()); END IF;
END//
DELIMITER ;