gpt4 book ai didi

sql - if 和 else 语句都执行

转载 作者:行者123 更新时间:2023-12-02 08:00:23 25 4
gpt4 key购买 nike

我的 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,但它似乎总是在执行5 参数 else 查询版本。

我的 if 语句做错了什么?

更新:

它似乎正在运行这两个语句,因为如果我这样做

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

我遇到了同样的错误,但现在它说它正在执行第一个语句。

更新2: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

最佳答案

当 SQL Server 编译语句时,您会收到错误。

有了这张表

create table TestTable(ID int)

尝试运行此语句

if 1 = 1
insert into TestTable values (1)
else
insert into TestTable values(1, 2)

结果:

Msg 213, Level 16, State 1, Line 4
Column name or number of supplied values does not match table definition.

显然第二条语句永远不会被执行,但它会被编译。

关于sql - if 和 else 语句都执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com