{"id":109,"date":"2010-02-12T14:27:34","date_gmt":"2010-02-12T21:27:34","guid":{"rendered":"http:\/\/journeyman.ivystreetinc.com\/?p=109"},"modified":"2010-02-12T14:27:34","modified_gmt":"2010-02-12T21:27:34","slug":"a-simple-plsql-tokenizer","status":"publish","type":"post","link":"http:\/\/10kdev.net\/?p=109","title":{"rendered":"A Simple PL\/SQL Tokenizer"},"content":{"rendered":"<p>DECLARE<br \/>&nbsp;&nbsp; tokenString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2 (256) := &#8216;Jim,Jerry,Jordan&#8217;;<br \/>&nbsp;&nbsp; tokenLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER := 0;<br \/>&nbsp;&nbsp; tokenDelimiter&nbsp;&nbsp; VARCHAR2 (1) := &#8216;,&#8217;;<br \/>&nbsp;&nbsp; tokenChar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2 (1) := &#8221;;<br \/>&nbsp;&nbsp; tokenIzed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR (30) := &#8221;;<br \/>BEGIN<br \/>&nbsp;&nbsp; SELECT LENGTH (tokenString) INTO tokenLength FROM DUAL;<\/p>\n<p>&nbsp;&nbsp; FOR i IN 1 .. tokenLength<br \/>&nbsp;&nbsp; LOOP<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT SUBSTR (tokenString, i, 1) INTO tokenChar FROM DUAL;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF tokenChar = tokenDelimiter OR i = tokenLength<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF i = tokenLength<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tokenIzed := tokenIzed || tokenChar;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8211;&gt; DO YOUR INTERESTING STUFF HERE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.PUT_LINE (tokenIzed);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tokenIzed := &#8221;;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tokenIzed := tokenIzed || tokenChar;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF;<br \/>&nbsp;&nbsp; END LOOP;<br \/>END;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DECLARE&nbsp;&nbsp; tokenString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2 (256) := &#8216;Jim,Jerry,Jordan&#8217;;&nbsp;&nbsp; tokenLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER := 0;&nbsp;&nbsp; tokenDelimiter&nbsp;&nbsp; VARCHAR2 (1) := &#8216;,&#8217;;&nbsp;&nbsp; tokenChar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2 (1) := &#8221;;&nbsp;&nbsp; tokenIzed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR (30) := &#8221;;BEGIN&nbsp;&nbsp; SELECT LENGTH (tokenString) INTO tokenLength FROM DUAL; &nbsp;&nbsp; FOR i IN 1 .. tokenLength&nbsp;&nbsp; LOOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT SUBSTR (tokenString, i, 1) INTO tokenChar FROM DUAL; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF tokenChar = tokenDelimiter OR [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[],"_links":{"self":[{"href":"http:\/\/10kdev.net\/index.php?rest_route=\/wp\/v2\/posts\/109"}],"collection":[{"href":"http:\/\/10kdev.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/10kdev.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/10kdev.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/10kdev.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=109"}],"version-history":[{"count":0,"href":"http:\/\/10kdev.net\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions"}],"wp:attachment":[{"href":"http:\/\/10kdev.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/10kdev.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/10kdev.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}