0

我正在尝试将 ODI 步骤错误消息插入到 oracle 表中。我使用<%=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 shell,Oracle SQL +jBS,jython,groovy 等......)

这里的问题不仅是引号,还有换行符。替换它们更加困难,因为每个解析步骤<%,,<?<@需要不同的技巧来定义这些文字

可以肯定的是,如果您编写用于插入日志数据的 Jython 任务(技术中的 Jython)。在那里,您可以简单地将 Python 功能用于多行字符串文字:

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

几天前我遇到了这个错误。我在ODI中应用了下面提到的解决方案......

使用 - q'#<%=odiRef.getPrevStepLog("MESSAGE")%>#' 这将为 INSERT 语句转义逗号 (')。

我在我的代码中使用了它,它工作正常:)

例如 - 从 dual 中选择 'testing'abcd';此查询将给出以下错误“ORA-01756:引用的字符串未正确终止”

从对偶中选择 q'#testing'abcd#';此查询没有错误,我们在 SQL Developer testing'abcd 中得到以下响应

于 2017-10-18T04:38:22.370 回答