Tipos Decimales y NUMERIC en SQL Server con ADO

16/12/2004 - 16:56 por Anonimo | Informe spam
Hola a todos.

Tengo un campo en una tabla MSSQL definido como
NM_PRECIO : NUMERIC(10,2)

Bien, en una clase CSharp ejecuto una consulta y obtengo
los datos de la tabla. Al ser un tipo numeric, el
System.Type para ese campo sería Decimal.


System.Decimal valorNM_PRECIO = {el valor que tuviera en
la tabla};


El caso que utilizo este valor para crear una SQL

string SQL = "";

SQL += ... más...

SQL += " NM_PRECIO >= " + valorNM_PRECIO.ToString();


Si valorNM_PRECIO es 123.45 en la tabla, el caso que

valorNM_PRECIO.ToString();

me devuelve 123,45 y la SQL quedaría


NM_PRECIO >= 123,45

lo que fallaría en MSSQL.

Existe una solución eficiente a este asunto ?.


Otro tema, en cuanto a eficiencia que es más rápido de
ejecutar en ADO.NET:

SELECT CONVERT(NUMERIC(10,2),'5.45')
ó
SELECT CAST ( '5.45' AS NUMERIC(10,2))


Gracias.
 

Leer las respuestas

#1 pablo crosio
16/12/2004 - 17:51 | Informe spam
hola!

proba con

valor.ToString(new System.Globalization.CultureInfo("en-US"));

pero para lo que vos estas haciendo te recomiendo que pases el valor como un
parametro de la consulta directamente; utilizando un objeto XXXCommand

salu2!!

pablo



"" escribió:


Hola a todos.

Tengo un campo en una tabla MSSQL definido como
NM_PRECIO : NUMERIC(10,2)

Bien, en una clase CSharp ejecuto una consulta y obtengo
los datos de la tabla. Al ser un tipo numeric, el
System.Type para ese campo sería Decimal.


System.Decimal valorNM_PRECIO = {el valor que tuviera en
la tabla};


El caso que utilizo este valor para crear una SQL

string SQL = "";

SQL += ... más...

SQL += " NM_PRECIO >= " + valorNM_PRECIO.ToString();


Si valorNM_PRECIO es 123.45 en la tabla, el caso que

valorNM_PRECIO.ToString();

me devuelve 123,45 y la SQL quedaría


NM_PRECIO >= 123,45

lo que fallaría en MSSQL.

Existe una solución eficiente a este asunto ?.


Otro tema, en cuanto a eficiencia que es más rápido de
ejecutar en ADO.NET:

SELECT CONVERT(NUMERIC(10,2),'5.45')
ó
SELECT CAST ( '5.45' AS NUMERIC(10,2))


Gracias.

Preguntas similares