47 lines
860 B
SQL
47 lines
860 B
SQL
DROP PROCEDURE IF EXISTS PostMessage;
|
|
DELIMITER //
|
|
CREATE PROCEDURE PostMessage
|
|
(
|
|
IN p_sid INT,
|
|
IN p_password TEXT,
|
|
IN p_did INT,
|
|
IN p_text TEXT,
|
|
OUT outputCode INT,
|
|
OUT mid INT
|
|
)
|
|
MODIFIES SQL DATA
|
|
BEGIN
|
|
CALL `CheckIdLogin`(p_sid,p_password, outputCode);
|
|
|
|
IF outputCode = 42 THEN
|
|
SET outputCode :=(
|
|
SELECT
|
|
(
|
|
CASE
|
|
WHEN(
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
discussions
|
|
WHERE
|
|
ID = p_did
|
|
) = 1 THEN 2010
|
|
ELSE 42
|
|
END
|
|
)
|
|
);
|
|
IF outputCode = 42 THEN
|
|
SET @authorizedGroupID :=(SELECT authorizedGroupID FROM discussions WHERE ID=p_did);
|
|
CALL `CheckInGroup`(p_sid, @authorizedGroupID, outputCode);
|
|
|
|
IF outputCode = 42 THEN
|
|
INSERT INTO messages(texte,senderID,sendTime,discussionID) VALUES (p_text,p_sid,NOW(),p_did);
|
|
SET mid :=(SELECT LAST_INSERT_ID());
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
|