DFU, Query, SQL

24. SQL や Query で不正な漢字フィールドを処理するには?

漢字専用フィールド(J) でシフト文字が脱落していたり、漢字専用であるのに半角文字が

入っていたりすると、SQL での FETCH (行の取り出し)はエラーになってしまう。

WHENVER SQLERROR CONTINUE

WHENEVER SQLWARNING CONTINUE を事前に挿入しても、そのエラーのあった

フィールド以降のフィールドまでもが取得されなくなってしまう。

ところが QUERY/400や対話式のSQLでは、このような場合でもエラーで停止することなく、

エラーの漢字フィールドも表示されている。

仮に漢字専用フィールド(J) が KJNAME であったとして

SELECT KJNAME FROM MYLIB/MYFILE

で漢字フィールドの不正エラーが発生するものとする。

これを

SELECT KJNAME || '' FROM MYLIB/MYFILE

として NULL フィールドを結合して 別のフィールドとして再定義 してしまえば

漢字専用フィールドではなくなるのでSQLはエラーは返さない。

KJNAME || ” は 可変長文字ストリングの属性 となる。)

しかも正しい属性のフィールドの場合も結果は同じである。

わかってしまえば簡単な解決であるが、最初は解決に悩んでしまうかも知れない。

この方法は弊社で発見したもので Chicago Ver 5.0 にも使用されている。