我正在尝试使用Lookup转换根据端口ACCT
从CUST_DDA
表中提取ACCT_ID,端口SUBSTR_ACCT_ID = IN_CUST_DDA
是表达式的输出端口。
我正在使用sqloverride,如下所示。初始查找条件:
SELECT
ACCT.ACCT_ID as ACCT_ID,
ACCT.ALT_ACCT_ID as ALT_ACCT_ID,
substr(acct.acct_id,-1*(length(IN_CUST_DDA))) as SUBSTR_ACCT_ID
FROM ACCT
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA)
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA)
覆盖:
angular
.module('templates', [])
.run(['$templateCache', function ($templateCache) {
$templateCache.put('get-time/get-time.html', '<div style="background-color:darkgray;"><h1>Get Time</h1><p>The time is: {{time}} <img src="/Areas/Admin/assets/img/clock.png" width="100"></p></div>'); }]);
由于错误,上面的sql覆盖失败:ORA-00904:“IN_CUST_DDA”:标识符无效
有没有办法将CUST_DDA端口的值用作查找的输入端口。 CUST_DDA不是属于ACCT表的字段。有没有办法做到这一点。
感谢。
答案 0 :(得分:0)
从覆盖中我可以看到您尝试将 IN_CUST_DDA 转换为CHAR,同时在长度中使用 IN_CUST_DDA 。
可能是导致问题的长度函数,因为长度函数可以与字符串一起使用。
答案 1 :(得分:0)
为了在查询覆盖中使用CUST_DDA(来自源代码)。您需要使用覆盖中的公共字段将查询表与源连接起来。
您无法以您提到的方式使用该端口。当您运行工作流时,informatica集成服务将在数据库中运行查找覆盖查询并将数据导入缓存文件(这就是您收到错误“IN_CUST_DDA”:无效标识符的原因。)。缓存文件准备就绪后,它将应用条件,然后为您获取输出。
如果你不清楚这个
,请告诉我此致 拉吉
答案 2 :(得分:0)
要实现此目的,您需要将查找配置为非缓存,因此将为每个输入行执行查询。请注意,这会降低性能。 接下来,您需要使用不同的语法,将输入端口封闭在问号中。这是一个example。在你的情况下它应该是这样的(这可能需要一点调整):
SELECT
ACCT.ACCT_ID as ACCT_ID,
ACCT.ALT_ACCT_ID as ALT_ACCT_ID,
substr(acct.acct_id,-1*(length(?IN_CUST_DDA?))) as SUBSTR_ACCT_ID
FROM ACCT
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?)
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?)