在存储过程中动态确定表名称

时间:2012-04-06 06:36:52

标签: sql sql-server-2005

嗨我有根据我通过的年份使用表名的程序。我怎样才能在sproc中使用它?

Ex:tables_2000tables_2001,...

1 个答案:

答案 0 :(得分:0)

只是把它扔出去帮助解决糟糕的架构设计。

创建一个视图,然后根据年份

在视图上执行where子句
SELECT 2000 AS Year, *
FROM tables_2000
UNION
SELECT 2001 AS Year, *
FROM tables_2001
UNION
SELECT 2002 AS Year, *
FROM tables_2002
UNION
...etc

这假设所有tables_20XX都具有相同的架构。

您可以使用动态sql更有效地执行此操作,但您尚未在标记或问题中指定您的sql供应商。