Sql 能否使用CASE语句来计算要传递到存储过程中的参数?
我有一个包含四个参数的存储过程。我想在另一个脚本中调用它,但当我这样做时,我还没有弄清楚我想要传递什么。我正在尝试对存储过程进行内联操作。所以我的线路是这样的:Sql 能否使用CASE语句来计算要传递到存储过程中的参数?,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我有一个包含四个参数的存储过程。我想在另一个脚本中调用它,但当我这样做时,我还没有弄清楚我想要传递什么。我正在尝试对存储过程进行内联操作。所以我的线路是这样的: EXEC stored_procedure @firstparam, @secondparam, CASE @thirdparam WHEN null THEN 0 ELSE 1 END, CASE @fourthparam WHEN
EXEC stored_procedure
@firstparam,
@secondparam,
CASE @thirdparam
WHEN null THEN 0
ELSE 1
END,
CASE @fourthparam
WHEN null THEN 0
ELSE 1
END
但我在以下部分附近发现了一个非常模糊的错误,即“语法错误”:
- 第一例
- 前1
- 第一个,(第一个案例结束后,第二个案例结束前)
- 第二个1
我只希望能够执行CASE语句,根据第三个和第四个参数传递正确的变量。您需要变量。
exec
语句不对参数的表达式求值:
DECLARE @p3flag int = (CASE WHEN @thirdparam IS NULL THEN 0 ELSE 1 END);
DECLARE @p4flag int = (CASE WHEN @fourthparam IS NULL THEN 0 ELSE 1 END);
EXEC stored_procedure @firstparam, @secondparam, @p3flag, @p4flag;