Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sp_Executesql

0 views
Skip to first unread message

José Cordero

unread,
Jun 2, 2004, 3:03:19 AM6/2/04
to
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


Maxi

unread,
Jun 2, 2004, 8:34:23 AM6/2/04
to
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" <jose.c...@gesi.es> escribió en el mensaje
news:OV7Fx%23GSE...@tk2msftngp13.phx.gbl...


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


José Cordero

unread,
Jun 2, 2004, 11:03:11 AM6/2/04
to
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" <max...@infovia.com.ar.sacame> escribió en el mensaje
news:%23A2xx3J...@TK2MSFTNGP09.phx.gbl...

Maxi

unread,
Jun 2, 2004, 11:22:50 AM6/2/04
to
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" <jose.c...@gesi.es> escribió en el mensaje

news:%231uR9KL...@TK2MSFTNGP09.phx.gbl...

Jose Mariano Alvarez (MUG)

unread,
Jun 2, 2004, 1:24:56 PM6/2/04
to
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" <max...@infovia.com.ar.sacame> wrote in message
news:OvgS7VLS...@TK2MSFTNGP09.phx.gbl...


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


José Cordero

unread,
Jun 3, 2004, 3:00:57 AM6/3/04
to
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:uUiNodMS...@tk2msftngp13.phx.gbl...

Manuel Etcheto

unread,
Jun 3, 2004, 10:53:47 PM6/3/04
to
Hola
Creo que el problema lo tienes en nocount, le estás
poniendo off en lugar de ON...

Suerte
Manuel

>-----Mensaje original-----

>.
>

0 new messages