我们在数据库中有3个表:
我们目前有3个存储过程,每个存储过程运行相同的select查询以从表中获取数据,但唯一的区别是模式。
在一个存储过程中(最好不使用动态SQL),这样做的最佳方式是什么
答案 0 :(得分:5)
没有最佳方式。
您可以使用IF .. ELSE IF构造来决定选择哪一个。
但它们是3个不同的对象,所以这是预期的。我建议你不要正确使用模式......
来自dba.se:
答案 1 :(得分:2)
您可以创建如下视图:
CREATE VIEW dbo.blabla
AS
SELECT 0 as SourceSchema, otherfields from [Unapproved].[Data]
UNION ALL
SELECT 1 as SourceSchema, otherfields from [Approved].[Data]
UNION ALL
SELECT 2 as SourceSchema, otherfields from [History].[Data]
GO
CREATE PROC GetTheData
@fromwhere int
As
select otherfields from dbo.blabla where SourceSchema = @fromwhere
<强> BUT 强>
我不能说它是 OPTIMAL 方式。
我同意@TomTom下的@TomTom