先輩に質問です。テーブルがあります。テーブルの中にフィールド sfz があります。文字型は 18 ビットの固定長です。このフィールドを変数に代入するために、格納プロセスでカーソルを使用します。 vsfz (これも固定長の文字型です。18 ビット)、クエリ ステートメントを書きました:select bj from kq201905 where sfz=vsfz; と、正しくクエリできます。複数のテーブルをクエリしたいため、変数ループでテーブル名に値を割り当てる必要があるため、prepare ステートメントを使用して結合します。
set @vsk=concat(' select bj from ',vkn,' where sfz=' ,vsfz,';');
@vsk から stmt を準備;
stmt を実行;
deallocate prepare stmt;
実行後、クエリ結果が間違っていることが判明しました。テストしたところ、テーブル名変数とは関係がありませんでしたが、where 句に問題があるのではないかと思われます。理由をご存知の方がいらっしゃいましたら、教えてください。ありがとうございます。