--範例 --建立暫存表 IF UPPER(@ServerNa) = 'SERVAER_A' BEGIN IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL select DISTINCT CorpNo,IONo into #STUL from [SERVAER_A].InnovaERP.dbo.SysTableUpdateLog where PrgType=@PrgType END ELSE IF UPPER(@ServerNa) = 'SERVAER_B' BEGIN IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL select DISTINCT CorpNo,IONo into #STUL from [SERVAER_B].InnovaERP.dbo.SysTableUpdateLog where PrgType=@PrgType END
--錯誤訊息 訊息 2714,層級 16,狀態 1,程序 SP_XXX,行 24 資料庫中已經有一個名為 '#STUL' 的物件。通常在不同的IF ELSE判斷子句中,應該可以視為獨立的事件,
不知為什麼MS SQL在stored procedure中,
使用IF ELSE針對不同的條件SELECT INTO到同樣的表格,會有這樣的錯誤訊息,
只好改寫語法,於判斷式前先將暫存表建立,再於子句中INSERT INTO即可
--建立暫存表 IF (SELECT OBJECT_ID('tempdb..#STUL')) IS NOT NULL DROP TABLE #STUL SELECT TOP 1 CorpNo,IONo INTO #STUL FROM SysTableUpdateLog IF UPPER(@ServerNa) = 'SERVAER_A' BEGIN INSERT INTO #STUL select DISTINCT CorpNo,IONo from [SERVAER_A].InnovaERP.dbo.SysTableUpdateLog where PrgType=@PrgType END ELSE IF UPPER(@ServerNa) = 'SERVAER_B' BEGIN INSERT INTO #STUL select DISTINCT CorpNo,IONo from [SERVAER_B].InnovaERP.dbo.SysTableUpdateLog where PrgType=@PrgType END
沒有留言:
張貼留言