我必须编写一个更新存储过程。我将询问所有列的参数(除了id)。用户不会一直发送所有的参数。他想要发送参数值为NULL,所以不要更新该列,他想要更新的列将是有效值。我该如何为此编写一个已存储的proc。基本上,我必须检查每个参数值,如果参数值不为空,则只更新该列。提前感谢!!
发布于 2010-02-23 12:55:44
如果该列为NOT NULL
,则使用COALESCE
将该列设置为新值,否则将该列设置为相同的原始值:
UPDATE MyTable
SET MyColumn1 = COALESCE(@MyColumn1, MyColumn1),
MyColumn2 = COALESCE(@MyColumn2, MyColumn2),
MyColumn3 = COALESCE(@MyColumn3, MyColumn3)
WHERE ID = @ID
发布于 2010-02-23 12:57:52
尝试:
CREATE PROCEDURE YourUpdate
(
@Param_PK int
,@Param1 varchar(10)=NULL
,@Param2 int=NULL
,@Param3 datetime=NULL
)
UPDATE YourTable
SET col1=COALESCE(@Param1,col1)
,col2=COALESCE(@Param2,col2)
,col3=COALESCE(@Param3,col3)
WHERE PK=@Param_PK
go3
发布于 2010-02-23 12:38:30
Create Procedure MyProc ( @Param1 int,
@Param2 varchar(20),
@Param3 int = NULL)
As
Begin
-- the sp
End
有关如何指定默认值,请参阅@Param3。
https://stackoverflow.com/questions/2318095
复制相似问题