Store Procedure

25/09/2007 - 17:56 por Angel Lopez | Informe spam
Buen día a todos tengo un problema, espero que alguien me pueda ayudar.
Tengo el siguiente query

Declare @Cadena nvarchar(500)
Set @Cadena = '(dbo.Mon_Niño.Id_Pda = 10 Or dbo.Mon_Niño.Id_Pda = 7)'

Select dbo.Mon_Niño.Id_Pda, dbo.Mon_Niño.Id_Niño, dbo.Cat_Rangos.RangoI,
dbo.Cat_Rangos.RangoS,
dbo.Cat_Rangos.Descripcion,
YEAR(GETDATE()) - YEAR(dbo.Mon_Niño.FEC_Nacimiento) AS Edad,
Sexo = CASE dbo.Mon_Niño.BAN_Sexo WHEN 0 THEN 'Masculino' WHEN 1 THEN
'Femenino' END
Into #tmpGral
From dbo.Mon_Niño INNER JOIN
dbo.Cat_Rangos ON YEAR(GETDATE()) - YEAR(dbo.Mon_Niño.FEC_Nacimiento)

= dbo.Cat_Rangos.RangoI


AND YEAR(GETDATE()) - YEAR(dbo.Mon_Niño.FEC_Nacimiento) <=
dbo.Cat_Rangos.RangoS
Where @Cadena
Order By dbo.Mon_Niño.Id_Pda, dbo.Mon_Niño.Id_Niño

En el WHERE pretendo insertar el valor de @Cadena, obviamente no me reconoce
la sentencia, como puedo decirle que coloque ese valor en el Where.

Agradeceré su valiosa ayuda.

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
26/09/2007 - 17:20 | Informe spam
Hola Eduardo,

El SQL dinámico no es recomendado, si puedes realiza mejor ese código de C#
o VB.NET



Se conoce como SQL Dinamico a la accion de armar una sentencia de forma
dinamica, evaluando expresiones y concatenando partes para lograr la
sentencia final, no importa si lo haces en el lado del servidor o en el lado
del cliente (como recomiendas). Yo preferiblemente prefiero hacerlo en el
lado del servidor si es que no puedo evitar el uso de SQL dinamico.

AMB

"Eduardo Castro" wrote:

El SQL dinámico no es recomendado, si puedes realiza mejor ese código de C#
o VB.NET

Saludos,

Eduardo Castro - MVP
http://ecastrom.blogspot.com


"Alejandro Mesa" wrote in message
news:
> Angel,
>
> Cual version de SQL Server estas usando?
>
> Si usas 2005, entonces usa NVARCHAR(MAX) para armar la consulta.
>
>
> AMB
>
> "Angel Lopez" wrote:
>
>> Gracias Isaias por responder pero ya lo hice con un query dinámico, el
>> problema es que es tan grande el Store Procedure que corta parte del
>> mismo,
>> por eso decidí hacerlo de otra forma, pero tengo ese problema dentro del
>> WHERE.
>>
>>
>> "Isaias" wrote:
>>
>> > Angel
>> >
>> > Requieres de query dinamico, con sus pros-y-contras.
>> >
>> > DECLARE @SQLString NVARCHAR(1000)
>> > DECLARE @Tabla sysname
>> >
>> > SET @Tabla = 'CLIENTE'
>> > SET @SQLString = N'SELECT * FROM '+@Tabla
>> > EXECUTE SP_EXECUTESQL @SQLString
>> > Saludos
>> > IIslas
>> >
>> >
>> > "Angel Lopez" wrote:
>> >
>> > > Buen día a todos tengo un problema, espero que alguien me pueda
>> > > ayudar.
>> > > Tengo el siguiente query
>> > >
>> > > Declare @Cadena nvarchar(500)
>> > > Set @Cadena = '(dbo.Mon_Niño.Id_Pda = 10 Or dbo.Mon_Niño.Id_Pda = 7)'
>> > >
>> > > Select dbo.Mon_Niño.Id_Pda, dbo.Mon_Niño.Id_Niño,
>> > > dbo.Cat_Rangos.RangoI,
>> > > dbo.Cat_Rangos.RangoS,
>> > > dbo.Cat_Rangos.Descripcion,
>> > > YEAR(GETDATE()) - YEAR(dbo.Mon_Niño.FEC_Nacimiento) AS Edad,
>> > > Sexo = CASE dbo.Mon_Niño.BAN_Sexo WHEN 0 THEN 'Masculino' WHEN
>> > > 1 THEN
>> > > 'Femenino' END
>> > > Into #tmpGral
>> > > From dbo.Mon_Niño INNER JOIN
>> > > dbo.Cat_Rangos ON YEAR(GETDATE()) -
>> > > YEAR(dbo.Mon_Niño.FEC_Nacimiento)
>> > > >= dbo.Cat_Rangos.RangoI
>> > > AND YEAR(GETDATE()) - YEAR(dbo.Mon_Niño.FEC_Nacimiento) <> >> > > dbo.Cat_Rangos.RangoS
>> > > Where @Cadena
>> > > Order By dbo.Mon_Niño.Id_Pda, dbo.Mon_Niño.Id_Niño
>> > >
>> > > En el WHERE pretendo insertar el valor de @Cadena, obviamente no me
>> > > reconoce
>> > > la sentencia, como puedo decirle que coloque ese valor en el Where.
>> > >
>> > > Agradeceré su valiosa ayuda.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida