Java で区切られた文字列を簡単に解析するには、java.util.StringTokenizer を使用します。pl/sql で同じタイプのメカニズムが必要です。私はそれを書くことができましたが、それがすでに存在する場合は、それを使用したいと思います. pl/sql の実装を知っている人はいますか? いくつかの便利な代替手段はありますか?
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 リンクを参照してください...
APEX がインストールされている場合、関数APEX_UTIL.string_to_table
はまさにそれを行います。
PL/SQL にはトークナイザーが組み込まれていません。ただし、SQL または PL/SQL から構築するのは比較的簡単です。Adrian Billington の Web サイトには、いくつかのソリューションがあります。さらに、10g を使用している場合は、正規表現を使用して SQL で実行する Tanel Poder のこのコードを使用できます。
確かに、Oracle が dang 機能をビルトインの 1 つとして含めた方が簡単です。
別の方法は、Java ストアド プロシージャを作成することです (データベース内に JVM があります)。これは、java.util.StringTokenizer を使用できることを意味します。PL/SQL プロシージャ/関数内に Java ストアド プロシージャをラップする必要があります。
例については、http: //forums.oracle.com/forums/thread.jspa?messageID=2575374䰎を参照してください。
悲しいことに、私は Java のチェック例外を理解していないので、例外処理はあまり良くありません (私は Java 開発者ではありません)。