0

Oracle テーブルに ODI ステップ エラー メッセージを挿入しようとしています。を使用してエラー メッセージを取得し<%=odiRef.getPrevStepLog("MESSAGE")%>ました。

ODI-1226: Step PRC_POA_XML_synchronize fails after 1 attempt(s). 
ODI-1232: Procedure PRC_POA_XML_synchronize execution fails. 
ODI-1227: Task PRC_POA_XML_synchronize (Procedure) fails on the source XML connection XML_PFIZER_LOAD_POA_DB_DEV. 
Caused By: java.sql.SQLException: class java.sql.SQLException
oracle.xml.parser.v2.XMLParseException: End tag does not match start tag 'tns3:ContctID'. 
    at com.sunopsis.jdbc.driver.xml.SnpsXmlFile.readDocument(SnpsXmlFile.java:459) 
    at com.sunopsis.jdbc.driver.xml.SnpsXmlFile.readDocument(SnpsXmlFile.java:469)

これをテーブルに挿入しようとすると、次のエラーが発生します。

Missing IN or OUT parameter at index:: 1

、で試しましsubstrreplace。エラーメッセージの途中で一重引用符があるため、何も機能しません'tns3:ContctID'

これをテーブルに挿入する方法はありますか?

4

2 に答える 2

0

純粋な Java BeanShell を使用したいのに、詳細が少なすぎて簡潔で率直な答えが得られない場合、これは難しいものです。

  • これをどのように挿入しようとしていますか (ソース/ターゲットのコマンド、Bean シェルのみ、Oracle SQL +jBS、jython、groovy など...)

ここでの問題は、引用符だけでなく改行にもあります。これらのリテラルを定義するには、解析ステップごとに<%異なるトリックが必要になるため、それらを置き換えるのはさらに困難です。<?<@

確かに機能するのは、ログ データを挿入するための Jython タスク (テクノロジーにおける Jython) を作成する場合です。そこでは、複数行の文字列リテラルに対して Python の機能を簡単に使用できます。

⋮
err_log = """   
             <?=odiRef.getPrevStepLog("MESSAGE")?>
             """
⋮
于 2014-09-11T22:06:06.973 に答える