Есть ли в PL / SQL эквивалент StringTokenizer для Java? - PullRequest
4 голосов
/ 05 октября 2009

Я использую java.util.StringTokenizer для простого анализа строк с разделителями в java. У меня есть потребность в механизме такого же типа в pl / sql. Я мог бы написать это, но если он уже существует, я бы предпочел использовать это. Кто-нибудь знает о реализации pl / sql? Какая-нибудь полезная альтернатива?

Ответы [ 4 ]

4 голосов
/ 06 октября 2009

PL / SQL включает базовый список для разделенных запятыми списков (DBMS_UTILITY.COMMA_TO_TABLE).

Пример:

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;
/

Или посмотрите эту ссылку Спросите Тома для других идей ...

Ак Том - "различные элементы в списке IN"

3 голосов
/ 05 октября 2009

если у вас установлен APEX, функция APEX_UTIL.string_to_table делает именно это.

2 голосов
/ 05 октября 2009

PL / SQL не поставляется со встроенным токенизатором. Тем не менее, его относительно просто построить из SQL или PL / SQL. Веб-сайт Адриана Биллингтона имеет несколько решений . Кроме того, если вы используете 10g, вы можете использовать этот код из Tanel Poder , который делает это в SQL с использованием регулярных выражений.

По общему признанию, было бы проще, если бы Oracle просто включил средство dang в качестве одной из своих встроенных функций.

0 голосов
/ 05 октября 2009

Альтернативой является написание хранимого процесса Java (внутри базы данных есть JVM), это означает, что вы можете использовать java.util.StringTokenizer. Вы должны обернуть хранимый процесс Java внутри процедуры / функции PL / SQL.

Вот пример: http://forums.oracle.com/forums/thread.jspa?messageID=2575374&#2575374

К сожалению, я не понимаю проверенных исключений Java, поэтому обработка исключений не очень хороша (я не Java-разработчик).

...