我写过这个存储过程,它执行但不更新客户。问题是:创建一个名为prc_cus_balance_update的过程,将发票号码作为参数并更新客户余额。SQL Server的存储过程
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE PRC_CUS_BALANCE_UPDATE3
@INV_NUMBER INT
AS
BEGIN
DECLARE @CUS_CODE INT
SELECT @CUS_CODE=CUS_CODE
FROM INVOICE
WHERE @INV_NUMBER=INV_NUMBER
UPDATE CUSTOMER
SET CUS_BALANCE=CUS_BALANCE +
(SELECT INV_TOTAL FROM INVOICE WHERE @INV_NUMBER=INV_NUMBER)
WHERE @CUS_CODE=CUS_CODE
END
GO
几点建议:你是否在某处进行了提交?从发票中选择获取客户代码是否返回多行? cus_balance null(null + 5)是否为空。 – 2013-04-08 13:49:38
我从来没有想过它返回多行。谢谢! – user2257844 2013-04-08 13:54:50
更新客户 SET CUS_BALANCE = ISNULL(CUS_BALANCE,0)+ ISNULL((SELECT SUM(INV_TOTAL)从发票开WHERE @ INV_NUMBER = INV_NUMBER),0) WHERE @ CUS_CODE = CUS_CODE – bummi 2013-04-08 13:58:41