为什么以下不起作用?
即使if语句的计算结果为false,也始终执行update语句。如果我删除更新语句,代码工作正常。
这样做的正确方法是什么?
IF (SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'FOO' AND COLUMN_NAME ='BAR') = 1
BEGIN
UPDATE FOO SET BAZ = BAR;
alter table FOO alter column BAZ int not null;
END
答案 0 :(得分:0)
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA ='dbo' AND TABLE_NAME = 'FOO' AND COLUMN_NAME ='BAR')
BEGIN
UPDATE FOO SET BAZ = BAR;
alter table FOO alter column BAZ int not null;
END
答案 1 :(得分:0)
诀窍是将UPDATE语句包装在EXEC sp_executesql N语句中。不要忘记添加两个'在UPDATE语句周围。
IF (SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'FOO' AND COLUMN_NAME ='BAR') = 1
BEGIN
EXEC sp_executesql N'UPDATE FOO SET BAZ = BAR';
alter table FOO alter column BAZ int not null;
END
这可以按预期工作。