2015-06-12 6 views
0

Я пытаюсь получить блок IF после инструкции INSERT INTO и в зависимости от некоторых условий выполнить другой SELECT, который будет кормить INSERT INTO.Различные SELECT для INSERT INTO

Вот (отсутствии) пример того, что я пытаюсь сделать:

INSERT INTO #TempTable (COL1, COL2, COL3) 
    IF @VAR = 'YES' 
     BEGIN 
      SELECT * FROM TABLE 
     END 
    ELSE 
     BEGIN 
      SELECT * FROM TABLE WHERE REGDATE <= '2015-06-12' 
     END 

Но я всегда в конечном итоге с этим при попытке сохранить хранимая процедура.

Incorrect syntax near the keyword 'IF' 

Я думал о построении строки и с помощью sp_executesql, но я думаю, что мой первоначальный подход будет менее подвержен ошибкам.

ответ

1

Другим вариантом было бы использовать CASE заявление или IF заявление. Может быть, это? Это довольно близко к тому, что у вас было:

CREATE TABLE TABLE1 (a INT, b INT, c INT); 
CREATE TABLE TABLE2 (a INT, b INT, c INT); 
CREATE TABLE TABLE3 (a INT, b INT, c INT); 

INSERT INTO TABLE2 VALUES(1,2,3); 
INSERT INTO TABLE3 VALUES(4,5,6); 

DECLARE @VAR VARCHAR(MAX) = 'YES' 

IF @VAR = 'YES' 
BEGIN 
    INSERT INTO TABLE1 
    SELECT * FROM TABLE2 
END 

ELSE 
BEGIN 
    INSERT INTO TABLE1 
    SELECT * FROM TABLE3 
END 
+0

Можете ли вы разместить пример? Я тоже пробовал этот маршрут, но также закончил синтаксические ошибки. –

+0

@FrancisDucharme - Смотрите новый пример с инструкцией IF. – Trinculo

1

Это не работает. Но это

INSERT INTO #TempTable (COL1, COL2, COL3) 
SELECT * FROM TABLE 
WHERE @VAR = 'YES' OR REGDATE <= '2015-06-12' 
Смежные вопросы