我在SQL两个if和else语句执行
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有这个疑问,但是它总是出现被执行5参数else
版本的查询。
我在做什么错我的if语句?
UPDATE:
这似乎是同时运行statments因为如果我这样做
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: Mikael Eriksson有正确的答案,我改变了我的代码以解决这个问题。
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
有没有办法解决这个问题? – 2011-06-02 18:06:42
@Scott - 一种方法是 – 2011-06-02 18:10:18
(1)分支代码,根据列计数调用一个或两个子进程(2)如果它们总是相同,则在第5列上粘贴一个默认值在这些情况下。唉,像动态SQL,这些感觉很烂。 – 2011-06-02 18:14:58