执行sp_executesql在SQL Server中不起作用

时间:2018-05-10 09:52:42

标签: sql-server sp-executesql

我正在尝试实现一种基于动态定义的算法执行计算的机制。我这样做的方式是:

  1. 构建一个包含所有变量及其值的定义的字符串
  2. 获取(从表格中)计算公式
  3. 调用sp_executesql
  4. 以下是作为计算传递的字符串的内容(变量@_l_Execute_Formula的内容):

    DECLARE @_1 FLOAT = 678;
    DECLARE @_2 FLOAT = NULL;
    DECLARE @_3 FLOAT = NULL;
    SET @_l_Result = @_1 + @_2 + @_3
    

    ,调用是:

    EXECUTE sp_executesql   @_l_Execute_Formula            , 
                          N'@_l_Result FLOAT OUTPUT'       , 
                            @_l_Result = @_l_Result OUTPUT   ;
    

    我没有收到任何错误消息,但@_l_ResultNULL

    我做错了什么?

1 个答案:

答案 0 :(得分:2)

NULL的浮点值之和返回NULL。您可能想要转义NULL值。

DECLARE @_l_Execute_Formula NVARCHAR(MAX) = '

DECLARE @_1 FLOAT = 678;
DECLARE @_2 FLOAT = NULL;
DECLARE @_3 FLOAT = NULL;
SET @_l_Result = ISNULL(@_1, 0) + ISNULL(@_2, 0) + ISNULL(@_3, 0)'

DECLARE @_l_Result FLOAT

EXECUTE sp_executesql   @_l_Execute_Formula            , 
                      N'@_l_Result FLOAT OUTPUT'       , 
                        @_l_Result = @_l_Result OUTPUT;


SELECT @_l_Result  -- Result 678