2017-12-01 10 views
0

Lookup変換を使用して、式からの出力ポートであるCUST_DDAポートに基づくACCTテーブルからACCT_IDを抽出しようとしています。 以下のようにsqloverrideを使用しています。最初の検索条件:ルックアップの入力ポートとしてCUST_DDAポートの値を使用する方法はありますか?

SUBSTR_ACCT_ID = IN_CUST_DDA 

上書き:ORA-00904: "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オーバーライドは、エラーが原因で失敗している無効な識別子

方法はありますルックアップの入力ポートとしてCUST_DDAポートの値を使用します。 CUST_DDAは、ACCTテーブルに属するフィールドではありません。これを行う方法はありますか?

ありがとうございました。私はあなたにも、同時にあなたの長さにIN_CUST_DDAを使用して、CHARにIN_CUST_DDAを変換しようとしていることがわかりますオーバーライドから

答えて

0

length関数は文字列とともに使用できるため、問題の原因となる長さ関数になることがあります。

0

ルック・オーバーライドでCUST_DDA(ソースから)を使用するためです。オーバーライドの共通フィールドを持つルックアップテーブルにソースを追加する必要があります。

あなたが言及した方法でポートを使用することはできません。ワークフローを実行すると、informatica統合サービスはデータベース内でルックアップのオーバーライドクエリを実行し、キャッシュファイルにデータを取得します(エラー "IN_CUST_DDA":無効な識別子です)。キャッシュファイルが準備完了すると、条件が適用され、出力が得られます。

はあなたが非キャッシュされたとして、あなたのルックアップを設定する必要があり、そのクエリは、各入力行に対して実行されますこれを実現するために、この

よろしく ラジ

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?) 
関連する問題