Como eliminos registros

tema enviado por juano en SQL
tema iniciado el 27/07/2006

Ne cesito borrar registros duplicados en una tabla con PlSQL

Realise esto:

declare
   cursor curdet is
      select max(rowid) id,TDO_CODIGOI,DOC_ANODOCI,DOC_NRODOCI,ITE_SECCIAI,
      USU_NUMRUT,PAI_CODIGO,ARA_CODIGO,DOC_FECING,VEH_CODIGO,VEH_CODIG1,
      ITE_MARCA,ITE_ANO,ITE_MOTOR,ITE_CHASSI,ITE_VALCIF,TDO_CODIGO,DOC_ANODOC,
      DOC_NRODOC,ITE_SECCIA,DOC_DESTIN,DOC_FECACT,ITE_VALVTA
      from estad004
      group by TDO_CODIGOI,DOC_ANODOCI,DOC_NRODOCI,ITE_SECCIAI,
      USU_NUMRUT,PAI_CODIGO,ARA_CODIGO,DOC_FECING,VEH_CODIGO,VEH_CODIG1,
      ITE_MARCA,ITE_ANO,ITE_MOTOR,ITE_CHASSI,ITE_VALCIF,TDO_CODIGO,DOC_ANODOC,
      DOC_NRODOC,ITE_SECCIA,DOC_DESTIN,DOC_FECACT,ITE_VALVTA
      having count(*) > 1;
begin
   for reg in curDet loop
      delete from estad004 where rowid <> reg.id;
   end loop;
   commit;
exception when others then
   rollback;
   raise_application_error (-2000, SQLErrM );
end;

me da este error

ERROR en línea 1:
ORA-21000: error number argument to raise_application_error of -2000 is
out of range, must be
between -20000 and -20999, inclusive
ORA-06512: at line 20