【发布时间】:2018-06-08 18:18:11
【问题描述】:
我在存储过程中使用 cte。
我必须多次使用它,即为不同的 id 填充 cte
如何删除或删除当前 cte
谢谢
;WITH PAYOUT_CTE(REGNKEY, REGNTPE) AS (
SELECT REG_KEY, 'Parent'
FROM ML_MSTR_REGN A (NOLOCK)
WHERE A.COMP_NO = @COMP_NO
AND A.REG_KEY = @CUR_KEY
UNION ALL
SELECT B.REG_KEY, 'Child0'
FROM PAYOUT_CTE
INNER JOIN ML_MSTR_REGN B
ON B.COMP_NO = @COMP_NO
AND B.ORG_KEY = PAYOUT_CTE.REGNKEY
)
SELECT * INTO #PAYOUT_CTE_TMP FROM PAYOUT_CTE
我解决了,因为 cte 在插入语句后自动删除 只有临时表 #PAYOUT_CTE_TMP 导致了问题。
【问题讨论】:
-
我的理解是,CTE 只是被内联到常规 SQL 代码中,并且它只存在于单个语句中。语句结束后,您可以定义另一个具有相同名称的 CTE。这能回答你的问题吗?
标签: sql tsql sql-server-2008-r2 common-table-expression