高人帮我解答下,为什么if不成立,也执行了begin的语句?
局域网有几台sql数据服务器,每台服务器存有不同的数据,我想在其中的一台服务器中执行,用户输入条件,判断去连接哪个服务器查询.
假设,我赋予A的值是'0006',是否应该直接执行最后一个条件? 可是,我现在测试,却会执行了第一个条件的begin。
请大家帮我解答下,或者这样测试,就算前面2个服务器不存在,最后一个数据库存在,当我前面2个条件都不满足,他为什么不执行最后一条查询呢?
if '0005'='a'beginselect xm,bj,km from opendatasource( 'sqloledb', 'data source=192.168.1.99;User ID=sa;Password=hhdsql1').my.dbo.tb1 endelse if '0009'='a'beginselect xm,bj,km from opendatasource( 'sqloledb', 'data source=192.168.1.98;User ID=sa;Password=hhdsql2').my.dbo.tb1 endendelse beginselect xm,bj,km from opendatasource( 'sqloledb', 'data source=192.168.1.97;User ID=sa;Password=hhdsql3').my.dbo.tb1 endend
if '0005'='a'beginselect 1endelse if '0009'='a'beginselect 2endelse beginselect 3end
[解决办法]
没看到你的赋值,if '0005'='a' 中'a'都是常量,应该是 if '0005'=@a
[解决办法]