我有一个存储过程,该存储过程执行两个存储过程并获取正确的数据,但是现在我需要在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
我不确定如何使用默认值添加此列
答案 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