2 つのテーブルを更新するストアド プロシージャがあります。最初のテーブルは常に同じテーブルですが、2 番目のテーブルは渡されるパラメーターに応じて変化します。このように 1 つの大きな手順にすべてを書き込む方が効率的ですか?
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 プロシージャを呼び出す必要があります。
サブテーブルを更新したいがメインテーブルを更新したくない場合など、後者の方が柔軟性があると思いますか?