patternsqlModerate
Oracle With Statement and Delete Together
Viewed 0 times
deletestatementwithtogetherandoracle
Problem
I am trying to use WITH statement and DELETE together. But I get ORA-00928 error.
Basically my code is like following
This code works in SQL Server 2005+ but gives error in Oracle. Any idea how can I solve this problem?
Following workaround exists.
-
use following inner select construct.
DELETE FROM
(
SELECT TableKey
FROM SOME_TABLE
WHERE SomeConditions LIKE '%'
)
What I wish to know is there any way using WITH statement?
Basically my code is like following
WITH TO_DELETE
AS
(
SELECT TableKey
FROM SOME_TABLE
WHERE SomeConditions LIKE '%'
)
DELETE FROM TO_DELETE
-- SELECT * FROM TO_DELETEThis code works in SQL Server 2005+ but gives error in Oracle. Any idea how can I solve this problem?
Following workaround exists.
- use temp table and drop it.
-
use following inner select construct.
DELETE FROM
(
SELECT TableKey
FROM SOME_TABLE
WHERE SomeConditions LIKE '%'
)
What I wish to know is there any way using WITH statement?
Solution
The Oracle syntax is
The above query works in
DELETE FROM (query). The query can be a SELECT with subquery factoring:delete from (
with to_delete as (
select * from a
)
select * from to_delete
);The above query works in
11gR2 but fails with ORA-01732 (non-updateable view) on an old 9iR2.Code Snippets
delete from (
with to_delete as (
select * from a
)
select * from to_delete
);Context
StackExchange Database Administrators Q#24534, answer score: 10
Revisions (0)
No revisions yet.