我正在尝试使用查找转换从ACCT表中提取ACCT_ID,基于端口CUST_DDA,这是一个表达式的输出端口。我使用的是sqloverride,如下所示。初始查找条件:
SUBSTR_ACCT_ID = IN_CUST_DDA覆盖:
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)由于以下错误,上述sql覆盖失败: ORA-00904:"IN_CUST_DDA":无效标识符
有没有办法使用来自CUST_DDA端口的值作为查找的输入端口。CUST_DDA不是属于ACCT表的字段。有没有办法做到这一点。
谢谢。
发布于 2017-12-02 18:27:22
从覆盖中我可以看到,您正在尝试将IN_CUST_DDA转换为CHAR,同时在长度中使用IN_CUST_DDA。
可能是导致问题的长度函数,因为长度函数可以与字符串一起使用。
发布于 2017-12-04 13:50:41
以便在您的查找覆盖中使用CUST_DDA(来自源代码)。您需要在override中将查找表与具有公共字段的source联接。
你不能以你提到的方式使用端口。当您运行工作流信息时,集成服务将在数据库中运行查找覆盖查询,并将数据放入缓存文件中(这就是您收到错误"IN_CUST_DDA":invalid identifier的原因)。一旦缓存文件准备就绪,它将应用条件,然后为您获取输出。
如果你不清楚这一点,请告诉我
向Raj致敬
发布于 2017-12-04 14:46:38
要实现这一点,您需要将查找配置为非缓存,以便对每一个输入行执行查询。请注意,这会大大降低性能。接下来,您需要使用一点不同的语法,用问号将输入端口括起来。这是一个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?)https://stackoverflow.com/questions/47595096
复制相似问题