変更内容
SQL文の実行時情報を格納するSQLCODE、SQLMSG、およびSQLERRDの定義場所の扱いが変更になりました。
SQL宣言節外で定義されたSQLCODE、SQLERRD、またはSQLMSGには、SQL文の実行時情報を格納しません。
SQL宣言節外で定義されたSQLCODE、SQLERRD、またはSQLMSGに、SQL文の実行時情報を格納します。
影響
以下の条件の場合、V10.1.0以前ではSQLCODE、SQLERRDまたはSQLMSGにSQL文の実行時情報は格納されませんでしたが、V10.2.0以降ではSQL文の実行時情報が格納されるようになりました。
そのため、上記3つのデータをSQL文の実行時情報を得る目的以外で使用していた場合は、実行結果が異なる場合があります。
ただし、本影響があるのはV10.2.0以降で再翻訳した場合に限ります。
SQL宣言節内にSQLSTATEが構文規則どおりに定義されている。かつ、
SQL宣言節外にSQLCODE、SQLERRDまたはSQLMSGが構文規則どおりに定義されている。かつ、
SQL文が実行される。かつ、
手続き部でSQLCODE、SQLERRDまたはSQLMSGが参照される。かつ、
1.~4.が同一翻訳単位内に記述されている。
対処方法
SQL宣言節外に定義されたSQLCODE、SQLMSG、またはSQLERRDの名前を変更してください。