我正在尝试使用T-SQL(在SQL Server 2012中)存储过程将参数传递为表名的一部分,但是收到错误。
示例
CREATE PROCEDURE test_proc
@year NVARCHAR(4)
AS
BEGIN
UPDATE Tablename@yearABC
.....
如果我使用参数值2017调用该过程,我希望它更新Tablename2017ABC
任何人都可以解释如何使用存储过程(或其他T-SQL)将参数用作表名的一部分吗?
由于
答案 0 :(得分:1)
你可以沿着这些方向做点什么......
DECLARE
@year NCHAR(4) = N'2017',
@DeBug BIT = 1; -- 0=execute & 1=print sql
DECLARE @sql NVARCHAR(4000) = N'
UPDATE tny SET
tny.ColumnName = ''Something''
FROM
dbo.TableName' + @year + N' tny
WHERE
tny.OtherColumn = ''SomethingElse'';';
IF @DeBug = 1
BEGIN
PRINT(@sql);
END;
ELSE
BEGIN
EXEC sys.sp_executesql @sql
END;