프로시저에서 임시테이블을 만들어서 특정테이블의 컬럼을 update하려 합니다.
프로시저를 아래와 같이 작성했는데, update 쿼리가 실행되지 않아서 질문드립니다.
프로시저를 어떻게 작성해야 하는 건가요?
업데이트 쿼리 : update Prod_stock set Rstock001 = Rstock001 + sum(Qty) where itmcd = p_code
Str_code는 varchar(3)이고, 001,002,003..., Rstock001은 integer 형식입니다.
P_code는 numeric, itmcd도 numeric입니다.
업데이트 관련 쿼리 : Select Str_code, P_code, Sum(Qty) From Ven_dt
where S_date between @Bday AND @Aday Group by Str_code, P_code
alter PROC usp_Ven_Dt
AS
Begin
Declare
@Dayvalue varchar(8),
@Aday varchar(8),
@Bday varchar(8),
@query NVARCHAR(MAX)
Select @Dayvalue = CONVERT(VARCHAR, GETDATE(), 112)
set @Aday = convert(varchar(8), dateadd(day, 1, @Dayvalue), 112) --내일
set @Bday = convert(varchar(8), dateadd(day, -1, @Dayvalue), 112) --어제
SELECT ' UPDATE Prod_stock SET Rstock'+Str_code+' = Rstock'+Str_code+' + ' + CONVERT(NVARCHAR, SUM(Qty)) +
' WHERE itmcd = ''' + P_code + '' AS query INTO #temp
FROM Ven_Dt WHERE S_date BETWEEN @Bday AND @Aday
GROUP BY Str_code, P_code
WHILE EXISTS(SELECT 1 FROM #temp)
BEGIN
SELECT TOP 1 @query = query FROM #temp
EXEC (@query)
DELETE FROM #temp WHERE query = @query
END
DROP TABLE #temp
Delete From Ven_Dt where S_date between @Bday and @Aday