[데이터베이스] 저장 프로세스가 서로 호출될 때 임시 테이블의 명칭 주의점

962 단어 저장 프로세스
최근에 두 개의 저장 프로세스를 썼는데, 서로 호출될 것이다.데이터베이스에서 직접 테스트하고 실행할 때 문제가 없고 코드에 파라미터를 전송하여 호출한 후에 오류가 발생할 수 있습니다.
오후 내내 고생한 후에도 팀장은 고장 원인을 찾아냈다.
원래 서로 호출된 두 개의 저장 과정 중 임시 테이블이나 변수의 명칭이 가장 좋고, 그렇지 않으면 호출 오류가 발생하여 실행 오류가 발생할 수 있다.
나는 두 개의 저장 프로세스를 간단하게 써서 시범을 보여 주겠다. 반드시 실행할 수 있는 것은 아니고, 이해할 수 있으면 된다.
ps_day
CREATE PROCEDURE [ps_day]

AS

BEGIN

    SELECT  col1,col2 

    INTO #Temp

    FROM history



    SELECT * FROM #Temp



END

GO


ps_month
CREATE PROCEDURE [ps_month]

AS

BEGIN

    DECLARE @date datetime,@i int

    SET @date = DATEADD(M,-1, getdate())

    SET @i =  0

    WHILE(@i<30)

    BEGIN

        SELECT col1 ,0 AS col3 

        INTO  #Temp

        EXEC @ps_day

        

        SET @i= @i + 1

    END



    SELECT col3

    FROM #Temp



END

GO    


실행 psmonth 후 [열명col2가 올바르지 않음]의 오류가 발견됩니다.
psday,ps_month의 임시표가 각각 #Temp1, #Temp2로 바뀌자 이 오류가 사라진 것을 발견했다.

좋은 웹페이지 즐겨찾기