| > 今回の例だと、桐側が ORACLE 側の型を取り間違えて > 15.50 を 15 に切り捨てて INSERT したように思うの > ですが、それとは違うのでしょうか? > 桐側は 15.50 でデータを渡しているけど ORALE 側が > 切り捨てているのでしょうか?
サーバ PostgreSQL 7.2.2 に ODBC ドライバ 8.02.04.02 で 桐から書き出し(追加)を行う場合の ログを取ってみました。
テーブルは CREATE TABLE "NUM1" ( NUM numeric(9,2));
CREATE TABLE "NUM2" ( NUM numeric(9,0));
CREATE TABLE "INT" ( NUM int2);
Oracle の NUMBER型は NUMBER(p,s)は PostgreSQL の場合の (ANSI SQL) の NUMERIC(p,s) なので NUMERIC型を代用。
の3種類に桐の数値型項目(num)から 15.5 の値を書き出してみたのです が、
結局、桐側は
query='insert into "NUM1" ("num") VALUES ( '15.5')' query='insert into "NUM2" ("num") VALUES ( '15.5')' query='insert into "INT" ("num") VALUES ( 15.5)'
と、15.5 で INSERT かけてますね。 結果の値は numeric(9,2) 以外は 16 に丸められますけど。
しかし、ここで 15.5 も桐は INT型に関しては数値で 投げかけているけど、NUMERIC型に関しては文字列で INSERT かけてしまっています。
この時の Oracle の受け取り結果で 15 に丸められているの でしょうか? 桐は何故に numeric型に対して '' で括ったデータを渡して いるのかな?
|