我正在处理一个存储过程,该过程涉及基于存储过程中先前查询的删除和插入子句。
我从 WITH 语句开始,将一些复杂的查询构建到一个简单的 CTE 中,以便在 delete 和 insert 语句中使用。
但是,我似乎无法在 CTE 之后同时运行插入和删除语句。
示例示例代码:
WITH temp AS (SELECT id, name FROM myDBTable)
DELETE FROM thisTable WHERE .....(based on "temp")
INSERT INTO otherTable (id, name) FROM (based on "temp")
根据MSDN:
“CTE 后面必须跟一个引用部分或全部 CTE 列的 SELECT、INSERT、UPDATE、MERGE 或 DELETE 语句。CTE 也可以在 CREATE VIEW 语句中指定为视图的定义 SELECT 语句的一部分。”
它说一个“单一的”..statement。我不能做多个选择/删除/等吗?如果没有,有没有办法解决这个问题?
两个查询单独工作,但您可以在单个存储过程中使用该 CTE 运行吗?