我正在尝试将 WITH 语句和 DELETE 一起使用。但我收到ORA-00928错误。基本上我的代码如下
WITH TO_DELETE
AS
(
SELECT TableKey
FROM SOME_TABLE
WHERE SomeConditions LIKE '%'
)
DELETE FROM TO_DELETE
-- SELECT * FROM TO_DELETE
Run Code Online (Sandbox Code Playgroud)
此代码适用于 SQL Server 2005+,但在 Oracle 中出错。知道如何解决这个问题吗?
存在以下解决方法。
使用以下内部选择结构。
DELETE FROM ( SELECT TableKey FROM SOME_TABLE WHERE SomeConditions LIKE '%' )
我想知道有什么方法可以使用 WITH语句?
Oracle 语法是DELETE FROM (query)
. 查询可以是SELECT
带有子查询分解的:
delete from (
with to_delete as (
select * from a
)
select * from to_delete
);
Run Code Online (Sandbox Code Playgroud)
上面的查询工作在11gR2
,但失败ORA-01732
(不可更新的视图)在一个旧9iR2
。