Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: PL/SQL and parsing a variable for whitespace
Hi,
for parsing problems I wrote a function GetToken() that works like strtok() in the standard C library. You use it like that:
l_pos NUMBER;
l_separators VARCHAR2(2) := ' ,';
LOOP l_token := GetToken(l_string, l_pos, l_separators); IF l_token IS NULL THEN
EXIT;
END IF;
END LOOP;
Hope that helps. Here's the function:
FUNCTION GetToken(p_string VARCHAR2, p_pos IN OUT NUMBER, p_separators VARCHAR2)
RETURN VARCHAR2
IS
l_akt_char VARCHAR2(1); l_len NUMBER; l_result_string VARCHAR2(255) := NULL; l_result_len NUMBER := 0;
BEGIN
IF p_string IS NULL THEN RETURN NULL; END IF; l_len := LENGTH(p_string) - p_pos; IF l_len < 0 THEN RETURN NULL; END IF;
-- Skip separators at beginning of string
LOOP IF p_pos > length(p_string) THEN return NULL; END IF; l_akt_char := SUBSTR(p_string, p_pos, 1); IF INSTR(p_separators, l_akt_char) = 0 THEN EXIT; ELSE p_pos := p_pos + 1; END IF; END LOOP;
-- Find Token
LOOP IF p_pos > length(p_string) THEN RETURN l_result_string; END IF; l_akt_char := SUBSTR(p_string, p_pos, 1); p_pos := p_pos + 1; IF INSTR(p_separators, l_akt_char) = 0 THEN l_result_string := l_result_string || l_akt_char; ELSE RETURN l_result_string; END IF; END LOOP; return NULL;
---Received on Tue Oct 21 1997 - 00:00:00 CDT
![]() |
![]() |