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

[SOLUCIONADO] Contar registros en SP y asignar a parámetro de salida

Estas en el tema de Contar registros en SP y asignar a parámetro de salida en el foro de SQL Server en Foros del Web. Buenas gente, tengo el siguiente SP: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original ALTER PROCEDURE [ dbo ] . [ productos_cat ]     @ref1 nvarchar ...
  #1 (permalink)  
Antiguo 08/02/2013, 14:04
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Contar registros en SP y asignar a parámetro de salida

Buenas gente, tengo el siguiente SP:


Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[productos_cat]
  2.     @ref1 nvarchar(50) = NULL,
  3.     @ref2 nvarchar(50) = NULL,
  4.     @ref3 nvarchar(50) = NULL,
  5.     @ref4 nvarchar(50) = NULL,
  6.     @ref5 nvarchar(50) = NULL,
  7.     @ref6 nvarchar(50) = NULL,
  8.     @PageNumber INT
  9.    
  10. AS
  11. BEGIN
  12.  
  13.    SET NOCOUNT ON;
  14.  
  15.     SELECT RXFAM1, RXFAM2, RXFAM3, RXFAM4, RXFAM5, RXFAM6, RXRESC, RXORDE, CPA01, CPA02, CPA03, PSPREC, CPMIS1
  16.     FROM
  17.     (SELECT RXFAM1, RXFAM2, RXFAM3, RXFAM4, RXFAM5, RXFAM6, RXRESC, RXORDE, CPA01, CPA02, CPA03, PSPREC, CPMIS1, ROW_NUMBER() OVER (ORDER BY RXORDE ASC)
  18.     AS Recursos
  19.     FROM dbo.Recursos WHERE RXFAM1 = COALESCE(NULLIF(@ref1, ''), RXFAM2) AND RXFAM2 = COALESCE(NULLIF(@ref2, ''), RXFAM2) AND RXFAM3 = COALESCE(NULLIF(@ref3, ''), RXFAM3) AND RXFAM4 = COALESCE(NULLIF(@ref4, ''), RXFAM4) AND RXFAM5 = COALESCE(NULLIF(@ref5, ''), RXFAM5) AND RXFAM6 = COALESCE(NULLIF(@ref6, ''), RXFAM6))
  20.     AS Resultados
  21.     WHERE Recursos BETWEEN 8 * @PageNumber  + 1 AND 8 * (@PageNumber +
  22.  
  23. END

Y lo ejecuto en PHP mediante:

Código PHP:
Ver original
  1. $sql = "EXEC dbo.productos_cat @ref1 = '$ref1', @ref2 = '$ref2', @ref3 = '$ref3', @ref4 = '$ref4', @ref5 = '$ref5', @ref6 = '$ref6', @PageNumber = '$pag'";

Necesito contar los registros resultantes de la consulta anterior, y colocar ese numero total de registros en una variable de salida para recuperarla en PHP.
Pude contar los registros utilizando SELECT COUNT (tal vez seria mejor aprovechar el ROW_NUMBER() de la consulta?) pero nunca pude lograr darle salida a la variable y recuperarla en ejecucion del SP que hago en PHP.

Alguna idea, que puedo estar haciendo mal?
  #2 (permalink)  
Antiguo 08/02/2013, 14:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Contar registros en SP y asignar a parámetro de salida

cuando sacas parametros con un procedure se usa la sentencia output algo asi:

Código SQL:
Ver original
  1. ALTER PROCEDURE testme @INPUT  VARCHAR(10),
  2.                        @output VARCHAR(20) output
  3. AS
  4.   BEGIN
  5.       IF @INPUT >= '1'
  6.         BEGIN
  7.             SET @output = 'i am back';
  8.  
  9.             RETURN;
  10.         END
  11.   END
  12.  
  13. DECLARE @GET VARCHAR(20);
  14.  
  15. EXEC testme
  16.   '1',
  17.   @GET output
  18.  
  19. SELECT @GET

sacado de:

http://stackoverflow.com/questions/1...tput-parameter

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/02/2013, 09:09
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Contar registros en SP y asignar a parámetro de salida

Cita:
Iniciado por Libras Ver Mensaje
cuando sacas parametros con un procedure se usa la sentencia output algo asi:

Código SQL:
Ver original
  1. ALTER PROCEDURE testme @INPUT  VARCHAR(10),
  2.                        @output VARCHAR(20) output
  3. AS
  4.   BEGIN
  5.       IF @INPUT >= '1'
  6.         BEGIN
  7.             SET @output = 'i am back';
  8.  
  9.             RETURN;
  10.         END
  11.   END
  12.  
  13. DECLARE @GET VARCHAR(20);
  14.  
  15. EXEC testme
  16.   '1',
  17.   @GET output
  18.  
  19. SELECT @GET

sacado de:

http://stackoverflow.com/questions/1...tput-parameter

saludos!
Efectivamente Libras, una vez + gracias...

Etiquetas: registro, registros, salida, select
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 11:08.