ORA-01723: zero-length columns are not allowed が出たので無理やり対処


はい、ちょっとプログラムを修正していたら、ORA-01723が出ました。

修正内容:
指定のパターンの時だけ、テーブルを作る時に最初から空を設定する。

テーブルを作る部分がラップされていて、SQLを書いたらそいつを元にテーブルを自動生成するようにしているのですが、こいつが悪さをしていました。

select 
 a
 , b
 , c
from table_name

みたいなのを書くとそういう中間テーブルを作るようにしているのですが、ここにnullとか空文字とか入れると、「データの定義がわからん」とORA-01723が出るわけです。

例)
select 
 a
 , null as b
 , '' as c
from table_name

bもcもエラーでコケる。


とりあえず生成部分を修正するのは改修範疇がデカすぎて至急対応に間に合わないため、一旦こうしました。

select 
 a
 , ' ' as b  -- 半角スペースを入れる
from table_name

データ出力部でbを出す時にtrimする。

適切かどうかは、結構邪道だと思いますが(bに本当に半角スペースが入る場合も考慮しないといけない)、データが見切れているのと急ぎ対応だったのでこの措置で切り抜けました。



参考:
http://centromezzo.sakura.ne.jp/wiki/?ORACLE%2FORA-01723