不输入SQL if语句

时间:2019-06-06 02:54:10

标签: sql-server if-statement

我在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

如果我输入任何字符串,我希望最终在表打印输出中看到存在或不存在,但是我没有。

我看到的唯一打印输出是“检测到单个配置”。

1 个答案:

答案 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语句,以使事情更清晰,更紧凑。