I am attempting to update an inventory table using a cursor but my result set is only bring back 1 row instead of all rows which was what I was expecting.
Code:
CREATE PROCEDURE sp_AddComponentDetail(
@LocationID int,
@ComponentID int)
AS
DECLARE @CompID int
DECLARE @Date datetime
DECLARE @Location nvarchar(50)
DECLARE @AmtShip int
DECLARE @AmtRec int
DECLARE @Balance int
DECLARE @SortOrder int
BEGIN
DECLARE curBalance CURSOR LOCAL FAST_FORWARD
FOR SELECT dtmDate, strLocation, intAmtShip, intAmtRec, intBalance
FROM tblCurrentInventoryDetail
OPEN curBalance
FETCH NEXT FROM curBalance
INTO @Date, @Location, @AmtShip, @AmtRec, @Balance
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE tblCurrentInventoryDetail
SET intBalance = intBalance + (intAmtRec - intAmtShip)
FETCH NEXT FROM curBalance
END
CLOSE curBalance
DEALLOCATE curBalance
-- Display Results
SELECT dtmDate, strLocation, intAmtShip, intAmtRec, intBalance FROM tblCurrentInventoryDetail
RETURN
END
Code:
CREATE PROCEDURE sp_AddComponentDetail(
@LocationID int,
@ComponentID int)
AS
DECLARE @CompID int
DECLARE @Date datetime
DECLARE @Location nvarchar(50)
DECLARE @AmtShip int
DECLARE @AmtRec int
DECLARE @Balance int
DECLARE @SortOrder int
BEGIN
DECLARE curBalance CURSOR LOCAL FAST_FORWARD
FOR SELECT dtmDate, strLocation, intAmtShip, intAmtRec, intBalance
FROM tblCurrentInventoryDetail
OPEN curBalance
FETCH NEXT FROM curBalance
INTO @Date, @Location, @AmtShip, @AmtRec, @Balance
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE tblCurrentInventoryDetail
SET intBalance = intBalance + (intAmtRec - intAmtShip)
FETCH NEXT FROM curBalance
END
CLOSE curBalance
DEALLOCATE curBalance
-- Display Results
SELECT dtmDate, strLocation, intAmtShip, intAmtRec, intBalance FROM tblCurrentInventoryDetail
RETURN
END