我在2个不同的数据库中有2个相同格式的表。
数据库1
_________ _____________________ _______________
Code(int) Description(varchar) Class(varchar)
_________ _____________________ ________________
的Database2 。
_________ _____________________ ___________
Code(int) Description(varchar) Type(int)
_________ _____________________ ___________
我希望为我的C#应用程序编写一个通用查询,该查询从两个数据库中检索值。我写了以下查询
DECLARE @DB = 'Database1'
IF(@DB = 'Database1')
BEGIN
SELECT
ID,[Description],Class
FROM MyTable
END
ELSE
BEGIN
SELECT
ID,[Description],Type
FROM MyTable
END
但是,当分别为Class
或Type
运行时,上述查询会对列Database2
或Database1
引发错误。
PS:我正确地与DB建立连接,并相应地设置参数@DB
。逻辑是运行此查询两次,一次为Database1
运行,并使用MyTable
列获取相应的Class
,并Database2
第二次获取相应的MyTable
使用Type
列。
我希望知道以任何方式实现我想做的事情。 在此先感谢!!
答案 0 :(得分:1)
这不会起作用,因为:
解析并编译整个请求(批处理)。如果发生错误 在此阶段,请求以编译错误终止
您可以尝试动态sql:
IF @DB = 'Database1'
BEGIN
execute sp_sqlexec
'SELECT ID,[Description],[Class]
FROM MyTable;';
END
ELSE
BEGIN
execute sp_sqlexec
'SELECT ID,[Description],[Type]
FROM MyTable;';
END
答案 1 :(得分:0)
用例陈述
SELECT
ID,[Description],CASE WHEN @DB = 'Database1' THEN Class ELSE Type END
FROM table