我在存储过程中执行此操作时遇到错误的Object SubSkillIds错误?任何人都可以告诉我为什么会这样?
我的错误消息如下: -
消息208,级别16,状态1,过程SubSkillDelete,第47行
无效的对象名称'SubSkillIds'.
码:
WITH SubSkillIds (SubSkillId) AS
(
-- Base case
SELECT
SubSkillId
FROM dbo.SubSkill
WHERE RegressionSubSkillId = @SubSkillId
UNION ALL
-- Recursive step
SELECT
S.SubSkillId
FROM dbo.SubSkill S
WHERE S.RegressionSubSkillId IN (
SELECT
SubSkillId
FROM dbo.SubSkill
WHERE RegressionSubSkillId = @SubSkillId)
)
SELECT @SubSkillIdFound = SubSkillId
FROM SubSkill WHERE SubSkillId = @SubSkillId
DELETE FROM SubSkillActivity WHERE SubSkillId = @SubSkillId
DELETE FROM SubSkill WHERE RegressionSubSkillId
IN (SELECT * FROM SubSkillIds)
DELETE FROM SubSkill WHERE SubSkillId = @SubSkillId
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 10
CTE仅适用于下一个声明 - 您的 SELECT......
它在以后不再可用 - 这就是为什么你的第二个DELETE引用CTE的语句将失败的原因.
如果需要为多个单个语句保留CTE的值,则需要将这些值存储到临时表/表变量中.