Не вводить SQL, если заявление - PullRequest
0 голосов
/ 06 июня 2019

У меня проблема с вводом оператора if в SQL Server.

Я попытался обернуть оператор 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 Ответ

2 голосов
/ 06 июня 2019

Обратные пометки указывают на одну из двух причин - ошибку во время публикации или использования механизма базы данных, который не является сервером sql.Предположим, что первые, но многие авторы не знают, какой движок базы данных они используют.

Ваше первое "начало", вероятно, не правильно размещено.Вы, вероятно, намеревались сделать:

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

Я удалил самое внутреннее (и не нужно)) операторы начала / конца, чтобы сделать вещи более понятными и более компактными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...