PL/SQL 是否有与 Java 等效的 StringTokenizer?

发布于 2024-08-06 22:59:08 字数 125 浏览 10 评论 0原文

我使用 java.util.StringTokenizer 来简单解析 java 中的分隔字符串。我需要 pl/sql 中相同类型的机制。我可以写它,但如果它已经存在,我更愿意使用它。有人知道 pl/sql 实现吗?一些有用的替代方案?

I use java.util.StringTokenizer for simple parsing of delimited strings in java. I have a need for the same type of mechanism in pl/sql. I could write it, but if it already exists, I would prefer to use that. Anyone know of a pl/sql implementation? Some useful alternative?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

树深时见影 2024-08-13 22:59:08

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

或者查看此“询问 Tom”链接以获取其他想法...

Ak Tom - “IN 列表中的不同元素”

PL/SQL does include a basic one for comma separated lists (DBMS_UTILITY.COMMA_TO_TABLE).

Example:

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

Or see this Ask Tom link for other ideas...

Ak Tom - "varying elements in IN list"

郁金香雨 2024-08-13 22:59:08

如果您安装了 APEX,则函数 APEX_UTIL.string_to_table 就是这样做的。

if you have APEX installed, the function APEX_UTIL.string_to_table does just that.

月野兔 2024-08-13 22:59:08

PL/SQL 没有内置的分词器。然而,用 SQL 或 PL/SQL 构建相对简单。 Adrian Billington 的网站提供了多种解决方案。此外,如果您使用的是 10g,则可以使用 此代码来自 Tanel Poder,它使用正则表达式在 SQL 中执行此操作。

诚然,如果 Oracle 将 dang 工具作为其内置工具之一包含在内,事情会更容易。

PL/SQL does not come with a built-in tokenizer. However, it is relatively simple to build out of SQL or PL/SQL. Adrian Billington's web site has several solutions. In addition, if you are on 10g, you could use this code from Tanel Poder, which does it in SQL using regex.

Admittedly it would be easier if Oracle just included the dang facility as one of their built-ins.

厌味 2024-08-13 22:59:08

另一种方法是编写一个Java存储过程(数据库内部有一个JVM),这意味着您可以使用java.util.StringTokenizer。您必须将 Java 存储过程包装在 PL/SQL 过程/函数中。

请参阅此处的示例: http://forums.oracle.com /forums/thread.jspa?messageID=2575374�

遗憾的是,我不了解 Java 的检查异常,因此异常处理并不是很好(我不是 Java 开发人员)。

An alternative is to write a Java stored proc (there is a JVM inside the database), that means you can use java.util.StringTokenizer. You have to wrap a Java stored proc inside a PL/SQL procedure/function.

Se here for an example: http://forums.oracle.com/forums/thread.jspa?messageID=2575374�

Sadly I doný understand Java's checked exceptions so the exception handling isn't really great (I'm not a Java dev).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文