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

#1 Isaias
25/09/2007 - 18:58 | Informe spam
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.
Respuesta Responder a este mensaje
#2 Angel Lopez
25/09/2007 - 19:06 | Informe spam
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.
Respuesta Responder a este mensaje
#3 Enrique Catala Bañuls
25/09/2007 - 19:26 | Informe spam
Hola Angel, ante todo comentarte que mejor si generas la consulta t-sql
dinámica en el cliente que realiza la llamada utilizando c#, c, o el que sea.
Es una recomendación porque T-SQL no es la mejor opción para realizar sql
dinámico.

Si pese a esto, te ves forzado a realizar la consulta dinámica desde T-SQL (
insisto, evitalo si puedes ) te recomiendo que te leas el siguiente documento
donde seguro que encuentras la solución.
http://www.hayes.ch/sql/sql_dinamico.html

Un saludo.

Atentamente, Enrique Catala Bañuls


"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.
Respuesta Responder a este mensaje
#4 Alejandro Mesa
25/09/2007 - 20:26 | Informe spam
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.
Respuesta Responder a este mensaje
#5 Eduardo Castro
26/09/2007 - 03:48 | Informe spam
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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida