一个删除表中重复记录的问题

dl_love 2007-04-17 12:35:51
declare
cursor discursor is select no from angle.test;
cursorno angle.test.no%type;
tempno angle.test.no%type:=0;
flag number(1):=0;
begin
for cursorno in discursor
loop
if (tempno=cursorno.no and flag>0) then
delete from angle.test where no=cursorno;
else
tempno:=cursorno;
end if;
flag:=flag+1;
end loop;
end;
/
上边是小弟我写的一个从表angle.test中删除重复记录的程序,但是编译时出现如下错误,哪位大侠指点一下啊!

ERROR 位于第 10 行:
ORA-06550: 第 10 行, 第 35 列
PLS-00382: 表达式类型错误
ORA-06550: 第 12 行, 第 11 列
PLS-00382: 表达式类型错误
ORA-06550: 第 12 行, 第 3 列
PL/SQL: Statement ignored
...全文
524 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YBZYCM 2007-04-17
  • 打赏
  • 举报
回复
正确
Andy__Huang 2007-04-17
  • 打赏
  • 举报
回复
重复的记录全部删除,一楼正确

重复的记录保留一条,二楼正确
kind01 2007-04-17
  • 打赏
  • 举报
回复
没有这么复杂的,直接用下面语句好了:
Delete from table1 a where rowid!=
(
select max(rowid) from table1 b on a.col1=b.col1
)
IhaveGotYou 2007-04-17
  • 打赏
  • 举报
回复
不用那么复杂吧.

delete from angle.test where no in(select no from angle.test group by no having count(no)>=2)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧