No creo que te funcione. Creo que habria que complicarlo demasiado para aceptar conjuntos de valores. En ese caso usaria probablemente XML pero creo que a la larga el costo en CPU es parecido.
Olvidate del costo de la recompilacion porque ese query es trivial. Saludos -- -------------------------------- Atte. Ing. Jose Mariano Alvarez SQL Total Consulting On 10/15/07, Alejandro A. ALEKSICH <[EMAIL PROTECTED]> wrote: > > La idea es parametrizarlo. Mejor dicho, y veremos si estoy en lo > correcto....... Parametrizado permitrirá almacenar el plan en el cahé para > un ejecución más rápida en las proximas llamadas. > > -----Mensaje original----- > De: Diego Jancic [mailto:[EMAIL PROTECTED] > Enviado el: lunes, 15 de octubre de 2007 14:52 > Para: [EMAIL PROTECTED] > Asunto: [dbms] RE: [dbms] Sql dinámico en sp > > Hola, > No podes parametrizar lo que esta dentro del IN... > Tenes que concatenar, algo asi: > > 'select ..... where xyz IN (' + @valores_separados_por_coma + ')' > > Saludos!, > Diego > > -----Original Message----- > From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Alejandro A. > ALEKSICH > Sent: Lunes, 15 de Octubre de 2007 02:10 p.m. > To: Diego Jancic > Subject: [dbms] Sql dinámico en sp > > Disculpen lo tonta de la pregunta pero no veo el error...... > > Tengo la siguiente sentencia que recupera registros de la base de datos: > SELECT tTipoLegajo, nNroLegajo AS Legajo, tNroCaja AS Caja FROM Afiliados > WHERE tNroCaja IN ('d3090' ,' d3089' ) GROUP BY tTipoLegajo , nNroLegajo, > tNroCaja ORDER BY tNroCaja, nNroLegajo > > Ahora quiero hacer un sp que lo haga mediante sql dinámico, para lo cual > ejecuto ésto en al Analizador de Consultas > Pero no recupera nada... > declare @tDetallado2 varchar(4000) > declare @sql Nvarchar(4000) > DECLARE @tDefinicion AS NVARCHAR(4000) > > SET @tDetallado2 = 'd3090,d3089' > SET @tDetallado2 = quotename(@tDetallado2, '''') > SET @tDetallado2 = REPLACE (@tDetallado2, ',' , ''', ''') > SET @tDefinicion = N'@tDetalle Varchar(4000)' > SET @sql = N'SELECT tTipoLegajo, nNroLegajo AS Legajo, > tNroCaja AS Caja FROM Afiliados > WHERE tNroCaja IN (@tDetalle) GROUP BY tTipoLegajo , > nNroLegajo, tNroCaja ORDER BY tNroCaja, nNroLegajo' > > exec sp_executesql @sql , @tDefinicion, > @[EMAIL PROTECTED] > > > Si funciona: > SET @tDetallado2 = 'd3090' > SET @tDefinicion = N'@tDetalle Varchar(4000)' > SET @sql = N'SELECT tTipoLegajo, nNroLegajo AS Legajo, > tNroCaja AS Caja FROM Afiliados > WHERE tNroCaja IN (@tDetalle) GROUP BY tTipoLegajo , > nNroLegajo, tNroCaja ORDER BY tNroCaja, nNroLegajo' > > exec sp_executesql @sql , @tDefinicion, > @[EMAIL PROTECTED] > > ¿qué esta mal? > Gracias.- > > > > > > __________ NOD32 2591 (20071014) Information __________ > > This message was checked by NOD32 antivirus system. > http://www.eset.com > > > >
