如果生成的代码作为JBS技术中的最终代码执行,则odiRef.getQuotedString
可能会有所帮助。当我们使用它以下列方式(在 - ,$ - 或@ 3'-取代?):
<$
String SEL_COLS = <%=odiRef.getQuotedString(odiRef.getColList(0, "", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", ""))%>;
$>
则导致失败,就像这样:
... Caused by: org.apache.bsf.BSFException: BeanShell script error:
Parse error at line 3, column 37. Encountered: Entry BSF info: ....
... 11 more
Text: <$
String SEL_COLS = "SOURCE_TAB.\"Entry Number\" ENTRY_NUMBER";
$>.
这看起来不错,但不起作用。它可以作为JBS Technology的最终代码(我指的是所有替代的结果)。不幸的是,任何替换都会使用反斜杠。
好吧,如果标准odiRef-functtion不起作用,让我们自己写的:
<%
String getQuotedStringCustomized(String s){
return '"'+s.replaceAll('"'.toString(),'"'+"+'"+'"'+"'+"+'"')+'"';
}
%>
-- other code........
<$
String SEL_COLS = <%=getQuotedStringCustomized(odiRef.getColList(0, "", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", ""))%>;
$>
只有把"
到Java的JBS换人内文字的方式是contatenation与字符文字'"'
或使用'"'.toString()
表达式如果不可能使用Char类型。
FINALLY:
在最后JBS代码,你可以使用\"
,但换人内只有+'"'+
。
将双引号连接为一个字符指向正确的方向。我的情况有所改变,实际上我不得不在字符内部加双引号,比如'\''。我真的不喜欢ODI如何处理这个问题 - 有时候模板感觉像是在一条腿上拍摄自己的感觉 – mayr
单引号是所以只有一个符号可以出现在内部,例如''X''是正确的,但'AB'是错误的。如果你使用'''',那么它就等于''''' (没有反斜杠),就像上面解释的那样ODI在JBS替换中“吃”了反斜杠 它发生在源代码处理中 ODI总是将所有东西都翻译成JBS代码,再次打印代码,然后真正执行代码。 –