在视图中使用变量和动态SQL

时间:2014-07-24 15:19:30

标签: sql-server view sql-view

假设我在同一个SQL服务器(2012)上有4个数据库,名为Business,Customer1,Customer2和Config(不是真实姓名,只是为了保持示例清晰)。

几个'客户'数据库可以属于同一个“商业”,这种关系在“配置”中定义。数据库中。

我需要在商业'数据库,并在Customer数据库中访问它。例如,

USE Business
SELECT * FROM Users

将产生与

相同的结果
USE Customer1
SELECT * FROM Users

将产生与

相同的结果
USE Customer2
SELECT * FROM Users

我认为使用视图很容易实现,因此在每个客户数据库中都是:

CREATE VIEW Users --(I know this naming is wrong, and I should clearly name the view as such, but I'm trying to limit impact to existing code)
AS
SELECT * FROM [Business]..Users

我遇到的问题是会出现大量的商业问题。数据库,所以我真的需要我的观点来注意商业 - 客户关系,并且类似于:

CREATE VIEW Users
AS
DECLARE @BusinessDB varchar(50) = 
(SELECT BusinessDB FROM Config..Business where CustomerID = (SELECT Value FROM SysInfo where KeyName = 'CustomerID'))

EXEC('SELECT * FROM ['+@BusinessDB+']..Users') 

除了我不能在视图中声明/使用变量。

有没有人知道如何实现我的目标,或者我是否必须为每项业务保持略微不同的观点?

由于

0 个答案:

没有答案