Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿'Storeprocedure que devuelva registros? (https://www.clubdelphi.com/foros/showthread.php?t=85230)

JXJ 18-02-2014 17:39:29

¿'Storeprocedure que devuelva registros?
 
tengo una duda

con este storeprocedure con una consulta

Código SQL [-]

SET TERM ^ ;

CREATE PROCEDURE TABLAS (
 FECHA INTEGER)
 RETURNS
 (
 REGVIEW    INTEGER
 )
AS 
declare variable CONTADOR integer;

BEGIN
  
      CONTADOR  = 0;
      
 
select count(folios) from facturas where fecha = :FECHA
INTO :CONTADOR ;  
  

END^

SET TERM ; ^
Se procesa la informacion bien. del select obtengo un valor
pero tambien quiero que se pueda visualizar el resultado

pense que con esto funcionaria peor no se deja

Código SQL [-]

SET TERM ^ ;

CREATE PROCEDURE TABLAS (
 FECHA INTEGER)
 RETURNS
 (
 REGVIEW    INTEGER
 )
AS 
declare variable CONTADOR integer;

BEGIN
  
      CONTADOR  = 0;
      
 
select count(folios) from facturas where fecha = :FECHA
INTO :CONTADOR,  :REGVIEW ;  
  

END^

SET TERM ; ^
¿
se puede hacer lo que pretendo o forzosamente tengo que hacer otra consulta y agregar el valor de la nueva consulta
y no puedo reutilizarlo.??

ecfisa 18-02-2014 19:08:13

Hola JXJ.

No se si entendí bién la situación, pero si deseas que el SP te devuelva la cantidad de registros de una tabla cuyo campo 'FECHA' sea igual a la enviada como argumento, un modo puede ser como en el ejemplo siguiente:

Procedimiento almacenado:
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_TABLAS (DATE_IN VARCHAR(10))
RETURNS (RESULT INTEGER)
AS
BEGIN
  SELECT COUNT(ID) FROM FACTURAS
  WHERE FECHA = CAST(:DATE_IN AS DATE)
  INTO :RESULT;
  SUSPEND;
END^

SET TERM ; ^

Consulta:
Código SQL [-]
SELECT RESULT FROM SP_TABLAS('15.01.2014')

Saludos :).

hoyosfelix 21-02-2014 14:03:53

Respuesta a: ¿'Storeprocedure que devuelva registros?
 
Hola JXJ..

Vamos a comentar tu procedure..


Código SQL [-]
SET TERM ^ ; 
CREATE PROCEDURE TABLAS ( FECHA INTEGER )  --Aqui sería mejor que FECHA sea tipo DATE, suponiendo que facturas.fecha sea date...  
RETURNS( REGVIEW INTEGER ) 
AS  declare variable CONTADOR integer;  --Esta variable es innecesaria... 
BEGIN 
  CONTADOR  = 0;  --Puede ser directamente REGVIEW = 0; 
  select count(folios) 
    from facturas 
    where fecha = :FECHA 
  INTO :CONTADOR ;  -- se puede almacenar ya directamente a REGVIEW   
  SUSPEND; --Añadir esta línea para devolver la variable de salida REGVIEW; 
END^ 
SET TERM ; ^
Espero sea de ayuda.

Saludos cordiales.


La franja horaria es GMT +2. Ahora son las 22:39:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi