Je veux écrire une procédure stockée qui peut être utilisée à des fins multiples. Quelqu'un peut-il m'aider à trouver la meilleure pratique pour écrire une procédure stockée dans SQL Server à partir de ces approches ? Et quels sont les impacts sur les performances de chacune d'entre elles ?
Approche 1 : paramètres @KEY, @VALUE
IF @KEY = 'ISACTIVE'
BEGIN
SELECT ID, STATECODE, STATENAME, ISACTIVE
FROM STATE
WHERE ISACTIVE = @VALUE
END
ELSE IF @KEY = 'STATECODE'
BEGIN
SELECT ID, STATECODE, STATENAME, ISACTIVE
FROM STATE
WHERE STATECODE = @VALUE
END
ELSE
BEGIN
SELECT ID, STATECODE, STATENAME, ISACTIVE
FROM STATE
END
Approche : 2 paramètres @ISACTIVE, @STATECODE
SELECT ID, STATECODE, STATENAME, ISACTIVE
FROM STATE
WHERE ISACTIVE = ISNULL(@ISACTIVE, ISACTIVE)
AND STATECODE = ISNULL(@STATECODE,STATECODE)
Approche : 3
paramètres @KEY, @VALUE
DECLARE @SQLQRY NVARCHAR(500)
SET @SQLQRY = 'SELECT ID, STATECODE, STATENAME, ISACTIVE FROM STATE WHERE ' + @KEY +' = ' + @VALUE
EXEC @SQLQRY
Quelle est la meilleure approche en termes de performance et de réutilisation ?
Ou existe-t-il une autre solution pour y parvenir ?