Я написал эту хранимую процедуру, и она выполняется, но она не обновляет клиента. Возникает вопрос: создайте процедуру с именем 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) равно null. –
Я даже не думал об этом, возвращая более одного ряда. Благодаря! – user2257844
UPDATE КЛИЕНТ SET CUS_BALANCE = ISNULL (CUS_BALANCE, 0) + ISNULL ((SELECT SUM (INV_TOTAL) FROM ФАКТУРЫ WHERE @ INV_NUMBER = INV_NUMBER), 0) ГДЕ @ CUS_CODE = CUS_CODE – bummi