if 1=0
begin
print 'This should not run'
select NonexistentField from MyTable
end
else
print 'This should run'
在该代码中,我引用了一个字段,该字段可能取决于情况,也可能不存在。该脚本打算在各种场景中部署,并且在不适用的情况下应该通过条件分支来避免此行。这意味着要通过1 = 0条件进行模拟,这意味着该测试中不存在该字段,因此不要执行使用该字段的代码。
问题是,即使没有执行 select 行,只要存在MyTable,脚本就会抛出一个
无效的列名
甚至在运行之前发生错误,并且永远不会显示“这应该运行”消息。
如果另一方面,如果MyTable不存在,则代码可以正常运行,并显示预期的“此应运行”。
从中得出什么意义?
有什么办法可以避免脚本中那些不希望运行的部分产生这些错误?
实际上,我发现自己无法满足条件以指示表中的字段是否存在,因为代码仍然会失败。
答案 0 :(得分:2)
有什么办法可以避免脚本中那些不希望运行的部分产生这些错误?
您需要防止编译无效代码。因此,请使用动态SQL。
if 1=0
begin
print 'This should not run'
exec ('select NonexistentField from MyTable')
end
else
print 'This should run'