PDA

Ver la Versión Completa : ¿'Storeprocedure que devuelva registros?


JXJ
18-02-2014, 17:39:29
tengo una duda

con este storeprocedure con una consulta



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



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:

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:
SELECT RESULT FROM SP_TABLAS('15.01.2014')

Saludos :).

hoyosfelix
21-02-2014, 14:03:53
Hola JXJ..

Vamos a comentar tu procedure..


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.