運用時に発生したトラブルの事例、およびその対処方法について説明します。
クライアントの画面で、メッセージ JYP2008E が出力される
クライアントの画面で、サーバから以下のメッセージが出力されることがあります。
SQL-STATE=71020 JYP2008E 同時に操作できるSQL文の数を超えました.
以下の2つの場合が考えられます。
1トランザクション内でのSQL文の実行数が32を超えた
動的SQLでSQL文識別子を利用しており、SQL文識別子の数が32を超えた
この場合の対処方法としては、“MAX_SQL”または“CLI_MAX_SQL”に、32以上32000以下の値を指定するようにしてください。なお、初期値は1024に設定されています。
参照
“MAX_SQL”の詳細は、“アプリケーション開発ガイド(共通編)”の“クライアント用の動作環境ファイル”、または、“アプリケーション開発ガイド(.NET Data Provider編)”の“tuneparamキーワード”を参照してください。
“CLI_MAX_SQL”の詳細は、“アプリケーション開発ガイド(JDBCドライバ編)”の“ctuneparamオプションについて”、または、“アプリケーション開発ガイド(ODBCドライバ編)”の“アプリケーションのチューニング”を参照してください。
UPDATE文を実行すると、メッセージ JYP6015E が出力される
「SET=<値式>」の<値式>中に問合せ指定(SELECT文)を記述するようなUPDATE文は、Symfoware/RDBではサポートしてないため、以下のエラーが出力されます。
JYP6015E UPDATE文の設定句に副問合せが指定されました.
SELECT文の結果を一度変数に格納してから、UPDATE文を実行することで、回避してください。
“UPDATE TABLE_ABC SET A = (SELECT X FROM TABLE_XYZ WHERE Y=1111)”というSQL文を実行する代わりに、以下の手順でSQL文を実行します。
“SELECT X FROM TABLE_XYZ WHERE Y=1111”の結果を、変数“MM”に取り込みます。
“UPDATE TABLE_ABC SET A = :MM”を実行します。