插入案例EXEC SP

时间:2014-05-01 01:26:34

标签: sql-server tsql stored-procedures insert

当我执行此语句时,我在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

由于

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

你最好调用一个SP,并在其中包含一个if语句来执行条件分支,或者让条件像你一样调用SP,但是在SP中有整个insert语句&# 39; S