Consulta sobre SELECT ... WHERE Id_TipoUsuario IN ...

12/07/2004 - 13:27 por Gustavo | Informe spam
Hola a todos:

Estoy intentando hacer una select con un procedimiento almacenado sobre una
tabla llamada TiposUsuarios, pero quiero pasar en un único parámetro la
condición para la IN.

La tabla TiposUsuarios tiene el siguiente formato:
id_TipoUsuario int
Descripcion varchar(255)

y el procedimieento que quiero usar es algo así:
CREATE PROCEDURE SpSelectTiposUsuariosIN
@ListaIdTipoUsuario varchar(255)
AS
SELECT id_TipoUsuario, Descripcion
FROM TiposUsuarios
WHERE id_TipoUsuario in (@ListaIdTipoUsuario)

Y quiero llamarlo de la siguiente forma:
SpSelectTiposUsuariosIN '1,2,3,6'

El error que me da es:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
SpSelectTiposUsuariosIN, línea 4
Error de sintaxis al convertir el valor varchar '1,2,3,6' para una columna
de tipo de datos int.

Ya se que podría solventar este problema haciendo que la ejecución de la
select fuese dinámica del tipo:
EXECUTE sp_executesql @SQLString
donde @SQLString sería la select generada dinámicamente.

Me gustaría saber si se puede hacer una manera más elegante

Gracias y un saludo.

Gus.

Preguntas similare

Leer las respuestas

#1 Tinoco
12/07/2004 - 14:31 | Informe spam
Hol Gus.

Puedes utilizar el sp del sistema [sp_executesql], la
desventaja de este SP es el nivel de seguridad, es bajo.

DECLARE @SQLString NVARCHAR(500)

SET @SQLString = N'SELECT id_TipoUsuario, Descripcion
FROM TiposUsuarios
WHERE id_TipoUsuario in (' + @ListaIdTipoUsuario + ')'

EXECUTE sp_executesql @SQLString

Hermilson T.
MCDBA, MCSD

Hola a todos:

Estoy intentando hacer una select con un procedimiento


almacenado sobre una
tabla llamada TiposUsuarios, pero quiero pasar en un


único parámetro la
condición para la IN.

La tabla TiposUsuarios tiene el siguiente formato:
id_TipoUsuario int
Descripcion varchar(255)

y el procedimieento que quiero usar es algo así:
CREATE PROCEDURE SpSelectTiposUsuariosIN
@ListaIdTipoUsuario varchar(255)
AS
SELECT id_TipoUsuario, Descripcion
FROM TiposUsuarios
WHERE id_TipoUsuario in (@ListaIdTipoUsuario)

Y quiero llamarlo de la siguiente forma:
SpSelectTiposUsuariosIN '1,2,3,6'

El error que me da es:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
SpSelectTiposUsuariosIN, línea 4
Error de sintaxis al convertir el valor varchar '1,2,3,6'


para una columna
de tipo de datos int.

Ya se que podría solventar este problema haciendo que la


ejecución de la
select fuese dinámica del tipo:
EXECUTE sp_executesql @SQLString
donde @SQLString sería la select generada dinámicamente.

Me gustaría saber si se puede hacer una manera más


elegante

Gracias y un saludo.

Gus.
Respuesta Responder a este mensaje
#2 Miguel Egea
12/07/2004 - 15:14 | Informe spam
Alternativamente a lo que te comenta tinoco puedes revisar en portalsql.com
los artículos sobre el paso de un número variable de parámetros a sps que
básicamente construyen una tabla con esos parámetros.

Si tienes alguna dificultad nos cuentas.

Saludos
Miguel EGea
"Gustavo" escribió en el mensaje
news:
Hola a todos:

Estoy intentando hacer una select con un procedimiento almacenado sobre


una
tabla llamada TiposUsuarios, pero quiero pasar en un único parámetro la
condición para la IN.

La tabla TiposUsuarios tiene el siguiente formato:
id_TipoUsuario int
Descripcion varchar(255)

y el procedimieento que quiero usar es algo así:
CREATE PROCEDURE SpSelectTiposUsuariosIN
@ListaIdTipoUsuario varchar(255)
AS
SELECT id_TipoUsuario, Descripcion
FROM TiposUsuarios
WHERE id_TipoUsuario in (@ListaIdTipoUsuario)

Y quiero llamarlo de la siguiente forma:
SpSelectTiposUsuariosIN '1,2,3,6'

El error que me da es:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
SpSelectTiposUsuariosIN, línea 4
Error de sintaxis al convertir el valor varchar '1,2,3,6' para una columna
de tipo de datos int.

Ya se que podría solventar este problema haciendo que la ejecución de la
select fuese dinámica del tipo:
EXECUTE sp_executesql @SQLString
donde @SQLString sería la select generada dinámicamente.

Me gustaría saber si se puede hacer una manera más elegante

Gracias y un saludo.

Gus.


Respuesta Responder a este mensaje
#3 Rubén Vigón
12/07/2004 - 15:15 | Informe spam
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida