代码之家  ›  专栏  ›  技术社区  ›  Siddharth

如何在SQL Server 2012的存储过程中使用部分表名的参数

  •  1
  • Siddharth  · 技术社区  · 7 年前

    我正在SQL Server 2012中创建一个过程,其中创建的表名最终将月份和年份作为表名的一部分,例如 BA_Monthly_Report_Dec_2017 .

    此过程将每月运行一次,仅更改表名的最后一部分。

    我尝试在这里使用参数,但不起作用。请帮忙。

    1 回复  |  直到 7 年前
        1
  •  0
  •   PSK    7 年前

    在SQL Server中,如果查询是静态的,则应将表名定义为静态的。如果希望表名在这种情况下是动态的,则需要编写动态查询。

    您可以使用执行动态查询 sp_executesql

    在您的情况下,可以在SP中编写查询,如下所示。

    DECLARE @Month VARCHAR(10) ='Dec'
    DECLARE @Year INT = 2017
    DECLARE @Query VARCHAR(MAX)
    SET @Query = 'SELECT * FROM BA_Monthly_Report_' + @Month 
                 + '_' + CAST(@Year AS VARCHAR(4))
    
    EXEC sp_executesql @Query