ソーステーブルTEST(抜粋)。括弧内の値は、日付タイプを決定します。
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000
問題のあるSQLコマンドは次のとおりです。
insert into TEST
select * from TEST where ID=575;
オープンソースツールFlameRobinのコマンドラインからこのコマンドを実行すると
更新されたテーブルは次のようになります
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000
810 10.000000 10.000000
ストアドプロシージャから(FlameRobinまたはBDE(Borland Database Engine)コンポーネントを使用する独自のアプリケーションから)同じコマンドを実行すると、結果は次のようになります。
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000
810 10.000000 10.000000
811 10.000000 NULL
SAMPLES列とNSAMPLES列の両方に興味をそそられるのは、同じ日付型、同じソース値(= 10.000000)であり、どちらもnull許容です。ストアドプロシージャから呼び出されたコピーコマンドがNSAMPLES列の値をコピーしないのはなぜですか?これの代わりに、新しいレコードにNULL値を挿入します。
2012年11月16日追加
たぶん、db管理ツールFlameRobinからの次のスクリーンショットにいくつかのヒントがあります。これらには、ストアドプロシージャINSERT_TESTおよびテーブルTESTの完全な定義が含まれています。
フィールドリストにNSAMPLES列がないのはなぜですか?