2010-05-14 5 views
0

à partir de l'application frontale J'envoie la valeur 0.15 à la base de données via une procédure stockée, mais elle est stockée en tant que valeur 0. Pourquoi? veuillez guider. J'utilise C# ASP.NET + + SQL Server 2008Problème de lecture double à décimale SQL Server

+3

Que sommes-nous censés faire? Utilisez une boule de cristal pour vous aider? Fournissez le code complet pour ces parties - le SP, le code C# et le tableau DDL pour le champ, s'il vous plaît. Oh, et je devais vous donner même un sujet sensible. Qu'en est-il de mettre UN second effort dans une question? – TomTom

+0

Pouvez-vous ** nous montrer ** (a) la structure de la table, (b) l'interface de la procédure stockée (sa liste de paramètres) et (c) l'extrait de code dans votre code C# qui appelle cette procédure stockée? ? –

Répondre

2

Quel type de données signifie la colonne ont que vous stockez dans? Aussi: quel type de données le paramètre de la procédure stockée utilise-t-il pour transmettre cette valeur ??

Mon intuition: si vous utilisez par ex. DECIMAL alors vous utilisez DECIMAL(18,0) -> jusqu'à 18 chiffres, mais aucun après la virgule décimale. Cela permettrait de tronquer 0,15 à 0. Le simple fait d'utiliser DECIMAL comme type de données ne le rend pas automatiquement compatible avec les chiffres après le point décimal (une erreur courante que beaucoup de programmeurs SQL font une seule fois - et ils le savent).

Assurez-vous que le paramètre du processus stocké et la colonne de la table tiennent compte des valeurs fractionnaires, par ex. sont quelque chose comme DECIMAL(18,4) ou quelque chose comme ça

+1

Ce serait ma conjecture. – AllenG

+0

offcource Décimal –

+0

@Lalit: juste DECIMAL = DECIMAL (18,0) avec les chiffres ** non ** après que la virgule décimale ne fonctionne pas **. Vous devez spécifier précisément DECIMAL (18,2) ou quelque chose comme ça - avec des chiffres après la virgule décimale. –

0

Je suis assez sûr quelque part dans votre code que vous ayez un int/entier et c'est où il se arrondi à 0

+0

Non pas du tout.J'ai analysé le code –