У меня есть этот запрос в моем sql
if (select count(*) from sys.columns where object_id = (select object_id from sys.tables where name = 'CLIENT_STATUS')) = 4
insert into CLIENT_STATUS select 'NA', 'Inactive', 0, 0 --old version
else
insert into CLIENT_STATUS select 'NA', 'Inactive', 0, 0, 1 --new version
Результат select count(*) from sys.columns where object_id = (select object_id from sys.tables where name = 'CLIENT_STATUS')
равен 4, однако всегда выполняется версия запроса с параметром else
.
Что я делаю не так с моим утверждением if?
UPDATE:
Кажется, он запускает оба отчета, потому что если я сделаю
if (select count(*) from sys.columns where object_id = (select object_id from sys.tables where name = 'CLIENT_STATUS')) = 5
insert into CLIENT_STATUS select 'NA', 'Inactive', 0, 0, 1 --new version
else
insert into CLIENT_STATUS select 'NA', 'Inactive', 0, 0 --old version
Я получаю ту же ошибку, но теперь он говорит, что делает первое утверждение.
UPDATE2:
Микаэль Эрикссон получил правильный ответ, я изменил свой код на этот, чтобы исправить это.
if ((select count(*) from sys.columns where object_id = (select object_id from sys.tables where name = 'CLIENT_STATUS')) = 5)
execute ('insert into CLIENT_STATUS select ''NA'', ''Inactive'', 0, 0, 1') --new version
else
execute ('insert into CLIENT_STATUS select ''NA'', ''Inactive'', 0, 0') --old version