我正在使用SQL Server 2005 - 9.00.5266.00(X64)
我不确定在SQL下面我错过了什么。有人能找出问题所在吗?
在这里 -
create table my_temp
(
col1 varchar(10)
)
--===================== the first block is executed
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'my_temp') and Name = 'col2')
begin
select 'alter table my_temp add col2 bit'
--alter table my_temp add col2 bit
end
else
begin
select 'update my_temp set col2 = null'
--update my_temp set col2 = null
end
--====================== the second block is executed
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'my_temp') and Name = 'col2')
begin
--select 'alter table my_temp add col2 bit'
alter table my_temp add col2 bit
end
else
begin
--select 'update my_temp set col2 = null'
update my_temp set col2 = null
end
我很困惑,相同的IF语句执行不同的代码块。
答案 0 :(得分:0)
与批次相关的问题 如果您执行了这样的代码,那么您可以使用GO语句
分隔批处理 create table my_temp
(
col1 varchar(10)
)
GO
-- rest of script
然后每次执行ELSE
部分时都会运行查询,因为表已创建
如果你第一次用GO
语句执行整个脚本,那么IF
部分将被执行,因为那时表格不会创建
将QUERY表创建与其他代码分开后,始终会ELSE
部分执行