problema con CAST y CONVERT

27/09/2005 - 15:37 por Arreglador | Informe spam
necesito hacer un cast de la columna "Importe_Fact" que es nvarchar en la
tabla, la necesito float para poder hacer operaciones con la cifra en un
stored procedure, pero cada vez que quiero convertirla ya sea con cast o
convert, me sale el error que detallo mas abajo, soy un poco nuevo en esto
asique quiza este haciendo algo mal con la sintaxis ya que la consulta la
guardo en @temp y luego la ejecuto en otro lado

SELECT @temp =N'SELECT @S2=SUM(' + convert(float,Importe_Fact) + N')
FROM ( SELECT etc


Error obtenido:
Servidor: mensaje 207, nivel 16, estado 3, línea 32
El nombre de columna 'Importe_Fact' no es válido.

cabe aclarar que pruebo poniendo antes el nombre de la tabla.columna pero
tampoco funciona no se que sera.

:-P
 

Leer las respuestas

#1 Alejandro Mesa
27/09/2005 - 15:56 | Informe spam
Te recomiendo cambiar el esquema de la tabla. No creo que sea buena idea
almacenar importes de factura usando varchar o nvarchar. tampoco te
recomiendo que conviertas esos valores a tipo float, puesto que este tipo de
datos es aproximado y SQL Server puede traer un valor diferente al que
inicialmente se almaceno en la tabla, especialmente los que terminan en .3,
.6 y .7.

Ejemplo:

declare @t table (c1 float)

insert into @t values(.3)

select * from @t
go

Debes usar el tipo de datos money o numeric, dependiendo de cuantos digitos
decimales necesitas.

Ejemplo:

select sum(cast(importe_fact as numeric(10, 2)))
from facturas

El error que te esta dando, no creo que este relacionado con la conversion,
sino mas bien con la cadena que estas armando. Para una mejor ayuda,
preferible que postees el valor de la cadena.

select @temp


AMB

"Arreglador" wrote:

necesito hacer un cast de la columna "Importe_Fact" que es nvarchar en la
tabla, la necesito float para poder hacer operaciones con la cifra en un
stored procedure, pero cada vez que quiero convertirla ya sea con cast o
convert, me sale el error que detallo mas abajo, soy un poco nuevo en esto
asique quiza este haciendo algo mal con la sintaxis ya que la consulta la
guardo en @temp y luego la ejecuto en otro lado

SELECT @temp =N'SELECT @S2=SUM(' + convert(float,Importe_Fact) + N')
FROM ( SELECT etc


Error obtenido:
Servidor: mensaje 207, nivel 16, estado 3, línea 32
El nombre de columna 'Importe_Fact' no es válido.

cabe aclarar que pruebo poniendo antes el nombre de la tabla.columna pero
tampoco funciona no se que sera.

:-P

Preguntas similares