ORA-19112:XMLTABLEを使用してコンマ区切りの文字列を行に変換しているときに評価中にエラーが発生しました

クリシュナットモラウェード

OracleのXMLTABLE関数を使用して、コンマ区切りの文字列を行に分割しようとしています。例えば

 WITH MYTABLE AS
  (SELECT '"AB","PQ","XY"' TEXT FROM DUAL
  )
SELECT REPLACE((column_value).GETSTRINGVAL(),'"','') "OPTION_TEXT"
FROM MYTABLE,
  XMLTABLE(TEXT);

上記のクエリは正常に機能します。ただし、&を含む文字列が渡されると、次のように例外がスローされます。

java.sql.SQLException:ORA-19112:評価中にエラーが発生しました:

 WITH MYTABLE AS
  (SELECT '"AB","P & Q","XY"' TEXT FROM DUAL
  )
SELECT REPLACE((column_value).GETSTRINGVAL(),'"','') "OPTION_TEXT"
FROM MYTABLE,
  XMLTABLE(TEXT);

このクエリは、Javaからプリペアドステートメントを介して実行されていることに注意してください。

ラリットクマールB

問題は、XQuery式の評価にあります。

REGEXP_SUBSTRを使用して、コンマ区切りの文字列を行に分割できます

このSQLフィドルをチェックしてください

作業デモ:

SQL> WITH mytable AS
  2    (SELECT '"AB","P & Q","XY"' TEXT FROM DUAL
  3    )
  4  SELECT trim(regexp_substr(TEXT, '[^,]+', 1, LEVEL)) TEXT
  5  FROM mytable
  6    CONNECT BY LEVEL <= regexp_count(TEXT, ',')+1;

TEXT
-----------------
"AB"
"P & Q"
"XY"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ