本人新手。。求大神看看关于过滤分隔符提取字符串的问题,我用数组实现错误好多
题目是:
编写存储过程,实现功能:
1.输入参数:字符串,分隔符,序号
2.输出参数:字符串
3.注:序号可为负数,为负数时从右往左找字符串
例:
输入参数分别为: ab@@cd@@ee@@ff @@ 2 则输出:cd
输入参数分别为: ab@@cd@@ee@@ff @@ -2 则输出:ee
输入参数分别为: ab@@cd@@ee@@ff @@ 4 则输出:ff
我写的代码如下 改了很多次
CREATE OR REPLACE PROCEDURE str_to(input IN VARCHAR2,
separator IN VARCHAR2,
serialno IN INTEGER) IS
v_input VARCHAR2(100) := input;
v_separator VARCHAR2(5) := separator;
v_separatorno INTEGER;
v_serialno INTEGER := serialno;
v_output VARCHAR2(20);
i NUMBER;
strlength INTEGER;
str VARCHAR2(5);
TYPE type_array IS VARRAY(200) OF VARCHAR2(20);
array1 type_array;
array2 type_array;
flag BOOLEAN;
-- num NUMBER;
-- a INTEGER;
BEGIN
array1 := type_array();
array2 := type_array();
strlength := length(v_input);
v_separatorno := length(v_separator);
flag := FALSE;
array2.extend;
IF v_serialno < 0 THEN
BEGIN
v_serialno := -v_serialno;
flag := TRUE;
SELECT REVERSE(v_input) INTO v_input FROM dual;
END;