Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con SP "Dinamico"

Estas en el tema de Problema con SP "Dinamico" en el foro de SQL Server en Foros del Web. Hola buenos días, Verán, tengo un SP el cual le paso una serie de parametros, entre ellos uno de salida pNumElementos para recibir el numero ...
  #1 (permalink)  
Antiguo 24/09/2007, 02:09
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Problema con SP "Dinamico"

Hola buenos días,

Verán, tengo un SP el cual le paso una serie de parametros, entre ellos uno de salida pNumElementos para recibir el numero de registros que tengo.

Bien, el problema es que en la empresa, dentro de este SP, creamos la sentencia en modo texto @sql = @sql + N'mas consulta' .... y despues al final de nuestro SP, llamamos a otro para que solo se nos devuelva los 5 registros primeros (Basandose en mas parametros que mandamos antes)

La estructura es algo asi:
Código:
ALTER MI_SP parametro1, parametro2, ..., pNumElementos INT OUTPUT
AS
DECLARE @sql NVARCHAR(4000)
SET @SQL = N'......................'
SET @SQL = @SQL + N'.............'

EXEC OTRO_SP parametro1, parametro2, ...., @SQL
Bien, esto me devuelve 5 registros, sin embargo, si ejecuto este SQL antes, sin usar ese SP, y establezco: SELECT @numElementos = @@ROWCOUNT, me devuelve el numero de registros existentes realmente.

Perfecto, pero claro, tengo que ejecutar ese SP tb, por lo que me devuelve dos consultas el Procedimiento almacenado.

Mi pregunta es, podría saber que numero de registros tiene la consulta @SQL antes de ejecutar el "OTRO_SP" y que no suponga devolverme todos los registros ?

Hacer algo asi:
Código:
ALTER MI_SP parametro1, parametro2, ..., pNumElementos INT OUTPUT
AS
DECLARE @sql NVARCHAR(4000)
SET @SQL = N'......................'
SET @SQL = @SQL + N'.............'

EXEC sp_executesql @SQL
SET @pNumElementos = @@ROWCOUNT

EXEC OTRO_SP parametro1, parametro2, ...., @SQL
Pero sin que se me devuelva los resultados de "EXEC sp_executesql @SQL"
__________________
Charlie.
  #2 (permalink)  
Antiguo 24/09/2007, 13:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Problema con SP "Dinamico"

Deberias manejar tu variable en tu CONSULTA dinamica, aca te pongo un ejemplo:

Cita:
DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

/* Build the SQL string once. */
SET @SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* Specify the parameter format once. */
SET @ParmDefinition = N'@level tinyint'

/* Execute the string with the first parameter value. */
SET @IntVariable = 35
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
/* Execute the same string with the second parameter value. */
SET @IntVariable = 32
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@level = @IntVariable
  #3 (permalink)  
Antiguo 25/09/2007, 04:13
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Re: Problema con SP "Dinamico"

Código:
DECLARE @SQL AS NVARCHAR(4000)
SET @SQL = @SQL + N'SELECT @MIVARIABLE = COUNT(COD_CCIA) FROM SI_PAGOS'


DECLARE @VARIABLE NVARCHAR(500)
SET @VARIABLE = N'@MIVARIABLE AS INT'

EXEC SP_EXECUTESQL @SQL, @VARIABLE, 0
PRINT @VARIABLE

Eso esta muy bien amigo, pero cuando hago un print de @ParmDefinition me muestra EL LITERAL en vez del valor:
@MIVARIABLE AS INT
__________________
Charlie.
  #4 (permalink)  
Antiguo 25/09/2007, 06:51
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Busqueda Obteniendo variables de salida desde un query dinamico.

Código:
DECLARE @MIVARIABLEX as int

EXEC SP_EXECUTESQL N'SELECT @MIVARIABLE = COUNT(COD_CCIA) FROM SI_PAGOS'
                  ,N'@MIVARIABLE AS INT OUTPUT'
                  ,@MIVARIABLE = @MIVARIABLEX OUTPUT

PRINT @MIVARIABLEX
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Última edición por Andres95; 25/09/2007 a las 06:52 Razón: Ajuste del titulo para mejorar busqueda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:34.