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�
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).
si tiene APEX instalado, la función APEX_UTIL.string_to_table
hace precisamente eso.
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 ...