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