4

Java で区切られた文字列を簡単に解析するには、java.util.StringTokenizer を使用します。pl/sql で同じタイプのメカニズムが必要です。私はそれを書くことができましたが、それがすでに存在する場合は、それを使用したいと思います. pl/sql の実装を知っている人はいますか? いくつかの便利な代替手段はありますか?

4

4 に答える 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 リンクを参照してください...

Ak Tom - 「IN リストのさまざまな要素」

于 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 の Web サイトには、いくつかのソリューションがあります。さらに、10g を使用している場合は、正規表現を使用して SQL で実行する Tanel Poder のこのコードを使用できます。

確かに、Oracle が dang 機能をビルトインの 1 つとして含めた方が簡単です。

于 2009-10-05T15:37:30.850 に答える
0

別の方法は、Java ストアド プロシージャを作成することです (データベース内に JVM があります)。これは、java.util.StringTokenizer を使用できることを意味します。PL/SQL プロシージャ/関数内に Java ストアド プロシージャをラップする必要があります。

例については、http: //forums.oracle.com/forums/thread.jspa?messageID=2575374䰎を参照してください。

悲しいことに、私は Java のチェック例外を理解していないので、例外処理はあまり良くありません (私は Java 開発者ではありません)。

于 2009-10-05T18:26:21.083 に答える