Sql server T-SQL-使用参数作为tablename的一部分
我试图使用T-SQL(在SQL Server 2012中)存储过程传递一个参数作为表名的一部分,但遇到了一个错误 范例Sql server T-SQL-使用参数作为tablename的一部分,sql-server,tsql,Sql Server,Tsql,我试图使用T-SQL(在SQL Server 2012中)存储过程传递一个参数作为表名的一部分,但遇到了一个错误 范例 CREATE PROCEDURE test_proc @year NVARCHAR(4) AS BEGIN UPDATE Tablename@yearABC ..... 如果我用参数值2017调用过程,我希望它更新tablename 2017abc 有人能解释一下如何使用存储过程(或其他T-SQL)将参数作为表名的一部分吗 谢谢你可以按照这些思
CREATE PROCEDURE test_proc
@year NVARCHAR(4)
AS
BEGIN
UPDATE Tablename@yearABC
.....
如果我用参数值2017调用过程,我希望它更新tablename 2017abc
有人能解释一下如何使用存储过程(或其他T-SQL)将参数作为表名的一部分吗
谢谢你可以按照这些思路做些事情
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;
寻找动态sql,这里有很多。为什么在不同名称的表中有相同的数据?人们普遍错误地认为,将数据归档到年度表中是个好主意。只需在一个表上使用足够的索引并节省您自己的工作量这是一个强烈的指示,您应该将一个表的列
year
作为主键的第一部分,如果您确实需要将其分布在多个文件或磁盘上,请使用表分区。