`
SpringLin
  • 浏览: 140094 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

[Oracle] 字符串解析生成关联数据

阅读更多
由于项目功能有时候需从其他部门提供的Excel... 等其他文档中,往数据库表不间断的塞入一些数据, 所以就写了个简单的解析 过程 避免重复工作;
整理出来分享下


CREATE OR REPLACE PROCEDURE PRO_STR_ANALYZING_INSERT_DATA(
                            DATA_NAMES VARCHAR2,
                            DATA_NUMBERS VARCHAR2,
                            REAMK VARCHAR2 DEFAULT 'PRO_CREATE') AS

 -- 组编码
 NEW_GROUP_CODE VARCHAR2(20);
 
 --类型
 TYPE VAR20 IS TABLE OF VARCHAR2(20);
 --DATA(字符串过长时,需扩大字节数)
 CNAME VARCHAR2(1024);
 CNUMBER VARCHAR2(1024);
 
 --初始化
 NAMES VAR20 := VAR20();
 NUMBERS VAR20 := VAR20();
 
 I INTEGER DEFAULT 0;
 DATA_LEN INTEGER DEFAULT 0;
BEGIN

   -- DATA format
   /*CNAME := ',王佳冰,刘玉龙,王建华,';
   CNUMBER := ',15895985619
              ,15951902106
              ,18951853833
              ,';*/
              
   CNAME := REPLACE(REPLACE(DATA_NAMES,CHR(10),''), ' ', '');
   CNUMBER := REPLACE(REPLACE(DATA_NUMBERS,CHR(10),''), ' ', '');
           
   --数据分割后个数
   DATA_LEN := LENGTHB(REGEXP_REPLACE(CNUMBER, '[^,]+', ''));
   
   --插入关联主表数据
   NEW_GROUP_CODE := TEST_TABLE1_SEQ.NEXTVAL;
   INSERT INTO TEST_TABLE_1(ID, CODE) VALUES(GID, NEW_GROUP_CODE);
       
   --解析生成联系人信息
   IF DATA_LEN < 1 THEN
      ROLLBACK;
      RETURN;
   END IF;
   LOOP
       I := I+1;
       EXIT WHEN I > DATA_LEN;
       --增加集合长度
       NAMES.EXTEND;
       NUMBERS.EXTEND;
       
       --SUBSTR开始位置截取对应个数字符, REPLACE 替换空格
       NAMES(I) := SUBSTR(CNAME,INSTR(CNAME,',',1,I)+1,(INSTR(CNAME,',',1,I+1)-2) - (INSTR(CNAME,',',1,I)+1));
                         
       NUMBERS(I) := SUBSTR(CNUMBER,INSTR(CNUMBER,',',1,I)+1,
                                    (INSTR(CNUMBER,',',1,I+1)-2) - INSTR(CNUMBER,',',1,I)+1);
                   
       --关联表
       INSERT INTO TEST_TABLE_GROUP(ID,TEST_TABLE1_ID
                                    contact_name,mobile_number)
       VALUES (SYS_GUID(),NEW_GROUP_CODE
               NAMES(I), NUMBERS(I));
        
   END LOOP; 
   COMMIT;
END;
分享到:
评论

相关推荐

    Oracle 生成实体类.rar

    1. 连接Oracle数据库:首先需要配置数据库连接字符串,确保能成功连接到Oracle服务器。 2. 获取表信息:查询数据库中的表和视图信息,包括字段名、字段类型、主键等。 3. 设计实体类模板:定义实体类的基本结构,...

    Oracle三种集合数据类型的比较

    例如,你可以定义一个VARRAY类型,存储最多10个字符串。VARRAY的优势在于它占用的空间相对紧凑,因为所有元素都存储在同一块内存中,访问速度快。但缺点是当需要存储的元素数量超过预设限制时,无法添加新的元素。 ...

    oracle,echarts,json包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用org.json或com.google.gson等库来处理JSON对象,将它们序列化为字符串,...

    Oracle 12C JSON实战.pdf

    它是一种基于文本的数据交换格式,简单易用,易于人类阅读和编写,同时也易于机器解析和生成。JSON的结构基于键值对,由键值对构成,值可以是字符串、数字、布尔值、数组、对象等类型。 二、JSON在Oracle 12C中的...

    Oracle Table Form Trigger

    一个表格由多个列(Columns)组成,每个列都有特定的数据类型,如VARCHAR2(字符串)、NUMBER(数字)、DATE(日期)等。表格也有行(Rows),用来存储具体的实例数据。在设计表格时,我们需要定义主键(Primary Key...

    Java 数据挖掘-关联分析程序

    4. **字符串文本文件处理**:程序中的数据以字母表示商品,每行代表一次交易。这要求程序具备解析文本文件并理解这些编码的能力。数据预处理是关键步骤,包括清洗、转换和加载数据到内存或数据库。 5. **数据库操作...

    导入Excel表格插入Oracle数据库

    - **数据验证和清洗**:后端在插入数据库之前,应验证数据的完整性和格式,例如检查数字、日期格式是否正确,字符串是否符合长度限制等。 - **数据库操作**:使用Oracle的JDBC驱动(Java)或ODP.NET(.NET)连接...

    oracle命令

    - **字符串拼接**:在Oracle中使用双竖线(`||`)进行字符串拼接。 #### 四、条件表达式 - **DECODE函数**:类似于CASE WHEN语句,用于根据条件返回不同值。 - **CASE WHEN语句**: - 使用CASE字段WHEN...THEN......

    oracle 学习笔记

    7. 文字字符串用于表示文本数据。 8. 使用DISTINCT关键字可以消除查询结果中的重复行。 9. Select语句中还应注意其他一些细节,如数据类型匹配和表达式优化等。 三、SQL语句的处理过程 1. SQL语句在执行前要经历一...

    oracle基础知识.docx

    - `VARCHAR2(n)`:Oracle特有的变长字符串类型,与`VARCHAR`类似,但更节省空间。 - `DATE`:日期类型,固定7个字节,用于存储日期和时间。 2. **SQL基本命令**: - **DDL(数据定义语言)**:创建、修改和删除...

    Oracle数据库、SQL

    Oracle数据库和SQL是数据库管理和数据查询的核心工具。Oracle是一种关系型数据库管理系统(RDBMS),由Oracle公司开发,广泛应用于企业级数据管理。SQL(Structured Query Language)是用于操作数据库的标准语言,...

    Oracle报表经典语句

    - **LIKE 运算符**:用于模糊匹配字符串,这里的`C%杂项出入库报表%`表示以`C`开头并且包含“杂项出入库报表”的字符串。 - **视图**:使用视图`FND_CONCURRENT_PROGRAMS_VL`和`FND_EXECUTABLES_VL`来简化查询操作。...

    oracle开发面试题经典.pdf

    在Oracle中,日期格式化和字符串连接操作是常见的需求。例如,`to_char(s.S_BIRTHDAY,'yyyy')='1980'`语句用于筛选出生年份为1980的数据。而`nvl(s.s_sex,1)`函数用于将null值替换为1,常用于处理可能存在的空值,...

    oracle查询成树状

    - **利用`SYS_CONNECT_BY_PATH`函数**:可以生成路径字符串,常用于展示完整路径信息,例如`SELECT SYS_CONNECT_BY_PATH(name, '/') AS path`。 ### 总结 通过结合`START WITH`和`CONNECT BY`子句,Oracle数据库...

    Oracle 中XML处理函数介绍

    在Oracle数据库中,XML处理是处理结构化数据的重要部分,特别是在需要存储和操作XML格式的数据时。以下是对Oracle中XML处理函数的详细说明: 1. **EXTRACT (XMLType_instance, XPath_string)**:此函数通过XPath...

    从Excel中读取数据导入到数据库中

    如果数据列包含超过这个限制的字符串,我们可以采取以下策略: 1. **转换数据类型**:在Excel中,将列的数据类型改为“文本”可以暂时解决,但这并不适用于所有情况,尤其是当数据需要导入数据库时。 2. **拆分数据...

    Unix环境卸载Oracle表结构文本中的脚本

    - `dbschema.sh userid/passwd[@connection][table_name]` - 这里的`userid/passwd`是Oracle数据库的用户名和密码,`@connection`(可选)可以是连接字符串,`table_name`(可选)指定要卸载的特定表。 例如: - `...

Global site tag (gtag.js) - Google Analytics