J'essaie d'écrire une instruction d'insertion pour une table SQL Server qui insère la valeur 1 dans un champ décimal. Le champ est du type décimal (10, 10) qui, autant que je comprends, signifie qu'il peut avoir jusqu'à 10 chiffres tout à fait, et jusqu'à 10 de ces chiffres peuvent être après le point décimal. Mais, lorsque je tente d'exécuter l'instruction d'insertion je reçois l'erreur suivante:Pourquoi ne puis-je pas entrer une valeur entière dans un champ décimal?
Arithmetic overflow error converting int to data type numeric.
Si je change le type de données du champ décimal (11, 10), cela fonctionne tout à coup. Qu'est-ce que je ne comprends pas ici? Qu'est-ce que je fais mal?
Je suis toujours confus. Il dit que l'échelle est le "* maximum * nombre de chiffres décimaux qui peuvent être stockés à la droite de la virgule décimale" - pas qu'il doit y en avoir 10. – froadie
Oui, mais cela ne veut pas dire que c'est un point décimal glissant. L'implication est que si vous fournissez moins de 10 chiffres à droite, le reste est des zéros. – Joe
@Joe, je ne suis pas sûr exactement ce que vous essayez de dire, mais si vous exécutez 'declare @x decimal (5,2), définissez @ x = 1.123456789; sélectionnez @x; définissez @ x = 1; sélectionnez @ x' vous obtiendrez '1.12' et' 1.00'. Une fois que vous avez déclaré une décimale, le nombre de chiffres à gauche et à droite de la virgule décimale est fixe, il n'y a pas de glissement de la virgule décimale. –