使用两个存储过程填充临时表时,将具有默认值的列添加到临时表

时间:2019-09-12 12:52:20

标签: sql-server

我有一个存储过程,该存储过程执行两个存储过程并获取正确的数据,但是现在我需要在temp表中添加一个具有默认值的列。

例如,我想在第一个存储过程执行时将位置类型列添加到临时表中,我想在每个记录中添加1,而当第二个存储过程添加到临时表时,我想在该列中添加2每条记录。能做到吗?

没什么

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[uspStockAdjustmentGetStorageLocationTESTDELETEAFTER]
    @CategoryId INT,
    @ReasonId INT
AS
    SET NOCOUNT ON

    DECLARE @LocationType INT

    SELECT @LocationType = LocationType
    FROM [dbo].[StockAdjustmentReasonGLAccount] 
    WHERE CategoryId = @CategoryId AND ReasonId = @ReasonId

    IF(@LocationType = 1)
    BEGIN
        CREATE TABLE #tmp
        (
             ID INT IDENTITY(1, 1), 
             CODE NVARCHAR(50), 
             Description NVARCHAR(50) 
        )

        INSERT INTO #tmp 
            EXECUTE dbo.uspStockAdjustmentWorkCentreSelectAll 

        INSERT INTO #tmp    
            EXECUTE dbo.uspStockAdjustmentGetSAPStorageType

        SELECT 
            Code, MIN(id) AS Id  
        FROM 
            #tmp 
        GROUP BY
            CODE 
        ORDER BY 
            Id

        DROP TABLE #tmp
    END

我不确定如何使用默认值添加此列

1 个答案:

答案 0 :(得分:3)

使用新列(默认值为2)创建临时表

CREATE TABLE #tmp
(
    ID   INT IDENTITY(1,1) , 
    CODE nvarchar(50), 
    Description nvarchar(50),
    LocationType INT default 2
)

在插入临时表时明确指定该列。

INSERT INTO #tmp (CODE, Description)
EXECUTE dbo.uspStockAdjustmentWorkCentreSelectAll 

在第一个存储过程执行后将LocationType更改为1

UPDATE #tmp
SET    LocationType  = 1

INSERT INTO #tmp (CODE, Description)   
EXECUTE dbo.uspStockAdjustmentGetSAPStorageType

第二个存储过程的结果的值为2