ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

scaleエラー時の挙動

たとえば、numeric(8,2)のフィールドだったら、
123456.78
という値が入るわけですが、Sybase15だと、
123456.789
という値をINSERTしようとすると、
エラーにならない(JDBCドライバから例外を吐かない)、かつ、INSERTもできないというひどいことになります。
まあ、INSERTした結果の更新件数が取れるので、そのチェックしてなかったと言えばそれまでですが、、、


試しに、ASE16のDeveloperバージョンで同じことしてみましたが、ちゃんとエラーになりました。


1> select @@version
2> go

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Adaptive Server Enterprise/16.0 GA PL01/EBF 22544 SMP/P/x86_64/Enterprise Linux
/ase160sp00pl01/3523/64-bit/FBO/Tue Apr 15 13:24:31 2014

(1 row affected)
1> create table test (
2> a numeric(8,2)
3> )
4> go
1> insert into test values(123456.789)
2> go
Msg 241, Level 16, State 2:
Server 'TEST', Line 1:
Scale error during implicit conversion of NUMERIC value '123456.789' to a
NUMERIC field.
1> insert into test values(123456.78)
2> go
(1 row affected)

implicit conversionなのか?っていう疑問はありますが。。。