次のようなSQL Server 2008のストアドプロシージャがあります。
create procedure test_proc
@someval int,
@id int
as
update some_table
set some_column = ISNULL(@someval, some_column)
where id = @id
go
パラメータ@someval
がの場合NULL
、この SP は の既存の値をそのまま使用しますsome_column
。
ここで、この動作を変更して、 の値が の場合@someval
、0
aNULL
が格納されるsome_column
ようにします。それ以外の場合は、現在と同じように動作します。だから私は次のようなものを探しています:
if @someval == 0
set some_column = NULL
else
set some_column = ISNULL(@someval, some_column)
varchar @sql 変数を作成して sq_executesql を呼び出すオプションはありません (少なくとも、これは私がやりたい最後のことです)。これを行う方法について何か提案はありますか?