我使用 java.util.StringTokenizer 来简单解析 java 中的分隔字符串。我需要在 pl/sql 中使用相同类型的机制。我可以写它,但如果它已经存在,我更愿意使用它。有人知道 pl/sql 实现吗?一些有用的选择?
问问题
10833 次
4 回答
4
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;
/
或查看此 Ask Tom 链接以了解其他想法...
于 2009-10-06T10:53:21.723 回答
3
如果您安装了 APEX,该功能APEX_UTIL.string_to_table
就是这样做的。
于 2009-10-05T15:34:56.367 回答
2
PL/SQL 没有内置的分词器。但是,使用 SQL 或 PL/SQL 构建相对简单。Adrian Billington 的网站有几种解决方案。此外,如果您使用的是 10g,则可以使用Tanel Poder 中的此代码,该代码使用正则表达式在 SQL 中执行此操作。
诚然,如果 Oracle 只是将 dang 工具作为其内置功能之一包含在内,那会更容易。
于 2009-10-05T15:37:30.850 回答
0
另一种方法是编写 Java 存储过程(数据库中有一个 JVM),这意味着您可以使用 java.util.StringTokenizer。您必须将 Java 存储过程包装在 PL/SQL 过程/函数中。
以此处为例: http://forums.oracle.com/forums/thread.jspa?messageID=2575374& #2575374
可悲的是,我不了解 Java 的已检查异常,因此异常处理并不是很好(我不是 Java 开发人员)。
于 2009-10-05T18:26:21.083 回答