sql server语言 - INSERT INTO CASE EXEC SP



当我执行此语句时,我在CASE周围得到一个错误。当某些条件成立时,如何将其更改为在上执行SP。条件将是变量

INSERT INTO myTable
(
Col 1
Col 2
)
CASE
WHEN Condition 1 AND Condition 2 THEN
Exec SP1
WHEN Condition 3 AND Condition 4 THEN
Exec SP2
END

感谢

DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'INSERT INTO myTable
            (Col1,  Col2) '
          + CASE
              WHEN Condition 1 AND Condition 2 THEN
                N'Exec SP1'
              WHEN Condition 3 AND Condition 4 THEN
                N'Exec SP2'
            END  
EXECUTE sp_executesql @Sql

此外,如果您的存储过程采用任何参数,您可以按如下方式添加它们:

DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'INSERT INTO myTable
            (Col1,  Col2) '
          + CASE
              WHEN Condition 1 AND Condition 2 THEN
                N'Exec SP1 @Param1'
              WHEN Condition 3 AND Condition 4 THEN
                N'Exec SP2 @Param2'
            END  
EXECUTE sp_executesql @Sql
                     ,N'@Param1 DataType, @Param2 DataType'
                     ,@Param1 ,@Param2

不,这不会起作用,因为insert语句希望在实际插入时找到一组与列匹配的数据。

您最好调用一个SP,并在其中包含一个if语句来执行条件分支,或者让条件按原样调用SP,但在SP中包含整个insert语句。

最新更新