我在SQL Server中输入if语句时遇到问题。
我尝试将if内部语句包装在BEGIN END块中,但是没有运气。
if (CHARINDEX(',', @Configs, 0) = 0)
print 'Single config detected'
begin
if (@configAlreadyExists = 0)
begin
print 'Cofnig ' + @Configs + ' isn''t in the Health Check config display list, checking if it exists in table...'
if not exists (select 1 from table where ConfigKey = @Configs)
begin
print 'Cofnig ' + @Configs + ' doesn''t exist in table, add the config first.'
end
else
begin
print 'Cofnig ' + @Config + ' exists in table, adding config for Health Check display.'
end
end
end
如果我输入任何字符串,我希望最终在表打印输出中看到存在或不存在,但是我没有。
我看到的唯一打印输出是“检测到单个配置”。
答案 0 :(得分:2)
反引号提示以下两种情况之一-发布或使用非sql server的数据库引擎时出错。假设是前者,但许多发布者不知道他们使用什么数据库引擎。
您的第一个“开始”位置可能不正确。您可能打算这样做:
if charindex() = 0
begin
print ...
if @configAlreadyExists = 0
begin
...
end
end
就目前而言,格式化方面的一些努力使流程更加明显
if (CHARINDEX(',', @Configs, 0) = 0)
print 'Single config detected'
begin
if (@configAlreadyExists = 0)
begin
print 'Cofnig ' + @Configs + ' isn''t in the Health Check config display list, checking if it exists in table...'
if not exists (select 1 from table where ConfigKey = @Configs)
print 'Cofnig ' + @Configs + ' doesn''t exist in table, add the config first.'
else
print 'Cofnig ' + @Config + ' exists in table, adding config for Health Check display.'
end
end
我删除了最里面(不需要)的begin / end语句,以使事情更清晰,更紧凑。