67 lines
1.3 KiB
SQL
67 lines
1.3 KiB
SQL
DROP FUNCTION IF EXISTS CheckInGroup;
|
|
DELIMITER //
|
|
CREATE FUNCTION CheckInGroup
|
|
(
|
|
p_sid INT,
|
|
p_gid INT
|
|
)
|
|
RETURNS INT
|
|
READS SQL DATA
|
|
BEGIN
|
|
SET @outputCode :=(
|
|
SELECT
|
|
(
|
|
CASE
|
|
WHEN p_gid = 0 THEN 0
|
|
WHEN p_gid = 1 THEN 42
|
|
ELSE 100
|
|
END
|
|
)
|
|
);
|
|
|
|
IF @outputCode = 100 THEN
|
|
|
|
SET @outputCode :=(
|
|
SELECT
|
|
(
|
|
CASE
|
|
WHEN(
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
groupes
|
|
WHERE
|
|
ID = p_gid
|
|
) = 1 THEN 42
|
|
ELSE 2012
|
|
END
|
|
)
|
|
);
|
|
IF @outputCode = 42 THEN
|
|
|
|
SET @outputCode :=(
|
|
SELECT
|
|
(
|
|
CASE
|
|
WHEN(
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
appartenanceAUnGroupe
|
|
INNER JOIN groupes
|
|
ON groupes.ID = appartenanceAUnGroupe.groupID
|
|
WHERE
|
|
groupes.ID = p_gid AND appartenanceAUnGroupe.membreID = p_sid
|
|
) >= 1 THEN 42
|
|
ELSE 0
|
|
END
|
|
)
|
|
);
|
|
END IF;
|
|
END IF;
|
|
RETURN @outputCode;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
|