ストアドプロシージャではまる
やりたかったこと
カーソルで1行ずつ、正規化を行い、最終的にテーブルの情報をまとめたかった。
内容
カーソルでFETCHしたら、値がなぜかNULLになってしまう現象が発生。
ログ取得用のテーブルにログを吐き出し、確認すると、すべてのカラムがNULL。
(もちろん、CAST(col AS CHAR)をして吐き出している)
原因を切り分けると、DECLAREで宣言したものが多く、
なんらかの原因*1でFETCHすることが出来なくなって、
発生している模様。
テーブルの内容としては、12カラム程度で、
ほとんどがVARCHAR、変換用にいくつかの変数を追加で20程度使っていたら、
この現象に遭遇。
回避策
一時テーブルを作成して、データを突っ込んだ後、
ALTER TABLEで加工する情報を盛り込んでから正規化する。
取り扱うテーブルが増えると必然的に変数も増えるため、列を動的に増やして、作業を行うようにする。
*1:おそらくメモリ不足