我有一个更新两个表的存储过程。第一个表始终是同一个表,但是第二个表会根据传入的参数而变化。将其全部写入一个大过程中是否更有效,这样
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
或者我应该为每个表编写一个单独的过程,然后从主过程中调用 EXEC 过程。
我想后者更灵活,比如如果我想更新子表但不更新主表?