Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 能否使用CASE语句来计算要传递到存储过程中的参数?_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

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;