2014-05-14 2 views
1

내가이 다른 저장 프로 시저를 호출하는 다음 저장 프로 시저가 dbo.[spGetResult]저장 프로 시저 삽입 간부 문은

;WITH CTE 
AS 
(
    SELECT 0 AS [Level],PNLId , PNLParentId, PNLName 
    FROM [dbo].[DimPNL] 
    WHERE PNLParentId IS NULL 
    UNION ALL 
    SELECT CTE.[Level] + 1 ,T1.PNLId,T1.PNLParentId,T1.PNLName 
    FROM [dbo].[DimPNL] AS T1 
    INNER JOIN CTE 
    ON T1.PNLParentId = CTE.PNLId 
) 
-- order the results into a #temp table 
SELECT * 
INTO ##temp 
FROM CTE 
ORDER BY level desc 

DECLARE @PNLName As varchar(MAX) 

DECLARE db_cursor CURSOR FOR 
SELECT PNLName 
FROM ##temp 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @PNLName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     INSERT INTO dbo.[test1]//from here I have a problem 
     Exec dbo.[spGetResult] @PNLName 

     FETCH NEXT FROM db_cursor INTO @PNLName 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 

난 항상

저장 프로 시저 삽입 간부 문이 중첩 될 수 없습니다

를 얻을 중첩 될 수 없습니다

나는 좀 here이 그러나 나는 매우 많은 문제를 해결하는 방법을 이해하지 못했다?

+1

마이트 해당 SP의 내용도 표시하는 데 도움이됩니다. – AKoran

답변

1

가장 좋은 방법은 테이블 함수에 저장 프로 시저를 다시 작성하는 것입니다. 성능면에서는 인라인 함수가 가장 잘 작동하지만, 일반적으로 이와 같은 프로 시저를 기능적으로 다시 작성하는 것이 더 어렵습니다.

대부분의 저장 발동은 쉽게하지만 테이블 반환 함수로 다시 작성할 수 있습니다.

는 추가 정보를 원하시면 여기를보세요 : 당신이 둥지/select 문에 삽입 할 수 http://technet.microsoft.com/en-us/library/ms187650(v=sql.105).aspx 당신이 그것을 다시 작성하면

.

INSERT INTO [TABLE (COL1, COL2, ...) SELECT tvfcol1, tvfcol2 ... dbo.func_TVF_blabla에서 (@ PARAM1 @ PARAM2, ...)

관련 문제