oracle 存储过程中分割字符串
我写了一个存储过程用于分割一个字符串,用'.'分开,希望得到每个子串的值,也就是'.'之间的内容.但是有问题.大家帮我看看哦.
CREATE OR REPLACE PROCEDURE pro_componentmodify (p_string IN VARCHAR2,p_string_size IN NUMBER)
IS
p_start NUMBER := 1; --开始的指针,这个为依次增加的
p_find NUMBER := 1; --找到.的开始的字符位置
p_getnum NUMBER := 0; --需要获得的子串的长度
p_num NUMBER := p_string_size; --得到字符串的总长度
flag VARCHAR2 := '.'; --分割符
substring VARCHAR2; --用于存储的子串
BEGIN
UPDATE MS_COMPONENTCONF --先把所有的设置为'0'
SET PROPVALUE = '0'
WHILE(p_start <= p_num) LOOP --如果得到的字符不为'.'
IF ((SUBSTR(p_string,p_start,1) = flag) or (p_start = p_num))
THEN
substring := SUBSTR(p_string,p_find,p_getnum); --得到子串
UPDATE MS_COMPONENTCONF --先把子串的设置为'1'
SET PROPVALUE = '1'
WHERE COMPONENTNAME = substring;
p_find := p_start + 1;
END IF;
p_start := p_start + 1;
p_getnum := p_getnum + 1;
END LOOP;
END pro_componentmodify;