首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以使用CUST_DDA端口的值作为查找的输入端口?

有没有一种方法可以使用CUST_DDA端口的值作为查找的输入端口?
EN

Stack Overflow用户
提问于 2017-12-01 22:03:49
回答 3查看 233关注 0票数 0

我正在尝试使用查找转换从ACCT表中提取ACCT_ID,基于端口CUST_DDA,这是一个表达式的输出端口。我使用的是sqloverride,如下所示。初始查找条件:

代码语言:javascript
复制
SUBSTR_ACCT_ID = IN_CUST_DDA

覆盖:

代码语言:javascript
复制
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表的字段。有没有办法做到这一点。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2017-12-02 18:27:22

从覆盖中我可以看到,您正在尝试将IN_CUST_DDA转换为CHAR,同时在长度中使用IN_CUST_DDA

可能是导致问题的长度函数,因为长度函数可以与字符串一起使用。

票数 0
EN

Stack Overflow用户

发布于 2017-12-04 13:50:41

以便在您的查找覆盖中使用CUST_DDA(来自源代码)。您需要在override中将查找表与具有公共字段的source联接。

你不能以你提到的方式使用端口。当您运行工作流信息时,集成服务将在数据库中运行查找覆盖查询,并将数据放入缓存文件中(这就是您收到错误"IN_CUST_DDA":invalid identifier的原因)。一旦缓存文件准备就绪,它将应用条件,然后为您获取输出。

如果你不清楚这一点,请告诉我

向Raj致敬

票数 0
EN

Stack Overflow用户

发布于 2017-12-04 14:46:38

要实现这一点,您需要将查找配置为非缓存,以便对每一个输入行执行查询。请注意,这会大大降低性能。接下来,您需要使用一点不同的语法,用问号将输入端口括起来。这是一个example。在您的情况下,它应该是这样的(这可能需要一些调整):

代码语言:javascript
复制
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?)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47595096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档