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 ステートメントを介して呼び出すことを許可し、2 番目のパラメーターを値 、NULL
またはに設定できるようにする最善の方法は何でしょうかdefault
。