Mik*_*ike 3 sql sql-server stored-procedures dynamic
我对 SQL Server 很陌生,希望这里有人可以帮助我(我使用的是 QL Server 2008)。
下面是一个按预期工作的小程序。
现在我想使用相同的过程来更新多个表,因为所有这些表都具有完全相同的列名和列格式,唯一的区别是我在XXX下面添加的表名的第二部分。
有人可以告诉我如何使其动态化并为此提供一些解释吗?我不能在这里提供更多信息,因为我不确定如何处理这个问题 - 除了可能在执行之前声明@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
Run Code Online (Sandbox Code Playgroud)
非常感谢您的任何提示和建议,迈克。
您应该将 sql 查询包装在 nvarchar 中,然后按照以下示例执行该查询:
declare @sql nvarchar(max)
declare @TableName nvarchar(max)
set @TableName = 'mytable'
set @sql = 'Select * from ' + @TableName
Exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17428 次 |
| 最近记录: |