我正在编写一个存储过程来更新事务表。SQL Server 2005存储过程
我会在一个时间(发货,收货或处置)
来更新一个交易类型如果我更新发货,我将传递一个值,并保留其他两个空白。
如何编写一个存储过程,以便当我传入的值不是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
COALESCE
似乎并没有工作,因为我不断收到错误,有另一种功能,我可以用它来做到这一点?
我越来越:
附近有语法错误receiptID“。
我不明白为什么:(
谢谢!
**什么数据库系统,什么版本?**存储的特效不是厂商之间移植,并没有足够的SQL标准小组委员会,以规范有意义的“一般”答案,适用于每个数据库系统..... – 2011-03-10 16:20:41
我使用SQL 2005 – 2011-03-10 16:23:51
不,您正在使用** Microsoft ** SQL ** Server ** 2005. [SQL](http:/ /en.wikipedia.org/wiki/SQL)是一种标准语言,由MS SQL Server,Oracle DBMS,IBM DB2,MySQL,PostgreSQL,Interbase实现......因此,您应该仅将此标签用于通用,独立于供应商的问题。 – rsenna 2011-03-10 16:30:18