开发者

SQL Server 2005 stored procedure

I am writing a stored procedure to update a transaction tab开发者_Python百科le.

I will be updating one transaction type at a time (shipment, receipt or disposal)

If I'm updating shipment, I will pass in a value, and leave the other two blank.

How can I write a stored procedure so that it only updates the field when the value I'm passing in is not NULL (or 0, whichever is easier), and leave the others as they were?

Here is where I am now:

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 doesn't seem to work, as I keep getting errors, is there another function I can use to make this happen?

I'm getting:

Incorrect syntax near 'receiptID'.

I don't see why :(

Thank you!


The reason you are getting error could also be because you are missing ',' at end of each set.

update tblX
set
disposalID = COALESCE(@disposalID, disposalID),
receiptID = COALESCE(@recID, receiptID),
shipmentID = COALESCE(@shipID,shipmentID)
where ID = @sID

As an alternative, you can use ISNULL() assuming you are using SQL server.


what you can do is put each update statement inside an IF or a CASE statement. like:

IF @disposalid is not null:
     update tblX
     set disposalID = @disposalID


did you try using ISNULL ( check_expression , replacement_value )

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜