Voilà...
-------------------------------------------------------------------------------------------------------------------------
CREATE FUNCTION [db].[SlctPrc] (@server nvarchar(255), @alert nvarchar(255))
RETURNS TABLE AS
BEGIN
-- Variable declaration --
DECLARE @idGeneral integer
DECLARE @countGeneral integer
DECLARE @idServer integer
DECLARE @idSequence integer
SET @countGeneral = (SELECT COUNT(*) FROM GeneralProcedure)
SET @idGeneral = 1
SET @idSequence = 0
SET @idServer = (SELECT idServer FROM Server WHERE Name = @server)
-- Check if it is a general alert --
WHILE @idGeneral <= @countGeneral
BEGIN
if @alert = (SELECT alertIdentifier FROM GeneralProcedure WHERE idGeneralProc = @idGeneral)
BEGIN
SET @idSequence = (SELECT fk_idSequence FROM GeneralProcedure WHERE idGeneralProc = @idGeneral)
END
SET @idGeneral = @idGeneral + 1
END
-- If no general alert was found
if @idSequence = 0
BEGIN
-- Check if a Procedure exist for this server with this alert --
SET @idSequence = (SELECT fk_idSequence FROM [Procedure] WHERE AlertIdentifier LIKE @alert AND fk_server = @idServer)
if @idSequence IS NULL
BEGIN
-- Check if a Procedure exist for this server --
SET @idSequence = (SELECT fk_idSequence FROM [Procedure] WHERE fk_server = @idServer)
END
END
return (SELECT [Order], Command, Argument, Condition, NextStep_Yes, NextStep_No FROM [Sequence] WHERE idSequence BETWEEN @idSequence AND (SELECT MIN(idSequence) FROM [Sequence] WHERE idSequence > @idSequence AND Command = 1) - 1)
END
-------------------------------------------------------------------------------------------------------------------------
Merci d'avance,
ElpenS 