以下のように、別の表に記載されている一連のルールを満たしている場合は、ファイルのすべてのレコードのレコードを読み込んで別のファイルに挿入する必要があります。 。動的にSQLステートメントを準備するロジック
記録、それは最初のファイルから読み込まれた後の第二のテーブルに書き込むことが適格にするために少なくとも1つのルールの順序をすべて満たさなければなりません。
例えば、レコードがCARファイルから読み込まれると、以下のルールは、少なくとも1つのルールセットのすべてのシーケンスが満たされるまでチェックされなければなりません。このため、私はこの種の動的SQLプログラムを作成する予定でした。 Prepared SQLはホスト変数をサポートしていないため、これは機能しません。
すべてのボディが示唆またはSQL statemtns動的に作成し、それを第二のファイルに入力するためのレコードが必要なルールを満たすかどうかを確認する方法上の任意のガイダンスを提供できる場合
、それは素晴らしいことだ基本的に私が探しているのは、テーブルからフィールドを選択した後で、それをさらに保存して検証とチェックを行う方法です。
更新
:
Danny117からインテリジェントなアドバイスをもとに、私は以下のコードが出ている:
H Option(*NoDebugIO:*SrcStmt)
D RULEDS E DS EXTNAME(RULESTABLE)
D MAXRUL S 1 0
D MAXSEQ S 1 0
D STMT S 512
D WHERESTMT S 512 INZ('')
D FullSqlStmt S 512 INZ('')
D RULINDEX S 1 0 INZ(1)
D SEQINDEX S 1 0 INZ(1)
D APOS C CONST('''')
/Free
Exec SQL SELECT MAX(RULENO)INTO :MAXRUL FROM RULESTABLE;
Exec SQL DECLARE RULCRS CURSOR FOR SELECT * FROM RULESTABLE;
Exec SQL OPEN RULCRS;
Exec SQL FETCH RULCRS INTO :RULEDS;
DoW (Sqlcod = 0 AND RULINDEX <= MAXRUL);
Exec SQL SELECT MAX(SEQNO) INTO :MAXSEQ FROM RULESTABLE
WHERE RULENO=:RULINDEX ;
DoW (SEQINDEX <= MAXSEQ);
If (Position <> '');
Field = 'SUBSTR('+%Trim(Field)+','+%Trim(Position)+','
+'1'+')';
EndIf;
WhereStmt = %Trim(WhereStmt) + ' ' + %Trim(field)+ ' ' +
%Trim(condition) + ' ' + APOS + %Trim(Value) + APOS;
If (SeqIndex < MaxSeq);
WhereStmt = %Trim(WhereStmt) + ' AND ';
EndIf;
Exec SQL FETCH NEXT FROM RULCRS INTO :RULEDS;
SeqIndex = SeqIndex + 1;
EndDo;
FullSqlStmt = %Trim('INSERT INTO ITMRVAT SELECT * +
FROM ITMRVA WHERE '+ %Trim(WhereStmt));
Exec SQL Prepare InsertStmt from :FullSqlStmt;
Exec SQL EXECUTE InsertStmt;
RulIndex = RulIndex + 1;
EndDo;
その下に示すように、これは、SQL文を生成し私が欲しいものです。さあ、コードの他の部分を見てみましょう。
> EVAL FullSqlStmt
FULLSQLSTMT =
....5...10...15...20...25...30...35...40...45...50...55...60
1 'INSERT INTO ITMRVAT SELECT * FROM ITMRVA WHERE STID = 'PLD' '
61 'AND ENGNO LIKE '%415015%' AND SUBSTR(ENGNO,1,1) = 'R' AND SU'
121 'BSTR(ENGNO,5,1) = 'Y' '
181 ' '
241 ' '
301 ' '
361 ' '
421 ' '
481 ' '
しかし、私はダニーに私のコメントで述べたような問題が第二のテーブルを含む新しいルールが指定されている場合はどのように処理するか、今..です
どのような意味ですか:[タグ:c]のようなプログラミング言語を使用して、スクリプトを使用しています.... – LPs
私は埋め込みSQLRPGプログラムを作成しようとしています。 RPGは、IBM iプラットフォームで使用される主な言語です。しかし、私は疑問がDB2上にあるので、これは問題ではないと思う。 –
ルールで参照される第2のテーブルをどのように扱うべきかについて私たちが言うことは不可能である。 2番目のテーブルが参照されたときの結果を含むサンプルを表示して、それが明らかになるかもしれません。 – user2338816