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
>
>
>
>

Responder a