`

批量插入存储过程

F# 
阅读更多
--insert前判断
CREATE OR REPLACE PROCEDURE TEST
(
    P_HCODE_BEGIN        IN  VARCHAR2,     -- HCODE起始值
    P_HCODE_END          IN  VARCHAR2,     -- HCODE结束值
    P_CREATE_BY          IN  VARCHAR2,     -- 创建者
    P_FLAG               OUT  NUMBER,      -- 处理执行标志 0:失败 1:成功
    P_MSG                OUT  VARCHAR2     -- 处理后的信息
) IS
    V_HCODE_BEGIN         NUMBER(8,0);      -- HCODE起始值
    V_HCODE_END           NUMBER(8,0);      -- HCODE结束值
    V_COUNT               NUMBER;           -- 记录条数
    V_NOTEXIST_COUNT      NUMBER;           -- 不存在的条数
BEGIN
    -- 变量初始化
    P_FLAG := 1;
    P_MSG := '';
    V_NOTEXIST_COUNT := 0;
   
    V_HCODE_BEGIN := TO_NUMBER(P_HCODE_BEGIN);
    V_HCODE_END := TO_NUMBER(P_HCODE_END);
   
    -- 判断起始值是否大于结束值
    IF V_HCODE_BEGIN > V_HCODE_END THEN
        P_FLAG := 0;
        P_MSG := '起始值不能大于结束值';
        RETURN;
    END IF;

    -- 批处理
    FOR I IN V_HCODE_BEGIN..V_HCODE_END LOOP
        -- 判断该HCODE是否已经存在
        SELECT COUNT(HCODE_VALUE) INTO V_COUNT
        FROM TP_CDMA_RESOURCE
        WHERE TO_NUMBER(HCODE_VALUE) = I;
       
        -- 存在的场合,插入该条记录
        IF V_COUNT = 0 THEN
       
            INSERT INTO TP_CDMA_RESOURCE
            (
                ROW_ID,
                HCODE_VALUE,
                CREATE_DATE,
                CREATE_BY,
                LAST_MODIFY_DATE,
                LAST_MODIFY_BY
            ) VALUES (
                F_GET_GLOBALID,
                TO_CHAR(I),
                SYSDATE,
                P_CREATE_BY,
                SYSDATE,
                P_CREATE_BY
            );
           
            -- 不存在数加1
            V_NOTEXIST_COUNT := V_NOTEXIST_COUNT + 1;

        END IF;
    END LOOP;
   
    -- 不存在数为0的场合(即全部存在的场合)
    IF V_NOTEXIST_COUNT = 0 THEN
        P_MSG := '全部已经存在';
    END IF;
   
    -- 提交事务
    COMMIT;
   
EXCEPTION WHEN OTHERS THEN
    -- 异常的场合,回滚事务
    ROLLBACK;
   
    -- 返回异常标志和消息
    P_FLAG := 0;
    P_MSG := SQLERRM;
END TEST;
/
分享到:
评论

相关推荐

    oracle 批量插入存储过程

    oracle 批量插入存储过程,性能非常高!

    oracle 批量插入数据存储过程

    oracle 批量插入数据存储过程。亲测好用。支持 plsql ,toad,等数据库分析软件。主要包括变量的定义,循环及游标的使用等, 亲测好用

    百万数据批量插入存储过程

    mysql 数据库已存储过程插入一千万条测试数据!利用项目即将上限需要,可以完全系统的测试项目性能!里面又完整的文档和各项说明:打开文档就可以实际操作。

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    C++Oracle存储过程批量插入

    本话题主要探讨的是如何在C++程序中使用Oracle数据库进行存储过程的批量插入操作。Oracle存储过程是预编译的SQL语句集合,它可以提高执行效率,减少网络通信,并且能够封装复杂的业务逻辑。 首先,我们需要理解C++...

    mybatispuls3.5使用批量插入

    在业务逻辑代码中,你可以创建一个List来存储待插入的数据,然后调用`insertBatch`方法进行批量插入: ```java @Autowired private UserMapper userMapper; public void batchInsert() { List<User> userList = ...

    oracle数组存储过程批量插入

    在本例中,我们探讨了如何使用数组存储过程进行批量插入和删除。数组在Oracle中的使用通常涉及定义PL/SQL类型,这允许我们创建索引数组以存储特定数据类型。 首先,我们创建一个名为`MSGPAG`的包,其中定义了一个名...

    SQLLITE的批量插入。。。

    5. **优化批量大小**:找到最佳的批量插入大小是个平衡过程。太小则无法充分利用批量操作的优势,太大可能导致内存压力或SQL语句过长。通常需要通过实验确定适合你特定情况的最佳批量大小。 6. **预编译的语句...

    存储过程游标用于批量的插入数据

    ### 存储过程与游标的综合应用:批量插入数据 #### 一、存储过程简介 在数据库管理系统(DBMS)中,存储过程是一种预编译的SQL代码块,它可以接受输入参数并返回输出值,类似于编程语言中的函数或过程。通过创建...

    Mybatis 3+Mysql 实现批量插入

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    C语言实现SQLite的批量插入及性能对比

    本话题聚焦于C语言如何实现SQLite的批量插入以及性能对比,这对于优化数据库操作效率具有深远意义。 首先,让我们详细探讨SQLite的单个插入与批量插入。在C语言中,SQLite提供了SQL接口,通过API函数来执行SQL语句...

    CAD批量插入正射影像

    批量插入ige图像的过程大致如下: 1. 安装插件:首先,你需要运行"abcautocad_rastermanager.exe"这个安装程序,在CAD环境中安装相应的栅格管理工具。确保你的CAD版本与插件兼容,并遵循安装向导的指示进行操作。 ...

    Delphi批量插入数据库数据..rar

    3. **使用批处理或存储过程**:在某些数据库系统中,如SQL Server,可以创建存储过程来批量处理数据,然后在Delphi中调用这个存储过程。 4. **使用BDE**:对于较旧的项目,可能会使用BDE。通过TTable或TQuery组件,...

    用SQL批量插入数据的存储过程

    循环插入: 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY ‘000:00:10’ /*延迟时间10秒*/ INSERT INTO time_by_day (time_...

    oracle数组存储过程批量插入.pdf

    Oracle 数组存储过程批量插入 本文主要讲解了如何使用 Oracle 数组存储过程来实现批量插入功能。通过创建一个存储过程,使用数组作为参数来传递大量数据,然后在存储过程中进行批量插入操作。 首先,需要创建一个...

    C# 批量插入数据方式

    - **Database.SqlQuery()**: 可以直接执行SQL语句,包括批量插入的存储过程,但这不适用于频繁的数据库操作。 3. **性能优化**: - **事务管理**: 批量插入通常涉及事务,确保所有插入操作要么全部成功,要么全部...

    C#实现批量插入sqlserver数据

    在C#编程中,批量插入数据到SQL Server数据库是一个常见的需求,特别是在处理大量数据时,效率至关重要。本篇文章将详细探讨三种不同的批量插入方法:常规的`INSERT`语句、`SqlBulkCopy`类以及使用表值参数。我们将...

    C#大数据批量插入Access程序

    本程序" C#大数据批量插入Access程序 "就是针对这种需求而设计的,它允许开发者高效地将大量数据导入到Access数据库中。 Access数据库虽然在处理大规模数据时可能不如SQL Server等大型数据库系统强大,但在某些场景...

    .Net中批量插入的几种实现方法

    最后,表值参数是另一种批量插入的方法,尤其在存储过程或函数中使用。表值参数允许你一次性传递多个参数值,就像一个临时表一样。这在.NET中可以通过定义结构类型并将其作为参数传递给数据库调用。虽然表值参数在...

    c# 对sqlite基本操作,带批量插入(百万级秒插)

    1. **预热数据库**:在开始批量插入之前,先创建表结构和索引,避免插入过程中自动创建。 2. **禁用约束检查**:在批量插入期间,可以暂时禁用外键和唯一性约束,以减少验证时间。插入完成后,记得重新启用。 3. **...

Global site tag (gtag.js) - Google Analytics