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

#1 Maxi
02/06/2004 - 14:34 | Informe spam
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%
Mostrar la cita
el
Mostrar la cita
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
#2 José Cordero
02/06/2004 - 17:03 | Informe spam
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:%
Mostrar la cita
desde
Mostrar la cita
#3 Maxi
02/06/2004 - 17:22 | Informe spam
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:%
Mostrar la cita
ON
Mostrar la cita
is
Mostrar la cita
or
Mostrar la cita
+@NTabla
Mostrar la cita
or
Mostrar la cita
postiar
Mostrar la cita
un
Mostrar la cita
el
Mostrar la cita
@ID_Seccion,
Mostrar la cita
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
#4 Jose Mariano Alvarez \(MUG\)
02/06/2004 - 19:24 | Informe spam
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:
Mostrar la cita
+
Mostrar la cita
pasan
Mostrar la cita
desde
Mostrar la cita
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
#5 José Cordero
03/06/2004 - 09:00 | Informe spam
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:
Mostrar la cita
de
Mostrar la cita
variable
Mostrar la cita
VistaReglaGrupos
Mostrar la cita
(VistaReglaGrupos.ID_SeccionRadiologica
Mostrar la cita
null
Mostrar la cita
is
Mostrar la cita
@NTabla
Mostrar la cita
or
Mostrar la cita
null
Mostrar la cita
@ID_Seccion,
Mostrar la cita
de
Mostrar la cita
hago
Mostrar la cita
Ads by Google
Search Busqueda sugerida