我正在尝试实现一种基于动态定义的算法执行计算的机制。我这样做的方式是:
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_Result
为NULL
。
我做错了什么?
答案 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