Oracle 与 Statement 和 Delete 一起使用

Ati*_*gur 3 oracle sql-server

我正在尝试将 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语句?

Vin*_*rat 8

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

  • 删除不止一个?抱歉,我无法编译您的问题。 (4认同)