【问题标题】:Adding column with default values to temp table when using two stored procedures to populate the temp table使用两个存储过程填充临时表时将具有默认值的列添加到临时表
【发布时间】:2019-09-12 21:09:58
【问题描述】:

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

例如,我想在第一个存储过程执行时向临时表添加一个位置类型列,我想向每条记录添加 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

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

【问题讨论】:

  • DEFAULT 值定义列。 Specify Default Values for Columns
  • 如果您只是要在第二个过程运行后立即将值更新为 2,我不明白您为什么要为值 1 烦恼。只需在第二个过程调用之后添加更新。更新#tmp set LocationType = 2

标签: sql-server


【解决方案1】:

使用默认值为 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

【讨论】:

  • 您在创建#tmp 表时是否包含了LocationType?
  • 这与您提供的代码无关,@danielcarey;这是我们没有定义的 SP 中的错误。
  • 那行得通。非常感谢。你让我免于数小时的头痛
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 2018-03-02
相关资源
最近更新 更多