--返回字符串的第一个WORD,字符串的word以逗号(,)分隔
FUNCTION get_word(p_old_str VARCHAR2, p_new_str OUT VARCHAR2)
RETURN VARCHAR2 IS
v_start NUMBER; --循环控制参数,开始位置
v_end NUMBER; --循环控制参数,截止位置
BEGIN
v_start := 1;
v_end := INSTR(p_old_str, ',', v_start);
IF v_end > 0 THEN
p_new_str := SUBSTR(p_old_str, v_end + 1, LENGTH(p_old_str));
RETURN SUBSTR(p_old_str, v_start, v_end - 1);
ELSE
p_new_str := '';
RETURN p_old_str;
END IF;
END get_word;
------------------------------------------------------------------------
--将传入的字符串,从"|"分割变成","分割
FUNCTION get_adjust_str(p_old_str VARCHAR2) RETURN VARCHAR2 IS
v_return VARCHAR2(10000);
v_values VARCHAR2(10000); --中间缓存的字符串变量
v_adjust_word VARCHAR2(100); --单个单词
v_adjust_values VARCHAR2(10000); --组装的字符串
BEGIN
--赋初值
v_return := '';
v_adjust_values := '';
v_values := p_old_str;
--循环得到调整的字符串
WHILE v_values IS NOT NULL LOOP
v_adjust_word := get_a_word(v_values, v_values);
v_adjust_values := v_adjust_word || ',' || v_adjust_values;
END LOOP;
--将不为空的字符串传出
IF v_adjust_values IS NOT NULL THEN
-- 判断最后是否为逗号
IF SUBSTR(v_adjust_values, LENGTH(v_adjust_values), 1) = ',' THEN
v_adjust_values := SUBSTR(v_adjust_values,
0,
LENGTH(v_adjust_values) - 1);
END IF;
v_return := v_adjust_values;
END IF;
RETURN v_return;
END get_adjust_str;
------------------------------------------------------------------------
--返回字符串的第一个WORD,字符串的word以逗号(|)分隔
FUNCTION get_a_word(p_old_str VARCHAR2, p_new_str OUT VARCHAR2)
RETURN VARCHAR2 IS
v_start NUMBER; --循环控制参数,开始位置
v_end NUMBER; --循环控制参数,截止位置
BEGIN
v_start := 1;
v_end := INSTR(p_old_str, '|', v_start);
IF v_end > 0 THEN
p_new_str := SUBSTR(p_old_str, v_end + 1, LENGTH(p_old_str));
RETURN SUBSTR(p_old_str, v_start, v_end - 1);
ELSE
p_new_str := '';
RETURN p_old_str;
END IF;
END get_a_word;