使用存储过程在两个不同的数据库中执行相同的查询

rpc*_*cob 1 sql sql-server-2008

如何使用所有基于变量(参数)的存储过程在同一服务器中使用两个不同的数据库执行相同的查询?

由于我使用它的方式,这必须在存储过程中完成。信息存储在两个数据库的相同表名中。我需要基于变量的结果是动态的。如果输入 X 变量,它需要从 databaseA 读取,但如果输入 Y,它需要从 databaseB 读取。

我现在所拥有的只是一个有效的查询,每次都会更改 dbo。我花了很多时间寻找答案,但找不到任何东西。任何人都可以帮助我开始吗?

rs.*_*rs. 5

您可以使用参数并检查 where 子句并决定从哪个数据库表中选择数据试试这个

--assuming both tables have same table structure
select * from database1.dbo.table where 'x' = @param1
union all
select * from database2.dbo.table where 'y' = @param1
Run Code Online (Sandbox Code Playgroud)

或者

if (@param1 = 'x') 
begin
  select * from database1.dbo.table 
end
else if (@param1 = 'y')
begin
  select * from database2.dbo.table
end
Run Code Online (Sandbox Code Playgroud)