存储过程插入执行语句不能嵌套



我有以下存储过程,它调用另一个存储过程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

我总是得到

存储过程中插入exec语句不能嵌套

我看了一下,但是我不太明白如何解决这个问题

最好的方法是将存储过程重写为表函数。在性能方面,内联函数工作得最好,但是像这样对过程进行函数式重写通常比较困难。

大多数存储过程可以很容易地重写为表值函数。

请看这里获取更多信息:http://technet.microsoft.com/en-us/library/ms187650(v=sql.105).aspx

一旦你重写了它,你就可以嵌套insert到/select语句中。

INSERT INTO [TABLE] (col1, col2,…)SELECT tvfcol1, tvfcol2,…dbo。func_TVF_blabla(@param1, @param2,…)

最新更新