ImG*_*reg 5 sql-server sql-server-2005 common-table-expression
我正在处理一个存储过程,它涉及基于存储过程中先前查询的delete和insert子句.
我从一个WITH语句开始,将一些复杂的查询构建到一个简单的CTE中,以便在delete和insert语句中使用.
但是,我似乎无法在CTE之后同时运行insert和delete语句.
示例代码:
WITH temp AS (SELECT id, name FROM myDBTable)
DELETE FROM thisTable WHERE .....(based on "temp")
INSERT INTO otherTable (id, name) FROM (based on "temp")
Run Code Online (Sandbox Code Playgroud)
根据MSDN:
"CTE必须后跟一个引用部分或全部CTE列的SELECT,INSERT,UPDATE,MERGE或DELETE语句.还可以在CREATE VIEW语句中指定CTE作为视图定义SELECT语句的一部分".
它说是"单一"......陈述.我无法进行多次选择/删除/等等.如果没有,有什么办法吗?
单独两个查询都可以工作,但是您是否可以在单个存储过程中使用该CTE运行?
如果在DELETE和Insert Query上使用相同的条件,则可以尝试此操作
WITH temp AS (SELECT id, name FROM myDBTable)
DELETE FROM thisTable
OUTPUT deleted.id, deleted.name into otherTable
WHERE .....(based on "temp")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5560 次 |
| 最近记录: |