RES: [firebase-br] Stored Procedures & Delphi 7

Rodrigo Schiavo schiavor em uol.com.br
Qui Fev 10 12:41:12 -03 2005


Obrigado Mauricio, agora soh mais uma coisa, como devo modificar esta 
Stored Procedure para poder utilzar seu retorno no ClientDataSet?


Mauricio Torres Fernandes escreveu:

>A estrutura de acesso está correta, mas a forma como você está executando a
>procedure pode estar errada. Com Stored Procedures que não retornam
>datasets, você não pode usar "ClientDataSet1.Open" ou "ClientDataSet1.Active
>:= True". Use "ClientDataSet.Execute" e os valores serão retornados em
>parâmetros, como o exemplo abaixo:
>
>...
>ClientDataSet1.Execute;
>iFinalizadora :=
>ClientDataSet1.Params.ParamByName('FINALIZADORA').AsInteger;
>fSaldo := ClientDataSet1.Params.ParamByName('SALDO').AsFloat;
>...
>
>Espero ter ajudado,
>
>
>Mauricio.
>
>  
>
>>-----Mensagem original-----
>>De: lista-bounces em firebase.com.br 
>>[mailto:lista-bounces em firebase.com.br] Em nome de Rodrigo Schiavo
>>Enviada em: quinta-feira, 10 de fevereiro de 2005 11:04
>>Para: FireBase
>>Assunto: [firebase-br] Stored Procedures & Delphi 7
>>
>>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
>>    
>>
>
>
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>  
>




Mais detalhes sobre a lista de discussão lista