util hasmoretokens sql oracle plsql tokenize stringtokenizer

hasmoretokens - ¿PL/SQL tiene un StringTokenizer equivalente a Java?



stringtokenizer separator (4)

Yo uso java.util.StringTokenizer para un simple análisis de cadenas delimitadas en java. Necesito el mismo tipo de mecanismo en pl / sql. Podría escribirlo, pero si ya existe, preferiría usar eso. Alguien sabe de una implementación pl / sql? Alguna alternativa útil?


PL / SQL no viene con un tokenizador incorporado. Sin embargo, es relativamente simple construir desde SQL o PL / SQL. El sitio web de Adrian Billington tiene varias soluciones . Además, si tiene 10g, puede usar este código de Tanel Poder , que lo hace en SQL usando expresiones regulares.

Es cierto que sería más fácil si Oracle acaba de incluir la instalación de dang como uno de sus integradores.


Una alternativa es escribir un proceso almacenado de Java (hay una JVM dentro de la base de datos), lo que significa que puede usar java.util.StringTokenizer. Debe envolver un proceso almacenado Java dentro de un procedimiento / función PL / SQL.

Se aquí para un ejemplo: http://forums.oracle.com/forums/thread.jspa?messageID=2575374&#2575374

Lamentablemente, no entiendo las excepciones comprobadas de Java, por lo que el manejo de excepciones no es realmente bueno (no soy un desarrollador de Java).



PL / SQL incluye uno básico para listas separadas por comas ( DBMS_UTILITY.COMMA_TO_TABLE ).

Ejemplo:

DECLARE lv_tab_length BINARY_INTEGER; lt_array DBMS_UTILITY.lname_array; BEGIN DBMS_UTILITY.COMMA_TO_TABLE( list => ''one,two,three,four'' , tablen => lv_tab_length , tab => lt_array ); DBMS_OUTPUT.PUT_LINE( ''lv_tab_length = [''||lv_tab_length||'']'' ); FOR i IN 1..lv_tab_length LOOP DBMS_OUTPUT.PUT_LINE( ''[''||lt_array( i )||'']'' ); END LOOP; END; /

O vea este enlace Ask Tom para otras ideas ...

Ak Tom - "variando elementos en la lista IN"