Oracle 9i에서 테스한 예젭니디...
-- The pl/sql Oracle version for the Tokenizer procedure Create or Replace procedure tokenizer ( iStart IN NUMBER, sPattern in VARCHAR2, sBuffer in VARCHAR2, sResult OUT VARCHAR2, iNextPos OUT NUMBER) AS nPos1 number; nPos2 number; BEGIN nPos1 := Instr (sBuffer ,sPattern ,iStart); IF nPos1 = 0 then sResult := NULL ; ELSE nPos2 := Instr (sBuffer ,sPattern ,nPos1 + 1); IF nPos2 = 0 then sResult := Rtrim(Ltrim(Substr(sBuffer ,nPos1+1))); iNextPos := nPos2; else sResult := Substr(sBuffer ,nPos1 + 1 , nPos2 - nPos1 - 1); iNextPos := nPos2; END IF; END IF; END tokenizer ; /
-- a Procedure to Test the Tokenizer Create or Replace procedure sp_test_tokenizer as sepr varchar2(1); sbuf varchar2(200); sres varchar2(200); pos number; istart number; begin
sbuf := '@0@11@222@3333@44444@555555@6666666@77777777@888888888'; sepr := '@'; istart := 1; tokenizer (istart ,sepr,sbuf,sres,pos); if (pos <> 0) then dbms_output.put_line (sres); end if; while (pos <> 0) loop istart := pos; tokenizer (istart ,sepr,sbuf,sres,pos ); dbms_output.put_line (sres); end loop; END sp_test_tokenizer; /
-- Test the Procedure From sqlPlus set serveroutput on exec sp_test_tokenizer;
| |