首页 > 解决方案 > EXECUTE sp_executesql 在 SQL Server 中不起作用

问题描述

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

  1. 构建一个包含所有变量定义及其值的字符串,
  2. 获取(从表中)计算公式,
  3. 调用sp_executesql.

这是作为计算传递的字符串的内容(变量的内容@_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.

我究竟做错了什么?

标签: sql-serversp-executesql

解决方案


NULL带有return的浮点值的总和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

推荐阅读