T-SQL - 使用参数作为表名

时间:2017-08-31 00:20:31

标签: sql-server tsql

我正在尝试使用T-SQL(在SQL Server 2012中)存储过程将参数传递为表名的一部分,但是收到错误。

示例

CREATE PROCEDURE test_proc 
     @year NVARCHAR(4)  
AS
BEGIN
    UPDATE Tablename@yearABC
    .....

如果我使用参数值2017调用该过程,我希望它更新Tablename2017ABC

任何人都可以解释如何使用存储过程(或其他T-SQL)将参数用作表名的一部分吗?

由于

1 个答案:

答案 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;