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

时间:2018-02-14 22:48:35

标签: sql-server ssms

我在SQL Server 2012中创建一个过程,其中创建的表名最终将月份和年份作为表名的一部分,例如Error:(20, 23) java: package com.sun.javafx.util is not visible (package com.sun.javafx.util is declared in module javafx.graphics, which does not export it to the unnamed module).

此过程将每月运行一次,只有表名的最后一部分会发生变化。

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

1 个答案:

答案 0 :(得分:0)

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

您可以使用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