Условная вставка IF существует - PullRequest
0 голосов
/ 31 января 2019

У меня есть запрос, чтобы сначала проверить, существует ли что-то.Если да, вставьте что-нибудь в табличную переменную.В противном случае, вставьте что-то еще в эту же табличную переменную.

IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)
(   
    BEGIN  
        INSERT INTO @Result 
            SELECT .... 
            FROM ... 
            WHERE...
   END
)
ELSE
   INSERT INTO @Result  
       SELECT .... 
       FROM ...  
       WHERE...

По какой-то причине я продолжаю получать ошибки, приведенные ниже, с жалобами в условии NOT EXISTS ... С частью ELSE все в порядке.

Неверный синтаксис рядом с ключевым словом 'BEGIN'
Неверный синтаксис рядом с ')'
Неверный синтаксис рядом с '@ Result'

Где я ошибся?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Скобки не относятся к BEGIN / END:

IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)   
BEGIN  
    INSERT INTO @Result 
        SELECT .... FROM ... WHERE...
END
ELSE . . .

Я бы также предложил вам перечислить столбцы для @Result для INSERT.Это может предотвратить будущие проблемы.

0 голосов
/ 31 января 2019

попробуйте

IF NOT EXISTS (SELECT 1 FROM @Main WHERE CustomerId = @CustomerId)

     BEGIN  
          INSERT INTO @Result 
          SELECT .... FROM ... WHERE...
     END

ELSE

     BEGIN
          INSERT INTO @Result 
          SELECT .... FROM ... WHERE...
     END
...