[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