안녕하세요.
다른 프로시저에서 리턴된 테이블을 가공하여 새로운 결과 테이블을 얻으려고 하는데요
개략적인 SP는 다음과 같습니다.
IF OBJECT_ID ('Tempdb.dbo.#tempTable' ) IS NOT NULL DROP TABLE #tempTable
CREATE Table #tempTable
(
ItemType VARCHAR(25),
ItemKind VARCHAR(25),
ModelCd VARCHAR(25)
)
INSERT #tempTable exec [Logistic].[USP_StockModelSituation_List] @FromDate, @ToDate, '', ''
SELECT * FROM #tempTable
결과적으로 보면 이렇게 할 경우에 잘 돌아가긴 하는데
제가 원하는 것은 임시테이블을 미리 만들고 결과를 집어 넣는 것이 아니라
그냥 프로시저의 결과물 그대로 저장하고 싶습니다.
왜냐하면 호출하는 프로시저가 리턴해주는 컬럼명이나 개수가 달라질 경우 #tempTable을 수정해야 하기 때문인데요.
수정을 2번 하기 싫어서 호출 하는 것이기 때문입니다.
그래서 다음과 같이 수정해 보았습니다.
IF OBJECT_ID ('Tempdb.dbo.#tempTable' ) IS NOT NULL DROP TABLE #tempTable
DECLARE @q varchar(max)
SET @q = 'insert into #tempTable exec [Logistic].[USP_StockModelSituation_List]''@FromDate'',''@ToDate'','''','''''
EXEC(@q)
SELECT * FROM #tempTable
그런데 안되더라고요..ㅋ
exec 앞부분을 SELECT * INTO #tempTable from 로도 바꿔봤는데 두 가지 방법 모두
#tempTable이나 exec에서 구문오류가 나버립니다..
구글링 해도 임시테이블을 미리 만들고 넣는다던지 아니면 OPENROWSET 등을 이용하라고 하는데
또 OPENROWSET은 보안에 취약하다는 글도 본거 같고 그래서..
혹시 해결할 방법이 있을 까요?