当我尝试更新某些数据时,如
if Exists(select * from sys.columns where Name = N'Enabled'
and Object_ID = Object_ID(N'SLBPool'))
begin
update SLBPool set SLBPool.Enabled=1
End
GO
它在SQL 2012中显示错误“无效列名'已启用'”,但是,2008 R2没有发生 怎么来的?
答案 0 :(得分:1)
这应该适用于任何版本的SQL Server(当然可以追溯到2000,IIRC)的唯一方法是,如果你在评估if条件之前阻止语句被编译 - 这将指示动态SQL:
if Exists(select * from sys.columns where Name = N'Enabled'
and Object_ID = Object_ID(N'SLBPool'))
begin
exec sp_executesql 'update SLBPool set SLBPool.Enabled=1'
End
GO
答案 1 :(得分:0)
可能这是因为服务器实例的排序规则首选项,检查是否有效,或产生其他错误:
IF EXISTS(SELECT * FROM sys.columns WHERE name = N'Enabled'
AND object_id = OBJECT_ID(N'SLBPool'))
BEGIN
UPDATE SLBPool SET SLBPool.Enabled = 1
END
GO