gpt4 book ai didi

sql - 更新存储过程 - 仅更新某些字段而其他字段保持原样

转载 作者:行者123 更新时间:2023-12-04 14:08:14 27 4
gpt4 key购买 nike

我目前正在制作一个存储过程,它将更新产品详细信息。我想这样做(如果可能),以便仅更新在执行时在“值”列下输入的字段,其余字段与以前相同。

ALTER PROCEDURE [dbo].[spUpdateProduct]
@ProductID int, @Brand nvarchar(30), @ModelNo nvarchar(9), @Description
nvarchar(50), @CostPrice decimal(6,2), @Stock int, @SalePrice decimal(6,2)

AS
BEGIN
SET NOCOUNT ON

UPDATE tblProduct
SET
Brand = @Brand,
ModelNo = @ModelNo,
[Description] = @Description,
CostPrice = @CostPrice,
Stock = @Stock,
SalePrice = @SalePrice

WHERE ProductID = @ProductID

END

这是目前我所拥有的。当我去更改一个值时,它错误地说我没有输入“品牌”的值,这是“产品ID”之后的下一个值。

Execute Window

Error when trying to update two fields (ProductID and CostPrice)

编辑:当我创建表时,这些字段都设置为“非空”。

最佳答案

这就是我要做的。具有可为空的参数

ALTER PROCEDURE [dbo].[spUpdateProduct]
@ProductID int,
@Brand nvarchar(30) = null,
@ModelNo nvarchar(9) = null, ..... (to all the parameters except @ProductID)

AS
BEGIN
SET NOCOUNT ON

UPDATE tblProduct
SET
Brand = isNull(@Brand, Brand),
ModelNo = isNull(@ModelNo, ModelNo),
[Description] = isNull(@Description, Description),...


WHERE ProductID = @ProductID

END

基本上,如果参数不为空,您只会更新字段,否则保留旧值。

关于sql - 更新存储过程 - 仅更新某些字段而其他字段保持原样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com