Oracle实现同表更新或插入的三种方案

 更新时间:2023年11月15日 08:35:38   作者:xyy123  
这篇文章主要给大家介绍了Oracle实现同表更新或插入的三种方案,文章通过代码示例和图文结合讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

一、需求

现在有一张count表,存在两个字段name和count,分别记录输入的名称以及出现的次数

要求输入的名称若在表中未存在,则新增,并初始化count的值为1

若在表中已经存在,则将count值加一

二、实现

2.1 方案一

在处理前统计name出现的次数,若大于一,则修改,否则为新增

2.2 方案二

根据上面的逻辑,使用plsql实现

DECLARE
  v_count NUMBER;
  v_name char(20);
BEGIN
  v_name:='a';  

  SELECT COUNT(*)
  INTO v_count
  FROM (SELECT name, COUNT(*) as count
        FROM count
        GROUP BY name)
  WHERE name = v_name;
  
  IF v_count >= 1 THEN
    UPDATE count
    SET count = count + 1
    WHERE name = v_name;
  ELSE
    INSERT INTO count values(v_name,1);
  END IF;
END;

更新:此时往表中插入一条已经存在的name a,只需修改v_name 的值为'a'

新增:此时往表中插入一条不存在的name c,修改v_name 的值为'c'

2.3 方案三

根据上面的逻辑,使用merge into实现

merge into count c1
using ( select count(*) count from count c2 where c2.name = 'a' ) c3
on (c3.count > 0)
when matched then
    update set c1.count = c1.count + 1 where c1.name = 'a'
when not matched then
    insert values('a',1) ;

现在清空数据表,新增一行数据a

再次点击执行,则执行修改逻辑

到此这篇关于Oracle实现同表更新或插入的方案总结的文章就介绍到这了,更多相关Oracle同表更新或插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ORACLE中关于表的一些特殊查询语句

    ORACLE中关于表的一些特殊查询语句

    这篇文章主要介绍了ORACLE中关于表的一些特殊查询语句通过多种方式给大家介绍,在文末给大家提到了oracle的单表查询语句,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • DBA 在Linux下安装Oracle Database11g数据库图文教程

    DBA 在Linux下安装Oracle Database11g数据库图文教程

    正在学习Oracle DBA的知识,所以安装oracle 11个的数据库用以做测试,如Clone, RMAN, Stream等
    2014-08-08
  • Oracle查看表结构的几种方法示例代码

    Oracle查看表结构的几种方法示例代码

    本文通过示例代码给大家介绍了oracle查看表结构的几种方式,感兴趣的朋友参考下吧
    2017-07-07
  • Oracle分页查询性能优化代码详解

    Oracle分页查询性能优化代码详解

    这篇文章主要介绍了Oracle分页查询性能优化代码详解,简述了进行分页查询性能优化的原因,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Oracle中XML插入数据时的空格问题解决方案

    Oracle中XML插入数据时的空格问题解决方案

    在使用 foreach 或其他循环结构时,插入数据库的数据前后可能会出现不必要的空格,这种额外的空格可能会导致数据不一致,影响查询结果,甚至导致应用程序的错误,本文将为您提供一些常见的解决方法和建议,需要的朋友参考下吧
    2023-08-08
  • Excel VBA连接并操作Oracle

    Excel VBA连接并操作Oracle

    Excel通过ADO方式连接到Oracle并操作Oracle给我们这些编程能力不强的人带来很大的福音,结合着Excel的数据处理与图表制作,就能很轻松地处理一些常规工作。
    2009-08-08
  • Navicat Premium连接Oracle数据库的2种方式

    Navicat Premium连接Oracle数据库的2种方式

    这篇文章主要给大家介绍了关于Navicat Premium连接Oracle数据库的2种方式,大家要使用Navicat Premium连接Oracle数据库,请按照以下步骤操作,需要的朋友可以参考下
    2024-01-01
  • Oracle 中 table 函数的应用浅析

    Oracle 中 table 函数的应用浅析

    表函数可接受查询语句或游标作为输入参数,并可输出多行数据。这篇文章主要介绍了Oracle 中 table 函数的应用浅析,需要的朋友可以参考下
    2016-12-12
  • Oracle跨数据库查询并插入实现原理及代码

    Oracle跨数据库查询并插入实现原理及代码

    需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,接下来为你讲解跨数据库查询并插入需要的朋友可以参考下
    2013-03-03
  • 详解Oracle中sqlldr的具体用法

    详解Oracle中sqlldr的具体用法

    这篇文章主要介绍了详解Oracle中sqlldr的用法,SQLLDR可以在极短的时间内加载数量庞大的数据,这是一个非常有用的工具,可用于从多种平面文件格式向Oracle数据库中加载数据,需要的朋友可以参考下
    2023-07-07

最新评论