J'ai une procédure stockée qui met à jour deux tables. La première table est toujours la même, mais la seconde change en fonction d'un paramètre qui lui est passé. Est-il plus efficace d'écrire tout cela dans une seule et même procédure, comme suit
CREATE PROCEDURE MyBigProc
@id int
@param int,
@value1 int,
@value2 int
AS
BEGIN
SET NOCOUNT ON;
-- First table to update
UPDATE MyTable SET field1 = @value1 WHERE id = @id
-- Then choose which table to update based on @param
IF @param = 1
UPDATE MySecondTable SET field2 = @value2 WHERE id = @id
IF @param = 2
UPDATE MyThirdTable SET field2 = @value2 WHERE id = @id
END
Ou dois-je écrire une procédure distincte pour chaque table et appeler EXEC la procédure à partir de la procédure principale ?
Je suppose que la seconde solution est plus flexible, par exemple si je veux mettre à jour une table secondaire mais pas la table principale ?