[firebase-br] Stored Procedures & Delphi 7
Rodrigo Schiavo
schiavor em uol.com.br
Qui Fev 10 11:03:44 -03 2005
Bom dia amigos.
Hoje comecei a trabalhar com Stored Procedures no Firebird 1.5.1 e
Delphi 7, porém algumas dúvidas surgiram aqui.
Ateh hoje sempre trabalhei com o consjunto de componentes DBExpress,
utilizando SQLQuery, DataSetProvider e ClientDataSet, agora que vou
trabalhar com Stored procedures quais componentes devo utilizar?
Tentei com o conjunto SQLStoredProc, DataSetProvider e ClientDataSet,
mas quando eu ativo o SQLStoredProc ou abro o ClientDataSet eh retornado
o erro: Cursor not returned from Query.
Abaixo segue o código da Stored Procedure.
SET TERM ^ ;
CREATE PROCEDURE CAIXAS_SALDO_FINALIZADORAS (
CAIXA SMALLINT,
MOVIMENTO DATE)
RETURNS (
FINALIZADORA SMALLINT,
SALDO DECIMAL(10,3))
AS
DECLARE VARIABLE FIN SMALLINT;
DECLARE VARIABLE CREDITO NUMERIC(10,3);
DECLARE VARIABLE DEBITO DECIMAL(10,3);
begin
-- Seleciona as finalizadoras do movimento
FOR SELECT DISTINCT(CD.FINALIZADORA)
FROM CAIXAS_DETALHES CD
WHERE ((CD.CODIGO=:CAIXA) AND (CD.DATA=:MOVIMENTO))
INTO :FIN
DO
BEGIN
-- Seleciona créditos
SELECT COALESCE(SUM(C.VALOR),0)
FROM CAIXAS_DETALHES C
WHERE ((C.CODIGO=:CAIXA) AND (C.DATA=:MOVIMENTO) AND
(C.FINALIZADORA=:FIN) AND (TIPO='C'))
INTO :CREDITO;
-- Seleciona débitos
SELECT COALESCE(SUM(C.VALOR),0)
FROM CAIXAS_DETALHES C
WHERE ((C.CODIGO=:CAIXA) AND (C.DATA=:MOVIMENTO) AND
(C.FINALIZADORA=:FIN) AND (TIPO='D'))
INTO :DEBITO;
FINALIZADORA=:FIN;
SALDO=CREDITO-DEBITO;
SUSPEND; -- Retorna registro
END
end
^
SET TERM ; ^
[ ]'s Rodrigo Schiavo
Mais detalhes sobre a lista de discussão lista