我寫過這個存儲過程,它執行但不更新客戶。問題是:創建一個名爲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