我有一种情况,我可能需要将一个可能包含 NULL 值的变量传递给函数,但是通过sp_executesql
,所以我需要通过字符串连接将其转换为字符串值。
例如:
declare @var1 varchar(10) = 'value'
declare @var2 varchar(10) = null
declare @sql nvarchar(2000)
.
.
set @sql = '
select dbo.fn_Scalar(''' + @var1 + ''', ''' + @var2 + ''' )
'
功能定义:
Create Function [dbo].[fn_fn_Scalar]
(
@var1 varchar(10) ,
@var2 varchar(10) = null
) RETURNS float
AS BEGIN
Declare @ret float
Select @ret = sum(value)
from Table
where Field1 = @var1
and Field2 like isnull(@var2, '%')
return @ret
END
什么是允许fn_Scalar
通过动态和静态 SQL 语句调用并且仍然允许将第二个参数设置为值NULL
、 或default
.