Mad*_* Zu 0 sql sql-server stored-procedures sql-server-2005 coalesce
我正在编写一个存储过程来更新事务表.
我将一次更新一种交易类型(装运,收货或处置)
如果我正在更新货件,我将传入一个值,并将另外两个留空.
我如何编写存储过程,以便它只在我传入的值不是NULL(或0,更容易)时更新字段,并保留其他的原样?
这是我现在的位置:
CREATE PROCEDURE [dbo].[sp_UpdateTransaction]
-- Add the parameters for the stored procedure here
@ID int,
@disposalID int,
@shipID int,
@recID int,
as
begin
update tblX
set
disposalID = COALESCE(@disposalID, disposalID)
receiptID = COALESCE(@recID, receiptID)
shipmentID = COALESCE(@shipID,shipmentID)
where ID = @sID
END
Run Code Online (Sandbox Code Playgroud)
COALESCE 似乎不起作用,因为我一直在收到错误,是否还有其他功能可以用来实现这一目标?
我越来越:
'receiptID'附近的语法不正确.
我不明白为什么:(
谢谢!
您收到错误的原因也可能是因为您','在每个错误结束时都丢失了set.
update tblX
set
disposalID = COALESCE(@disposalID, disposalID),
receiptID = COALESCE(@recID, receiptID),
shipmentID = COALESCE(@shipID,shipmentID)
where ID = @sID
Run Code Online (Sandbox Code Playgroud)
作为替代方案,假设您使用的是SQL Server ,则可以使用ISNULL().