我想删除我最近添加的一些记录,从这个表mytemp,请告诉我这个查询有什么问题, 已使用游标
填充所选列中的数据DELETE FROM (SELECT ROWNUM RM, S from mytemp) where rm > 20;
错误是:
ORA-01732:此视图上的数据操作操作不合法
答案 0 :(得分:2)
编辑准确性......
以下是您收到的错误说明:
http://ora-01732.ora-code.com/
尝试在a上使用UPDATE,INSERT或DELETE语句 包含表达式或函数或源自更多的视图 比一张桌子。如果使用连接操作来创建视图或 view包含从函数或表达式派生的虚拟列, 那么只能查询视图。
因此,只要它不连接多个表或使用虚拟列,看起来可以替换表的可更新视图。在您的情况下,问题是虚拟ROWNUM列。
答案 1 :(得分:1)
这是rownum>20
声明。
ROWNUM> x,其中大于正整数的x值始终为false。
select * from ANYTABLE where rownum>(ANY POSITIVE INTEGER)
不会返回任何记录。
为获取的第一行分配ROWNUM为1并使条件为false。要获取的第二行现在是第一行,并且还指定了ROWNUM为1并使条件为false。所有行随后都不满足条件,因此不返回任何行。
检查 THIS 以获取更多信息。
您可以执行以下操作:
delete from (select amount from TABLE t where t.amount=1000)
但与
相同delete from TABLE where amount=1000