首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高人帮小弟我解答上,为什么if不成立,也执行了begin的语句

2012-11-08 
高人帮我解答下,为什么if不成立,也执行了begin的语句?局域网有几台sql数据服务器,每台服务器存有不同的数

高人帮我解答下,为什么if不成立,也执行了begin的语句?
局域网有几台sql数据服务器,每台服务器存有不同的数据,我想在其中的一台服务器中执行,用户输入条件,判断去连接哪个服务器查询.

假设,我赋予A的值是'0006',是否应该直接执行最后一个条件? 可是,我现在测试,却会执行了第一个条件的begin。

请大家帮我解答下,或者这样测试,就算前面2个服务器不存在,最后一个数据库存在,当我前面2个条件都不满足,他为什么不执行最后一条查询呢?

SQL code
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


[解决办法]
不知道是楼主写错了,还是楼主对程序的理解出现偏差。
第一个else
后面有两个end,第二个end 与哪一个begin对应?程序没有贴完整?
[解决办法]
逻辑是没有问题的,这肯定执行第三个

SQL code
if '0005'='a'beginselect 1endelse if '0009'='a'beginselect 2endelse beginselect 3end
[解决办法]
没看到你的赋值,if '0005'='a' 中'a'都是常量,应该是 if '0005'=@a
[解决办法]
探讨
引用:

楼主,你自己有sql服务器吗?你可以试试,情况很特殊,
假设第一个条件的sql不存在的情况。 执行出错。

你不是楼主吗

热点排行
Bad Request.