Als ich das letzte Mal versuchte, Sybase zu verwenden (vor vielen Jahren), hatte ich das gleiche Problem. Da ich von einer SQL Server-Mentalität herkomme, war mir nicht klar, dass Sybase versuchen würde, die Dezimalstellen herauszuzwingen - was mathematisch gesehen das ist, was es sollte tun. :)
Von der Sybase-Handbuch :
Arithmetische Überlauffehler treten auf, wenn der neue Typ zu wenig Dezimalstellen hat Stellen hat, um die Ergebnisse unterzubringen.
Und weiter unten:
Bei impliziten Konvertierungen in numerische Werte oder Dezimaltypen erzeugt der Verlust der Skala einen Skalenfehler. Verwenden Sie die Option Option arithabort numeric_truncation um festzulegen, wie schwerwiegend ein solcher Fehler betrachtet wird. Die Standardeinstellung, arithabort numeric_truncation on, bricht die Anweisung ab, die den Fehler verursacht, fährt aber mit der Verarbeitung anderer Anweisungen in der Transaktion oder Stapel. Wenn Sie arithabort numeric_truncation ausschalten, wird Adaptive Server die Abfrageergebnisse abschneiden und setzt die Verarbeitung fort.
Así que in der Annahme, dass der Verlust an Präzision in Ihrem Szenario akzeptabel ist wollen Sie wahrscheinlich zu Beginn Ihrer Transaktion Folgendes wissen:
SET ARITHABORT NUMERIC_TRUNCATION OFF
Und dann am Ende der Transaktion:
SET ARITHABORT NUMERIC_TRUNCATION ON
Das war die Lösung für mich vor vielen Jahren ...