oracle 数据库用函数拆分字符串
2015-12-16 18:07
429 查看
首先在types那里定义T_VARRAY的表类型
CREATE OR REPLACE TYPE "T_VARRAY"
IS
TABLE OF VARCHAR2(200)
定义函数 STR_SPLIT,P_LIST为要拆分的字符串aa,bb,cc 。P_SEP 为拆分的字符,
CREATE OR REPLACE FUNCTION STR_SPLIT(
P_LIST IN VARCHAR2,P_SEP IN VARCHAR2
) RETURN T_VARRAY
IS
L_IDX number;
V_LIST VARCHAR2(250) := P_LIST;
RES VARCHAR2(250);
J NUMBER(4):=1;
CSTR T_VARRAY := T_VARRAY(); --声明集合
BEGIN
LOOP
L_IDX := INSTR(V_LIST, P_SEP);
IF L_IDX > 0 THEN
RES := SUBSTR(V_LIST, 1, L_IDX - 1);
CSTR.EXTEND(1);
CSTR(J) := RES;
V_LIST := SUBSTR(V_LIST, L_IDX + LENGTH(P_SEP));
ELSE
RES := V_LIST;
CSTR.EXTEND(1);
CSTR(J) := RES;
EXIT;
END IF;
J :=J+1;
END LOOP;
RETURN CSTR;
END STR_SPLIT;
测试
declare
-- Non-scalar parameters require additional processing
result T_VARRAY;
begin
-- Call the function
result := STR_SPLIT(P_LIST => :P_LIST,
P_SEP => :P_SEP);
for j in 1..result.count loop
dbms_output.put_line(j||'='||result(j));
end loop;
end;
CREATE OR REPLACE TYPE "T_VARRAY"
IS
TABLE OF VARCHAR2(200)
定义函数 STR_SPLIT,P_LIST为要拆分的字符串aa,bb,cc 。P_SEP 为拆分的字符,
CREATE OR REPLACE FUNCTION STR_SPLIT(
P_LIST IN VARCHAR2,P_SEP IN VARCHAR2
) RETURN T_VARRAY
IS
L_IDX number;
V_LIST VARCHAR2(250) := P_LIST;
RES VARCHAR2(250);
J NUMBER(4):=1;
CSTR T_VARRAY := T_VARRAY(); --声明集合
BEGIN
LOOP
L_IDX := INSTR(V_LIST, P_SEP);
IF L_IDX > 0 THEN
RES := SUBSTR(V_LIST, 1, L_IDX - 1);
CSTR.EXTEND(1);
CSTR(J) := RES;
V_LIST := SUBSTR(V_LIST, L_IDX + LENGTH(P_SEP));
ELSE
RES := V_LIST;
CSTR.EXTEND(1);
CSTR(J) := RES;
EXIT;
END IF;
J :=J+1;
END LOOP;
RETURN CSTR;
END STR_SPLIT;
测试
declare
-- Non-scalar parameters require additional processing
result T_VARRAY;
begin
-- Call the function
result := STR_SPLIT(P_LIST => :P_LIST,
P_SEP => :P_SEP);
for j in 1..result.count loop
dbms_output.put_line(j||'='||result(j));
end loop;
end;
相关文章推荐
- 数据库oracle-模块管理
- Oracle EBS 寄售业务总结
- 数据库oracle-模块ExtProc或PLSExtProc介绍
- oracle11G使用DGbroker创建dg
- oracle profile介绍
- oracle ASM 初装
- 数据库oracle 服务管理
- 老李分享: Oracle Performance Tuning Overview 翻译 2
- 老李分享: Oracle Performance Tuning Overview 翻译
- oracle内置函数 NVL (expr1, expr2),NVL2 (expr1, expr2, expr3)
- Oracle 树操作(select…start with…connect by…prior)
- oracle中提高order by的性能
- R学习笔记之<访问远程Oracle数据库>
- Oracle EBS环境下查找数据源(OAF篇)
- oracle表数据误删恢复
- oracle中方案的概念以及方案与数据库的关系
- 第一章 在Centos7.1上安装oracle11gR2-静默安装
- 查看ORACLE
- oracle 返回多条及多条子对象的记录
- 第一章 在Centos7.1上安装oracle11gR2-图形化安装