如何更改更新存储过程,以便开发人员只想设置Size
,然后他/她不需要传递TimeStamp
。那么,这个程序的执行代码是什么?
情境:
更新TimeStamp = getdate()
和SizeID = 1
Size =Large
字段
注意:此字段参数和条件参数必须是动态的,并且也可以提供TimeStamp
中的选项。
更新存储过程
ALTER PROCEDURE [dbo].[SP_Sizes_Update]
@SizeID int,
@Size varchar(50),
@TimeStamp datetime
AS
Update Sizes
Set
Size = @Size,
TimeStamp = @TimeStamp
Where
SizeID = @SizeID
答案 0 :(得分:4)
单程
ALTER PROCEDURE [dbo].[SP_Sizes_Update]
@SizeID int,
@Size varchar(50) = 'Large',
@TimeStamp datetime = null
AS
Update Sizes
Set
Size = @Size,
TimeStamp = coalesce(@TimeStamp,getdate())
Where
SizeID = @SizeID
答案 1 :(得分:3)
只需将参数设置为默认值,如下所示:
ALTER PROCEDURE [dbo].[SP_Sizes_Update]
@SizeID int,
@Size varchar(50),
@TimeStamp datetime = null
AS
Update Sizes
Set
Size = @Size,
TimeStamp = @TimeStamp
Where
SizeID = @SizeID
但是,如果您希望默认值是函数调用的结果,您可以使用一些将被函数孔替换的特殊值,如下所示:
ALTER PROCEDURE [dbo].[SP_Sizes_Update]
@SizeID int,
@Size varchar(50),
@TimeStamp datetime = null
AS
if @TimeStamp is null
set @TimeStamp = getdate()
Update Sizes
Set
Size = @Size,
TimeStamp = @TimeStamp
Where SizeID = @SizeID