我试图将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
我尝试使用substr
,replace
。在错误消息的中间没有任何作用,我们只有一个引号'tns3:ContctID'
。
有没有办法将其插入表格?
答案 0 :(得分:0)
这里的问题不仅是引用,还包括换行符。
要替换它们会更加困难,因为每个解析步骤<%
,<?
,<@
都需要不同的技巧来定义这些文字
如果您编写Jython任务以插入日志数据(Jython in technology),那么可以肯定的是。 在那里,您可以使用Python功能进行多行字符串文字 简单地:
⋮
err_log = """
<?=odiRef.getPrevStepLog("MESSAGE")?>
"""
⋮
答案 1 :(得分:0)
几天前我遇到了这个错误。我在ODI中应用了下面提到的解决方案...
使用 - q&#39;#&lt;%= odiRef.getPrevStepLog(&#34; MESSAGE&#34;)%&gt;#&#39; 这将转义INSERT语句的反转逗号(&#39;)。
我在我的代码中使用了它并且它工作正常:)
例如 - 选择&#39;测试&#39; abcd&#39;来自双重; 此查询将给出以下错误 &#34; ORA-01756:引用的字符串未正确终止&#34;
选择q&#39;#testing&#39; abcd#&#39;来自双重; 此查询没有错误,我们在SQL Developer中得到以下响应 测试&#39; ABCD