SQL Server - Transformar cadena caracteres a INT

   
Vista:

Transformar cadena caracteres a INT

Publicado por Victor Elizondo (21 intervenciones) el 28/05/2010 09:37:02
Hola a todos.

Tengo lo siguiente:

SELECT intPedido,dblTotal,datFecha FROM tbPedidoEnc WHERE intPedido (36341,36348)

y me arroja dos registros (por que si existen):

intPedido dblTotal datFecha
36341 40.50 2010-05-21 08:40:49.993
36348 1944.90 2010-05-26 14:04:16.963

Entonces lo que quiero hacer es lo siguiente. Hice un Stored Procedure el cual lo que está entre parentesis en el SELECT anterior, o sea 36341,36348 lo tiene que agarrar como caracter, es algo asi mas o menos:

ALTER PROC qryPedidoEnc_MostrarPedidosFactura
(
@strPedidos VARCHAR(1500)
)
AS
BEGIN
SELECT intPedido,dblTotal,datFecha FROM tbPedidoEnc WHERE intPedido IN(@strPedidos)
END

Obviamente si lo corro:

qryPedidoEnc_MostrarPedidosFactura '36341,36348'

me marcará error:

Msg 245, Level 16, State 1, Procedure qryPedidoEnc_MostrarPedidosFactura, Line 7
Error de conversión al convertir el valor varchar '36341,36348' al tipo de datos int.

Entonces como le puedo hacer para que ese parametro de entrada termine como el parametro del SELECT de amero arriba, o sea, que no sea caracter, para que asi al meter eso al procedure pueda procesar (lo repito, es EXTREMADAMENTE NECESARIO que el parametro del STORED PROCEDURE sea STRING)

Saludos y espero respuesta.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de SQL Server
- Cursos de SQL Server
- Temas de SQL Server
- Chat de SQL Server
información
Cursos y Temas de SQL Server
- SQL Server 7
- Inyección de código SQL
- Como manejar las fechas en Sql Server
Imágen de perfil de Isaias

RE:Transformar cadena caracteres a INT

Publicado por Isaias (3180 intervenciones) el 31/05/2010 18:46:51
Puedes utilizar query dinamico, aunque con sus pros y contras

ALTER PROC qryPedidoEnc_MostrarPedidosFactura
(
@strPedidos VARCHAR(1500)
)
AS
BEGIN
DECLARE @SQLString NVARCHAR(1000)
SET @SQLString = N'SELECT intPedido,dblTotal,datFecha FROM tbPedidoEnc WHERE intPedido IN('+@strPedidos+')'
EXECUTE sp_executesql @SQLString
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar cadena caracteres a INT

Publicado por Victor Elizondo (21 intervenciones) el 31/05/2010 21:11:10
Hola Isaias

Muchas gracias por responder de antemano.

Con tu procedure me aparece el siguiente error:

Msg 102, Level 15, State 1, Line 1
Sintaxis incorrecta cerca de ')'.


Lo estoy corriendo de la siguiente manera:

qryPedidoEnc_MostrarPedidosFactura '36341,36348,'

pero me aparece el error que te menciono.

Que pudiera ser??

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:Transformar cadena caracteres a INT

Publicado por Isaias (3180 intervenciones) el 31/05/2010 22:59:36
Te sobra la ultima coma de esta cadena

'36341,36348,'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar cadena caracteres a INT

Publicado por Victor Elizondo (21 intervenciones) el 31/05/2010 23:11:29
Excelente, ya funcionó muchisimas gracias Isaias

Podrias decirme los PROS y los CONTRAS de usar querys dinamicos???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:Transformar cadena caracteres a INT

Publicado por Isaias (3180 intervenciones) el 02/06/2010 23:46:25
Pros: En tiempo de ejecucion, puedes cambiar objetos con nombres de variables.

Contras: Inyeccion de codigo, planes de ejecucion totalmente diferentes a un procedure, nulo uso de indices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar