|
CREATE OR REPLACE FUNCTION test_table (
a_char IN VARCHAR2,
a_delimiter IN VARCHAR2
)
RETURN test_table PIPELINED
-------------------------------------------------
/*
varsion 1.0
description : 字符串轉成table
*/
-------------------------------------------------
IS
v_char VARCHAR2 (32767) := REPLACE (UPPER (a_char), '''', '');
v_length NUMBER;
v_variant VARCHAR2 (1000);
BEGIN
v_length := LENGTH (v_char);
--dbms_output.put_line(to_char(v_length));
IF v_length IS NOT NULL
THEN
FOR i IN 1 .. v_length
LOOP
--dbms_output.put_line(to_char(i));
IF SUBSTR (v_char, i, 1) = UPPER (a_delimiter)
THEN
PIPE ROW (test_format (v_variant));
v_variant := '';
ELSIF i = v_length
THEN
v_variant := v_variant || SUBSTR (v_char, i, 1);
PIPE ROW (test_format (v_variant));
ELSE
v_variant := v_variant || SUBSTR (v_char, i, 1);
END IF;
--pipe row(i);
END LOOP;
ELSE
PIPE ROW (test_format (''));
END IF;
RETURN;
END;
[ 本帖最后由 wanhualeng 于 2009-7-23 10:25 编辑 ] |
|