Ayuda con Query

01/11/2005 - 01:04 por Manuel Bernal | Informe spam
Hola Grupo, la intension de escribir es la siguiente tengo un Sp al cual le
mando un parametro de tipo String para incluirlo en un clausula IN de un
consulta pero como le mando el parametro de tipo String y el campo In es
numerico me marca un error de tipo de dato, para solucionar el problema hice
algo como esto
imaginemos que esta es la variables del SP
@IdProceso = '10, 6, 4, 9, 3, 16, 12, 11, 14, 13'

y este el codigo que ejecuta
SET @Query = 'SELECT IdIndicador, IdProceso ' +
'INTO ##TemTemporal02 ' +
'FROM RecDat056 ' +
'WHERE Estatus = 0 AND ' +
'IdProceso IN (' + RTRIM(@IdProceso) + ')'

EXEC(@Query)

asi no me marca error pero tuve que poner el resultado en una ##tmp(Global)
pero esto funciona para un usuario, pero si entran dos usuarios me marcar
error de que la tabla ya existe esto es para una pagina WEb ASP.NET alguien
podria ayudarme a encontrar una mejor forma de hacerlo utilzando una temporal
normal(#) o no se una función de usuario o en su defecto como hacer para la
cadena de datos de la clausula IN no marque error.

Saludos y Gracias


L.I. Manuel Bernal

Preguntas similare

Leer las respuestas

#1 Maxi \(MVP SQL\)
01/11/2005 - 01:34 | Informe spam
Estimado, si quieres hacer esto mismo te recomiendo este articulo muy
interesante:

http://www.sqlteam.com/item.asp?ItemID%6


-
[MS-MVP SQL SERVER]

"Manuel Bernal" escribió en el
mensaje news:
Hola Grupo, la intension de escribir es la siguiente tengo un Sp al cual
le
mando un parametro de tipo String para incluirlo en un clausula IN de un
consulta pero como le mando el parametro de tipo String y el campo In es
numerico me marca un error de tipo de dato, para solucionar el problema
hice
algo como esto
imaginemos que esta es la variables del SP
@IdProceso = '10, 6, 4, 9, 3, 16, 12, 11, 14, 13'

y este el codigo que ejecuta
SET @Query = 'SELECT IdIndicador, IdProceso ' +
'INTO ##TemTemporal02 ' +
'FROM RecDat056 ' +
'WHERE Estatus = 0 AND ' +
'IdProceso IN (' + RTRIM(@IdProceso) + ')'

EXEC(@Query)

asi no me marca error pero tuve que poner el resultado en una
##tmp(Global)
pero esto funciona para un usuario, pero si entran dos usuarios me marcar
error de que la tabla ya existe esto es para una pagina WEb ASP.NET
alguien
podria ayudarme a encontrar una mejor forma de hacerlo utilzando una
temporal
normal(#) o no se una función de usuario o en su defecto como hacer para
la
cadena de datos de la clausula IN no marque error.

Saludos y Gracias


L.I. Manuel Bernal
Respuesta Responder a este mensaje
#2 Alejandro Mesa
01/11/2005 - 03:30 | Informe spam
Manuel Bernal,

Por que quieres poner el resultado en una tabla temporal?

Puedes crear una funcion para convertir la lista en una tabla y usarla en un
join o como fuente del operador "in". Puedes encontrar la funcion en la
pagina web de Erland Sommarskog.

Arrays and Lists in SQL Server
http://www.sommarskog.se/arrays-in-sql.html

Ejemplo:

declare @IdProceso varchar(2000)

set @IdProceso = '10,6,4,9,3,16,12,11,14,13'

SELECT IdIndicador, IdProceso
FROM RecDat056
WHERE Estatus = 0 AND IdProceso IN (
select value from inline_split_me(@IdProceso )
)


AMB

"Manuel Bernal" wrote:

Hola Grupo, la intension de escribir es la siguiente tengo un Sp al cual le
mando un parametro de tipo String para incluirlo en un clausula IN de un
consulta pero como le mando el parametro de tipo String y el campo In es
numerico me marca un error de tipo de dato, para solucionar el problema hice
algo como esto
imaginemos que esta es la variables del SP
@IdProceso = '10, 6, 4, 9, 3, 16, 12, 11, 14, 13'

y este el codigo que ejecuta
SET @Query = 'SELECT IdIndicador, IdProceso ' +
'INTO ##TemTemporal02 ' +
'FROM RecDat056 ' +
'WHERE Estatus = 0 AND ' +
'IdProceso IN (' + RTRIM(@IdProceso) + ')'

EXEC(@Query)

asi no me marca error pero tuve que poner el resultado en una ##tmp(Global)
pero esto funciona para un usuario, pero si entran dos usuarios me marcar
error de que la tabla ya existe esto es para una pagina WEb ASP.NET alguien
podria ayudarme a encontrar una mejor forma de hacerlo utilzando una temporal
normal(#) o no se una función de usuario o en su defecto como hacer para la
cadena de datos de la clausula IN no marque error.

Saludos y Gracias


L.I. Manuel Bernal
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida