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.

Preguntas similare

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.

Respuesta Responder a este mensaje
#2 Pedro Luna Montalvo
16/12/2004 - 19:36 | Informe spam
Yo lo resolveria con parametros:


// El comando lo escribiria asi
string SQL = "";
SQL += ... más...
SQL += " NM_PRECIO >= @ValorPrecio";

// Luego agrego un parametro al comando que voy a ejecutar ...
miSqlCommand.Parameters.Add("@ValorPrecio", SqlDbType.Decimal);
miSqlCommand.Parameters["@ValorPrecio"].Value = valorNM_PRECIO;


Esto te evita la dependecia de la configuracion regional y le das el trabajo
de conversion a ADO.NET.

Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida