我对 SQL Server 还很陌生,希望这里有人可以帮助我(我正在使用 QL Server 2008)。
以下是一个按预期工作的小过程。
现在我想使用相同的过程来更新多个表,因为所有这些表都具有完全相同的列名称和列格式,唯一的区别是我添加的表名称的第二部分XXX
below.
有人可以告诉我如何使其变得动态并为此提供一些解释吗?
我不能在这里提供更多信息,因为我不确定如何解决这个问题 - 除了可能声明@sql nvarchar(max)
并将整个查询包装在SET @sql = N'...'
在执行之前。
我的存储过程:
CREATE PROCEDURE [dbo].[Cal_UpdateTeam]
@team nvarchar(100),
@teamID int,
@notes nvarchar(1000),
@log nvarchar(100),
@admin varchar(50)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
IF NOT EXISTS
(
SELECT *
FROM Cal_XXX
WHERE teamID = @teamID
)
INSERT INTO Cal_XXX
(
team,
teamID,
notes,
log,
admin
)
SELECT @team,
@teamID,
@notes,
@log,
@admin
ELSE
UPDATE Cal_XXX
SET team = @team,
teamID = @teamID,
notes = @notes,
log = @log,
admin = @admin
WHERE teamID = @teamID
END
END
非常感谢您对此的任何提示和建议,迈克。