获取字符串,按分隔符拆分并插入到 Oracle 中的 table 过程

Get String, Split By delimiter and inset to table Procedure in Oracle

我有 名字 table , z_names_seq 自动生成序列 IDs(在 names table 中)和触发器 z_names_on_insert 使用z_names_seq 用于生成 ID.

--创建名称Table

CREATE TABLE z_names (ID number,
                      NAME VARCHAR2(200))

--名称顺序 Table

CREATE SEQUENCE z_names_seq
    MINVALUE 1
    START WITH 1
    INCREMENT BY 1;

--名称中的 ID 触发 Table

create or replace TRIGGER z_names_on_insert
    BEFORE INSERT ON z_names
    FOR EACH ROW
BEGIN
    SELECT z_names_seq.nextval
    INTO :new.ID
    FROM dual;
END;

问题是什么:

编写获取字符串值的程序,用分隔符分隔插入到z_names table(ID来自触发器和NAME 来自用逗号分隔的输入字符串 ( , )).

输入输出示例:

输入:john, jim, jack

输出:

ID 姓名
1 约翰
2 吉姆
3 杰克

将字符串拆分成行。这是一个显示如何执行此操作的选项。 INSERT 不包含 ID 列,因为它由触发器填充。

SQL> create or replace procedure p_ins (par_string in varchar2) is
  2  begin
  3    insert into z_names (name)
  4      select trim(regexp_substr(par_string, '[^,]+', 1, level))
  5        from dual
  6        connect by level <= regexp_count(par_string, ',') + 1;
  7  end;
  8  /

Procedure created.

SQL> exec p_ins('john,jim,jack');

PL/SQL procedure successfully completed.

SQL> select * From z_names;

        ID NAME
---------- --------------------
         1 john
         2 jim
         3 jack

SQL>