`
zjny520
  • 浏览: 179223 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle删除重复数据的存储过程

阅读更多

1.oracle删除重复数据的存储过程

(1)CREATE OR REPLACE PROCEDURE DELETE_test

AS

 BEGIN 

    delete from test inck_tem where rowid not in ( 

  select max(inck1.rowid) from test inck1 where  

    inck1.id=inck_tem.id and inck1.name=inck_tem.name);

END DELETE_test; 

(2)----------------------------------------------------

delete from employee where rowid not in ( 

  select max(t1.rowid) from employee t1 group by t1.emp_id,t1.emp_name,t1.salary);--这里用min(rowid)也可以。

(3)---------------------------------------------------------

create table a_dist(id int,name varchar(20))

insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')

exec up_distinct 'a_dist','id'

select * from a_dist

create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))
--f_key表示是分組字段﹐即主鍵字段
as
begin
 declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer
    select @sql = 'declare cur_rows cursor  for select '+@f_key+' ,count(*) from ' +@t_name +'  group by ' +@f_key +'  having count(*) > 1'
    exec(@sql)
 open cur_rows 
 fetch cur_rows into @id,@max 
 while @@fetch_status=0 
 begin 
 select @max = @max -1 
 set rowcount @max 
    select @type = xtype from syscolumns where id=object_id(@t_name)  and name=@f_key
    if @type=56
    select @sql = 'delete from '+@t_name+' where ' + @f_key+'  = '+ @id 
    if @type=167
    select @sql = 'delete from '+@t_name+' where ' + @f_key+'  = '+''''+ @id +'''' 
    exec(@sql)
 fetch cur_rows into @id,@max 
 end 
 close cur_rows 
    deallocate cur_rows
 set rowcount 0
end
分享到:
评论

相关推荐

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

    程序设计,第5~9章分别介绍了Oracle11g的体系结构、表空间与数据文件的管理、启动和关闭数据库、网络服务与管理,第10—13章介绍了有关安全的几个内容(权限、角色、概要文件、用户的管理),第14—17章介绍了几种...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 常见的数据模型 1. 层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS...

    oracle的sql优化

     对于复杂的存储过程可以多次提交的数据的要多分多次Commit,否则长事务对系统性能影响很大  Distinct和Having子句都是耗时操作,应该尽可能少使用  在不需要考虑重复记录合并时候用Union All来代替Union  使用...

    oracle使用管理笔记(一些经验的总结)

    (1)删除重复记录 22 11.oracle合并查询 24 12.oracle连接 25 13.oracle函数 26 (1)字符函数 26 (2)数学函数 26 (3)日期函数 27 (4)给表取别名的时候,不能加as;但是给列取别名,是可以加as 27 (5)转换函数 27 (6) ...

    具有云存储权限的加密文件重复数据删除方案

    加密文件重复数据删除方案(EFD)可以提高其对云存储的存储空间利用率,并保护云存储中文件的隐私。 但是,如果企业将其文件存储到已部署了不支持权限检查的加密文件重复数据删除方案的云存储中,这将破坏企业文件的...

    Oracle 10g 学习笔记

    │ oracle中判断某列是否为数字,删除重复数据的方法 - oracle天堂 - CSDN博客.mht │ oracle体系结构.txt │ oracle学习 - zgh2002007的专栏 - CSDN博客.mht │ Oracle学习笔记(chstone原创).mht │ ORACLE学习...

    ORACLE9i_优化设计与系统调整

    §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §...

    Oracle数据库、SQL

    1.1表是数据库中存储数据的基本单位 1 1.2数据库标准语言 1 1.3数据库(DB) 1 1.4数据库种类 1 1.5数据库中如何定义表 1 1.6 create database dbname的含义 1 1.7安装DBMS 1 1.8宏观上是数据-->database 1 1.9远程...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    最全的oracle常用命令大全.txt

    8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';...

    Oracle数据库实验操作

    实验68:使用utl_file包来将表的数据存储到外部文件 144 实验69:使用外部表 145 实验70:处理挂起的事务 146 索引 149 实验71:查看索引的内部信息 151 实验72:监控索引的使用状态 153 约束的管理 154 实验73:...

    精通sql结构化查询语句

    21.5.3 删除数据的实现 21.6 触发器与存储过程的应用 21.6.1在VB 6.0中应用触发器 21.6.2在VB 6.0中应用存储过程 21.7 小结第22章 VC++6.0与SQL Server的开发与应用 22.1 VC++6.0开发环境 22.1.1 VC++6.0介绍 22.1.2...

    Oracle DBA 参考手册

    10.7.2. 确定Oracle数据库中重复的记录 61 10.7.2.1. 自关联查询方法 61 10.7.2.2. GROUP BY/HAVING查询方法 61 10.7.2.3. Exception into子句 61 11. 备份与恢复 62 11.1. Oracle 归档模式 62 11.2. 备份 62 11.2.1...

    oracle10g课堂练习I(2)

    如何存储表数据 5-4 数据库块的结构 5-5 表空间和数据文件 5-6 Oracle Managed Files (OMF) 5-7 表空间中的空间管理 5-8 浏览存储结构 5-9 创建新表空间 5-10 本地管理表空间的存储 5-12 预配置数据库中的表...

    ORACLE之常用FAQ V1.0(整理)

    [Q]怎么样加密存储过程 7 [Q] 7 [Q] 7 [Q]如果存在就更新,不存在就插入可以用一个语句实现吗 8 [Q]怎么实现左联,右联与外联 9 [Q]怎么实现一条记录根据条件多表插入 10 [Q]如何实现行列转换 11 [Q]怎么样实现分组...

    精通SQL 结构化查询语言详解

    15.5.2 Oracle中存储过程和函数的管理 第16章 SQL触发器  16.1 触发器的基本概念  16.1.1 触发器简介  16.1.2 触发器执行环境 16.2 SQL Server中的触发器  16.2.1 SQL Server触发器的种类  16.2.2 ...

    Oracle数据库设计策略及规范.docx

     概述 本文档根据Oracle数据库性能特点,描述对表、视图、存储过程、对象命名等方面的设计规范。 3. 基本策略 3.1 设计策略 分类拆分数据量大的表。 对于经常使用的表(如某些参数表或代码对照表),由于其使用...

Global site tag (gtag.js) - Google Analytics