需要对存储过程中的临时表进行更新查询

时间:2019-06-01 10:37:09

标签: sql-server

我在存储过程#Temp_SalesOrder中有一个临时表SP_SalesOrder,它有5列。我正在使用游标来循环此临时表插入。

我正在通过另一个存储过程Sp_SalesOrderValues在此临时表(前4列)中插入值。我需要将此临时表中的最后一列更新为在游标变量中选择的值。但是我在临时表中没有更新查询条件的唯一列。插入是逐行进行的,因此我需要按行更新此列值。

我正在共享我的查询,我需要像下面的结构那样得到答案,但是我总是得到80作为整个列的值...

请帮助..

IF OBJECT_ID('tempdb..#Temp_SalesOrder ') IS NOT NULL
    DROP TABLE #Tbl_SalesOrderChildRef

CREATE TABLE #Temp_SalesOrder 
(
    Pk INT,
    ProductMasterId INT,
    Name VARCHAR(50),               
    AllocatableQty NUMERIC(18, 0),
    SalesOrderSkuRate NUMERIC(18, 3) NULL
) 

-- Selecting SalesOrderSkuRate  using a select query
OPEN @curSalesOrderChild

FETCH NEXT FROM @curSalesOrderChild INTO @productMasterId, @Name, @SalesOrderSkuRate

WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO #Tbl_SalesOrderChildRef 
        EXEC Sp_SalesOrderValues
             @SkuMasterID = @productMasterId,
             @Name = @Name,
             @AllocatableQty = @AllocatableQty

    UPDATE #Tbl_SalesOrderChildRef 
    SET SalesOrderSkuRate = @SalesOrderSkuRate  ---Need a where condition for updating row by row now it updating last SalesOrderSkuRate to entire column that is my issue 

    FETCH NEXT FROM @curSalesOrderChild INTO @productMasterId, @Name, @AllocatableQty, @SalesOrderSkuRate
END

CLOSE @curSalesOrderChild
DEALLOCATE @curSalesOrderChild  

输出为:

pk  ProductMasterId     Name    AllocatableQty  SalesOrderSkuRate 
-------------------------------------------------------------------
1   50                   A1       10                    25
2   81                   A2       20                    75
3   92                   A3       30                    80

0 个答案:

没有答案