--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 批量插入数据存储过程。亲测好用。支持 plsql ,toad,等数据库分析软件。主要包括变量的定义,循环及游标的使用等, 亲测好用
mysql 数据库已存储过程插入一千万条测试数据!利用项目即将上限需要,可以完全系统的测试项目性能!里面又完整的文档和各项说明:打开文档就可以实际操作。
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
本话题主要探讨的是如何在C++程序中使用Oracle数据库进行存储过程的批量插入操作。Oracle存储过程是预编译的SQL语句集合,它可以提高执行效率,减少网络通信,并且能够封装复杂的业务逻辑。 首先,我们需要理解C++...
在业务逻辑代码中,你可以创建一个List来存储待插入的数据,然后调用`insertBatch`方法进行批量插入: ```java @Autowired private UserMapper userMapper; public void batchInsert() { List<User> userList = ...
在本例中,我们探讨了如何使用数组存储过程进行批量插入和删除。数组在Oracle中的使用通常涉及定义PL/SQL类型,这允许我们创建索引数组以存储特定数据类型。 首先,我们创建一个名为`MSGPAG`的包,其中定义了一个名...
5. **优化批量大小**:找到最佳的批量插入大小是个平衡过程。太小则无法充分利用批量操作的优势,太大可能导致内存压力或SQL语句过长。通常需要通过实验确定适合你特定情况的最佳批量大小。 6. **预编译的语句...
### 存储过程与游标的综合应用:批量插入数据 #### 一、存储过程简介 在数据库管理系统(DBMS)中,存储过程是一种预编译的SQL代码块,它可以接受输入参数并返回输出值,类似于编程语言中的函数或过程。通过创建...
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...
本话题聚焦于C语言如何实现SQLite的批量插入以及性能对比,这对于优化数据库操作效率具有深远意义。 首先,让我们详细探讨SQLite的单个插入与批量插入。在C语言中,SQLite提供了SQL接口,通过API函数来执行SQL语句...
批量插入ige图像的过程大致如下: 1. 安装插件:首先,你需要运行"abcautocad_rastermanager.exe"这个安装程序,在CAD环境中安装相应的栅格管理工具。确保你的CAD版本与插件兼容,并遵循安装向导的指示进行操作。 ...
3. **使用批处理或存储过程**:在某些数据库系统中,如SQL Server,可以创建存储过程来批量处理数据,然后在Delphi中调用这个存储过程。 4. **使用BDE**:对于较旧的项目,可能会使用BDE。通过TTable或TQuery组件,...
循环插入: 代码如下: DECLARE @MyCounter INT SET @MyCounter = 0 /*设置变量*/ WHILE (@MyCounter < 2) /*设置循环次数*/ BEGIN WAITFOR DELAY ‘000:00:10’ /*延迟时间10秒*/ INSERT INTO time_by_day (time_...
Oracle 数组存储过程批量插入 本文主要讲解了如何使用 Oracle 数组存储过程来实现批量插入功能。通过创建一个存储过程,使用数组作为参数来传递大量数据,然后在存储过程中进行批量插入操作。 首先,需要创建一个...
- **Database.SqlQuery()**: 可以直接执行SQL语句,包括批量插入的存储过程,但这不适用于频繁的数据库操作。 3. **性能优化**: - **事务管理**: 批量插入通常涉及事务,确保所有插入操作要么全部成功,要么全部...
在C#编程中,批量插入数据到SQL Server数据库是一个常见的需求,特别是在处理大量数据时,效率至关重要。本篇文章将详细探讨三种不同的批量插入方法:常规的`INSERT`语句、`SqlBulkCopy`类以及使用表值参数。我们将...
本程序" C#大数据批量插入Access程序 "就是针对这种需求而设计的,它允许开发者高效地将大量数据导入到Access数据库中。 Access数据库虽然在处理大规模数据时可能不如SQL Server等大型数据库系统强大,但在某些场景...
最后,表值参数是另一种批量插入的方法,尤其在存储过程或函数中使用。表值参数允许你一次性传递多个参数值,就像一个临时表一样。这在.NET中可以通过定义结构类型并将其作为参数传递给数据库调用。虽然表值参数在...
1. **预热数据库**:在开始批量插入之前,先创建表结构和索引,避免插入过程中自动创建。 2. **禁用约束检查**:在批量插入期间,可以暂时禁用外键和唯一性约束,以减少验证时间。插入完成后,记得重新启用。 3. **...