SQL SEVERのInsert文について


へなちょこ  2003-11-19 02:27:12  No: 80469

SQL SEVER7.0です。

レポート出力用に一時的なテーブルを
kingaku decimal(7.2)
で作ります。

その後にInsert文です。
Insert Into TestTable (
kingaku
)
Select kingaku From Furiage

という文を書いて登録しようしたところnumericからnumericのオバーフロー
のエラーがでました。
この時に抽出した金額は4.50です。
Furiageには、
kingaku decimal(8,2)
で登録してあります。

確かに、Furiageの方が項目のサイズは大きいのですが
数値自体は、4.50でしかありません。
なぜ、オーバーフローが起きるのでしょうか?
このAPは、かなり前にリリースしており、
つい最近このエラーが出るようになりました。

とりあえずは、一時的なテーブルのサイズを大きくしました。
それで、大丈夫になりました。

しかし、なぜこの頃になって出るようになったのか?
サイズが4.50程度でオーバーフローになるのでしょうか?


とろ  2003-11-19 18:54:57  No: 80470

私の環境が SQL Server 2000 だからかも知れませんが、
エラーは発生しませんでした。
参考になるかどうか分かりませんが、
下のクエリを1つずつ実行した場合もエラーは発生しますか?

create table TABLE_7_2 ( FIELD1 decimal(7, 2) )
create table TABLE_8_2 ( FIELD1 decimal(8, 2) )
insert into TABLE_8_2 values (4.50)
insert into TABLE_7_2 select * from TABLE_8_2


へなちょこ  2003-11-19 19:04:08  No: 80471

返信ありがとうございます。
上記の文でエラーはでませんでした。
それでは、いったい何に原因があるのでしょうか?


超初心者  2003-12-27 01:50:15  No: 80472

vb6を使っています。初めて使いました。
オーバーフローしましたってエラーが出たんですが、理由がわかりません。
そもそもオーバーフローって何が原因で起こるのですか?
オーバーフローしましたって出てきたら何をチェックすればいいですか?
教えてください。お願いします。


へなちょこ  2004-01-07 19:56:42  No: 80473

超初心者さんへ
Insert文とか出オーバーフローが出たのなら、
Insert Into (
a,b,c,d,e,f
) Values (
1,2,3,4,5
)
だとして、後ろからfと5をInsert文から外して実行してみてください。
それを、先頭までくりあけしたら、どこかでエラーがなくなりますので
無くなったところでオーバーフローしているのでは?
オーバーフローは、char(2)の項目にchar(20)を入れようとしたときとか、
お互いの型が違うときとかにでますよ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加