ORA-01723: zero-length columns are not allowed が出たので無理やり対処
はい、ちょっとプログラムを修正していたら、ORA-01723が出ました。
修正内容:
指定のパターンの時だけ、テーブルを作る時に最初から空を設定する。
テーブルを作る部分がラップされていて、SQLを書いたらそいつを元にテーブルを自動生成するようにしているのですが、こいつが悪さをしていました。
select
a
, b
, c
from table_name
みたいなのを書くとそういう中間テーブルを作るようにしているのですが、ここにnullとか空文字とか入れると、「データの定義がわからん」とORA-01723が出るわけです。
例)
bもcもエラーでコケる。
とりあえず生成部分を修正するのは改修範疇がデカすぎて至急対応に間に合わないため、一旦こうしました。
データ出力部でbを出す時にtrimする。
適切かどうかは、結構邪道だと思いますが(bに本当に半角スペースが入る場合も考慮しないといけない)、データが見切れているのと急ぎ対応だったのでこの措置で切り抜けました。
参考:
http://centromezzo.sakura.ne.jp/wiki/?ORACLE%2FORA-01723
はい、ちょっとプログラムを修正していたら、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
コメント