代码之家  ›  专栏  ›  技术社区  ›  dacracot

PL/SQL是否具有与Java的等价的StrtotoKerter?

  •  4
  • dacracot  · 技术社区  · 15 年前

    我使用JavaUTI.StruttoKeNever用于Java中分隔字符串的简单解析。我需要在pl/sql中使用相同类型的机制。我可以写,但如果它已经存在,我更愿意用它。有人知道pl/sql实现吗?一些有用的选择?

    4 回复  |  直到 14 年前
        1
  •  4
  •   PaulJ    15 年前

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

    或者看看这个问汤姆链接的其他想法…

    Ak Tom - "varying elements in IN list"

        2
  •  3
  •   Vincent Malgrat    15 年前

    如果安装了Apex,则 APEX_UTIL.string_to_table 就是这样。

        3
  •  2
  •   APC    15 年前

    pl/sql没有内置的标记器。但是,用sql或pl/sql构建相对简单。阿德里安·比林顿的网站 has several solutions . 此外,如果您使用10G,您可以使用 this code from Tanel Poder ,它使用regex在sql中执行此操作。

    诚然,如果甲骨文将dang功能作为其内置功能之一,这将更加容易。

        4
  •  0
  •   tuinstoel    15 年前

    另一种方法是编写一个Java存储的进程(在数据库中有一个JVM),这意味着你可以使用JavaUTI.StrugtoKeNeisher。必须在一个PL/SQL过程/函数中封装一个Java存储的进程。

    例如: http://forums.oracle.com/forums/thread.jspa?messageID=2575374&#2575374

    遗憾的是,我不理解Java的检查异常,所以异常处理不是很好(我不是Java DEV)。