44 lines
895 B
SQL
44 lines
895 B
SQL
DROP PROCEDURE IF EXISTS CreateDiscusson;
|
|
DELIMITER //
|
|
CREATE PROCEDURE CreateDiscusson
|
|
(
|
|
IN p_sid INT,
|
|
IN p_password TEXT,
|
|
IN p_name TEXT,
|
|
OUT outputCode INT
|
|
)
|
|
MODIFIES SQL DATA
|
|
BEGIN
|
|
|
|
CALL `CheckIdLogin`(p_sid,p_password,outputCode);
|
|
IF outputCode = 42 THEN
|
|
IF (SELECT COUNT(*) FROM membres WHERE ID = p_sid AND adminLevel >= 2) = 1 THEN
|
|
SET outputCode :=(
|
|
SELECT
|
|
(
|
|
CASE
|
|
WHEN LENGTH(p_name) > 255 THEN 2014
|
|
WHEN CAST(p_name AS BINARY) NOT REGEXP BINARY '^[-a-zA-Z0-9\_ ]+$' THEN 2015
|
|
WHEN(
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
discussions
|
|
WHERE
|
|
name = p_name
|
|
) > 0 THEN 2016
|
|
ELSE 42
|
|
END
|
|
)
|
|
);
|
|
END IF;
|
|
ELSE
|
|
SET outputCode = 2013;
|
|
END IF;
|
|
|
|
IF outputCode = 42 THEN INSERT INTO discussions(name,creatorID,dateCreation,authorizedGroupId) VALUES (CAST(p_name AS CHAR(255)),p_sid,NOW(),0); END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
|