SqlServer 怎样实现动态视图查询多个库的数据
游泳的猪 2014-09-22 12:02:49 在[A]库中有一张表结构如下
COMPANY
CITY_CODE DATABASE_NM
---------------------------------------------
CNY DATABASE01
SHA DATABASE02
USD DATABASE03
MFM DATABASE04
具体需求是:从A库的[COMPANY]中得到每一个货币对应其他国家货币的汇率,[COMPANY]的CITY_CODE的值代表本地货币种类,[DATABASE_NM]的值是关联的数据库的名称。库[DATABASE01]~[DATABASE02]就是我们要得到的本地货币对外币的汇率表。
之前写的视图是:
SELECT
查询SQL语句
FROM
[DATABASE01].dbo.XX A
LEFT JOIN [DATABASE01].dbo.XXX B ON A.cexch_name = B.cexch_name AND B.i_id <> '1'
LEFT JOIN [DATABASE01].dbo.XXXX C ON C.i_id = '1'
WHERE
A.itype = '2'
UNION
SELECT
查询SQL语句
FROM
[DATABASE02].dbo.XX A
LEFT JOIN [DATABASE02].dbo.XXX B ON A.cexch_name = B.cexch_name AND B.i_id <> '1'
LEFT JOIN [DATABASE02].dbo.XXXX C ON C.i_id = '1'
WHERE
A.itype = '2'
UNION
SELECT
查询SQL语句
FROM
[DATABASE03].dbo.XX A
LEFT JOIN [DATABASE03].dbo.XXX B ON A.cexch_name = B.cexch_name AND B.i_id <> '1'
LEFT JOIN [DATABASE03].dbo.XXXX C ON C.i_id = '1'
WHERE
A.itype = '2'
UNION
SELECT
查询SQL语句
FROM
[DATABASE04].dbo.XX A
LEFT JOIN [DATABASE04].dbo.XXX B ON A.cexch_name = B.cexch_name AND B.i_id <> '1'
LEFT JOIN [DATABASE04].dbo.XXXX C ON C.i_id = '1'
WHERE
A.itype = '2'
现在我们项目要求,写成一个循环语句 因为[A]的[Company]表的数据不是固定的,有可能会追加其他国家的货币种类!
求大神指导啊,已经卡在这里一个多星期了。
我的想法是:假设有20个国家使用这个网站,然后写一个存储过程(pro_test),循环A库,表[COMPANY]的所有数据:
IF (@dateBase_nm = 'DATABASE01')
BEGIN
INSERT INTO A.dbo.EXCHANGE_RATE_INFO
(A, B, C)
SELECT A,B,C
FROM
[DATABASE01].dbo.Department
END
IF (@dateBase_nm = 'DATABASE02')
BEGIN
INSERT INTO A.dbo.EXCHANGE_RATE_INFO
(A, B, C)
SELECT A,B,C
FROM
[DATABASE02].dbo.Department
END
........
[EXCHANGE_RATE_INFO]是一个临时表,插入完数据,用视图(view_test)查询[EXCHANGE_RATE_INFO],以便在项目中使用,问题在于 我怎么使用视图先调用一个存储过程[pro_test],再查询[EXCHANGE_RATE_INFO]?或者大家有什么更简单的办法来实现这样的功能。(散100分 大神们还等什么?)