bcom/sql/createDiscussion.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 ;