sp_Executesql

02/06/2004 - 09:03 por José Cordero | Informe spam
Hola a todos,
tengo un problema con la función sp_executesql, la utilizo dentro de un
procedimiento almacenado para ejecutar una query a la que se le pasan
parametros, el problema esta en que si ejecuto el procedimiento desde el
analizador de consultas funciona perfectamente, pero cuando lo hago desde el
Visual studio devuelve al tabla siempre vacia.
Hay va parte del código.

exec sp_Executesql @Query,
N'@ID_Seccion int, @ID_Region int, @ID_Procedimiento int', @ID_Seccion,
@ID_Region, @ID_Procedimiento
GO

a ver si alguien me puede dar una solución, gracias

Preguntas similare

Leer las respuestas

#6 Manuel Etcheto
04/06/2004 - 04:53 | Informe spam
Hola
Creo que el problema lo tienes en nocount, le estás
poniendo off en lugar de ON...

Suerte
Manuel

Hola, gracias a todos por responder. Cambie el nombre de


las variables pero
nada sigue igual. El usuario es el mismo y los permisos


estan correctos, la
única diferencia es que lo ejecuto desde el VS o el


anlizador de consultas.
Mi VS es el 2003 y el framework el 1.1.
Aunque creo que Maxi tiene razon y hare 8 stores, la


razon por la que la
hacia en uno aparte de trabajar menos :-) es que no me


gusta tener tantos
procedimientos almacenados en la BD. De todas maneras el


error me intriga, a
ver si alguien me puede dar una explicación.
Saludos

"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* *


mug.org.ar> escribió
en el mensaje


news:
Sp_ExecuteSQL se usa para tener planes de ejecución en




la cache a partir
de
secuencias dinámicas, algo asi como Stored procedures




dinámicos. No revise
muy en detalle el Stored pero en este caso parece que




lo usa para eso.

Sin embargo, no veo el problema que plantea.
Yo distinguiría las variables internas de las externas




al SP_ExecuteSQL
cambiándole el nombre a para ver si no hay otra cosa.
Por ejemplo el prefijo @ID lo cambiaria por @P para el




codigo de la
variable
@query

El exec te quedaria por ejemplo

execute sp_Executesql @Query,
N'@P_Seccion int, @P_Region int, @P_Procedimiento




int', @ID_Seccion,
@ID_Region,
@ID_Procedimiento


Estas usando el mismo usuario?
Los permisos estan bien?
Que VS estas usando?


Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


"Maxi" wrote in message
news:
> Hola, bueno no comparto tu idea :(, no se deberia




tratar de alivianar el
> trabajo del desarrollador sino del motor de BDD.
> En tu caso es preferible hacer 8 o n procedimientos




que hacerlo con
> SqlDinamico, este ultimo es super inseguro y




lento,lento.
>
> evisate este articulo y luego me comentas :-)
>
> http://www.algonet.se/~sommar/dynamic_sql.html
>
> Bye
>
>
> Salu2
>
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
>
> Nunca consideres el estudio como una obligación sino




como
> una oportunidad para penetrar en el bello y




maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "José Cordero" escribió en el




mensaje
> news:%
> > Hola Maxi,
> > uso sqldinamico para no tener que hacer 8




procedimientos practicamente
> > iguales, ahí va el código completo, gracias.
> >
> > CREATE PROCEDURE [dbo].[FindGruposExploracion]
> > (@ID_Seccion int,
> > @ID_Region int,
> > @ID_Procedimiento int,
> > @NTabla varchar (200)
> > )
> > AS
> >
> > set nocount off
> >
> > DECLARE @Query NVARCHAR (2000)
> >
> >
> > set @Query = ' SELECT * FROM ' + @Ntabla + ' INNER




JOIN
VistaReglaGrupos
> ON
> > VistaReglaGrupos.ID_Agrupacion = ' + @NTabla




+ '.ID_Agrupacion' +
> > ' WHERE (@ID_Seccion is null or


(VistaReglaGrupos.ID_SeccionRadiologica
> is
> > null or VistaReglaGrupos.ID_SeccionRadiologica =




@ID_Seccion))
> > and (@ID_Region is null or




(VistaReglaGrupos.ID_RegionAnatomica is
null
> or
> > VistaReglaGrupos.ID_RegionAnatomica = @ID_Region))
> > and (@ID_Procedimiento is null or




(VistaReglaGrupos.ID_Procedimiento
is
> > null or VistaReglaGrupos.ID_Procedimiento =




@ID_Procedimiento)) and
> > VistaReglaGrupos.TipoRegla = ''' + 'Inclusión'




+ ''' and ' +
@NTabla
+
> > '.ID_Agrupacion not in (Select ' +




@NTabla+ '.ID_Agrupacion from '
> +@NTabla
> > + ' INNER JOIN VistaReglaGrupos on
> > VistaReglaGrupos.ID_Agrupacion = ' + @NTabla




+ '.ID_Agrupacion WHERE
> > (@ID_Seccion is null or
> > (VistaReglaGrupos.ID_SeccionRadiologica is null or
> > VistaReglaGrupos.ID_SeccionRadiologica =




@ID_Seccion))
> > and
> > (@ID_Region is null or




(VistaReglaGrupos.ID_RegionAnatomica is null
or
> > VistaReglaGrupos.ID_RegionAnatomica = @ID_Region))
> > and
> > (@ID_Procedimiento is null or




(VistaReglaGrupos.ID_Procedimiento is
null
> or
> > VistaReglaGrupos.ID_Procedimiento =




@ID_Procedimiento)) and
> > VistaReglaGrupos.TipoRegla = ''' + 'Exclusión'




+ ''')'
> >
> >
> > print @Query
> >
> > execute sp_Executesql @Query,
> > N'@ID_Seccion int, @ID_Region int,




@ID_Procedimiento int',
@ID_Seccion,
> > @ID_Region, @ID_Procedimiento
> > GO
> >
> >
> > "Maxi" escribió en




el mensaje
> > news:%
> > > Hola, primero yo me preguntaria poque usas




SqlDinamico no? podrias
> postiar
> > > que hace ese SqlDinamico?
> > >
> > >
> > > Salu2

> > > Maxi
> > > Buenos Aires - Argentina
> > > Desarrollador Microsoft 3 Estrellas .NET

> > > Nunca consideres el estudio como una obligación




sino como
> > > una oportunidad para penetrar en el bello y




maravillosos
> > > mundo del saber.
> > > - Albert Einstein
> > >
> > >
> > >
> > > "José Cordero" escribió en




el mensaje
> > > news:OV7Fx%
> > > > Hola a todos,
> > > > tengo un problema con la función sp_executesql,




la utilizo dentro
de
> un
> > > > procedimiento almacenado para ejecutar una




query a la que se le
pasan
> > > > parametros, el problema esta en que si ejecuto




el procedimiento
desde
> el
> > > > analizador de consultas funciona perfectamente,




pero cuando lo
hago
> > desde
> > > el
> > > > Visual studio devuelve al tabla siempre vacia.
> > > > Hay va parte del código.
> > > >
> > > > exec sp_Executesql @Query,
> > > > N'@ID_Seccion int, @ID_Region int,




@ID_Procedimiento int',
> @ID_Seccion,
> > > > @ID_Region, @ID_Procedimiento
> > > > GO
> > > >
> > > > a ver si alguien me puede dar una solución,




gracias
> > > >
> > > >
> > >
> > >
> > >
> > > Outgoing mail is certified Virus Free.
> > > Checked by AVG anti-virus system




(http://www.grisoft.com).
> > > Version: 6.0.688 / Virus Database: 449 - Release




Date: 18/05/2004
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system




(http://www.grisoft.com).
> Version: 6.0.688 / Virus Database: 449 - Release




Date: 18/05/2004
>
>



Revisado por AVG

Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.693 / Virus Database: 454 - Release Date:




31/05/2004






.

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