获取字符串,按分隔符拆分并插入到 Oracle 中的 table 过程
Get String, Split By delimiter and inset to table Procedure in Oracle
我有 名字 table , z_names_seq 自动生成序列 ID
s(在 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>
我有 名字 table , z_names_seq 自动生成序列 ID
s(在 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>