我有一个类似的存储过程:

CREATE PROCEDURE [dbo].[GetData]
    @code varchar(10)
AS
BEGIN
    SET NOCOUNT ON;

    --code goes here
END

proc根据传递的@code从n个表之一读取数据。 因此,我有一个将代码与实际表名(例如,表)链接的映射。

Code:"A" => dbo.JAN_SALES   
Code:"B"=> dbo.FEB_SALES

所有表都具有相同的结构。 我知道如何通过使用“红色” SQL来完成它,想知道是否有更优雅/更有效的方法来使用SQL Server 2008?

编辑1-Red sql是sql,它是通过连接其各个部分而构建的,并通过调用exec('+ @myTable从'选择A. B,C')执行。

===============>>#1 票数:0

您的问题似乎很清楚需要做什么,并且没有比通过以下方式创建T-SQL代码更多的可能性
1)添加评估@code参数的IF块; 要么
2)使用动态Sql(dynamic sql =“ red”)。 请注意,强烈建议不要在生产环境中使用动态sql。

顺便说一句 -在SQL Server 2008上,您可以使用* sp_executesql *专有存储过程。 微软的MSDN 在这里描述了它的工作方式。

  ask by translate from so

未解决问题?本站智能推荐: