[firebase-br] Retorno de procedure do firebird

Marco Antonio Albuquerque marcksystem em hotmail.com
Ter Abr 17 10:19:43 -03 2007


CREATE PROCEDURE SP_VALOR_CONSULTA (
    VID_TAB000 INTEGER,
    VID_CAD005 INTEGER,
    VID_TAB001 INTEGER,
    VCODIGO INTEGER)
RETURNS (
    VALOR NUMERIC(15,2))
AS
DECLARE VARIABLE VLR_CALCULO NUMERIC(15,2);
DECLARE VARIABLE SMOEDA CHAR(1);
DECLARE VARIABLE STIPO CHAR(1);
DECLARE VARIABLE QTDE_CH INTEGER;
BEGIN
  SELECT C15_TP_MOEDA
    FROM TBCAD015
   WHERE ID_CAD005 = :VID_CAD005
     AND ID_TAB000 = :VID_TAB000
     AND ID_TAB001 = :VID_TAB001
     AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
    INTO :SMOEDA ;

  IF (:SMOEDA = 'R') THEN
  BEGIN
     SELECT C15_ACRESDESC
       FROM TBCAD015
      WHERE ID_CAD005 = :VID_CAD005
        AND ID_TAB000 = :VID_TAB000
        AND ID_TAB001 = :VID_TAB001
        AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
       INTO :STIPO ;

     IF (:STIPO = 'A') THEN
     BEGIN
        SELECT C15_VALOR + C15_VLRACRESCDESC
          FROM TBCAD015
         WHERE ID_CAD005 = :VID_CAD005
           AND ID_TAB000 = :VID_TAB000
           AND ID_TAB001 = :VID_TAB001
           AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
          INTO :VALOR ;
     END
        ELSE
        IF (:STIPO = 'D') THEN
        BEGIN
           SELECT C15_VALOR - C15_VLRACRESCDESC
             FROM TBCAD015
            WHERE ID_CAD005 = :VID_CAD005
              AND ID_TAB000 = :VID_TAB000
              AND ID_TAB001 = :VID_TAB001
              AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
             INTO :VALOR ;
        END
        ELSE
        BEGIN
           SELECT C15_VALOR
             FROM TBCAD015
            WHERE ID_CAD005 = :VID_CAD005
              AND ID_TAB000 = :VID_TAB000
              AND ID_TAB001 = :VID_TAB001
              AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
             INTO :VALOR ;
        END
  END
  ELSE
  IF (:SMOEDA = 'C') THEN
  BEGIN
    IF (:VID_TAB000 = 1) THEN
    BEGIN
      SELECT G01_QTDECH
        FROM TBGEN001 A
       WHERE A.G01_CODIGO = :VCODIGO
         AND A.G01_ANO    = 1990
         AND A.G01_CODESPEC = :VID_TAB001
        INTO :QTDE_CH;
    END

    SELECT C15_ACRESDESC
      FROM TBCAD015
     WHERE ID_CAD005 = :VID_CAD005
       AND ID_TAB000 = :VID_TAB000
       AND ID_TAB001 = :VID_TAB001
       AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
      INTO :STIPO ;

     IF (:STIPO = 'A') THEN
     BEGIN
        SELECT (C15_VALOR * :QTDE_CH) + C15_VLRACRESCDESC
          FROM TBCAD015
         WHERE ID_CAD005 = :VID_CAD005
           AND ID_TAB000 = :VID_TAB000
           AND ID_TAB001 = :VID_TAB001
           AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
          INTO :VALOR ;
     END
     ELSE
     IF (:STIPO = 'D') THEN
     BEGIN
        SELECT (C15_VALOR * :QTDE_CH) - C15_VLRACRESCDESC
          FROM TBCAD015
         WHERE ID_CAD005 = :VID_CAD005
           AND ID_TAB000 = :VID_TAB000
           AND ID_TAB001 = :VID_TAB001
           AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
          INTO :VALOR ;
     END
     ELSE
     BEGIN
        SELECT C15_VALOR * :QTDE_CH
          FROM TBCAD015
         WHERE ID_CAD005 = :VID_CAD005
           AND ID_TAB000 = :VID_TAB000
           AND ID_TAB001 = :VID_TAB001
           AND :VCODIGO BETWEEN C15_COD_INICIAL AND C15_COD_FINAL
          INTO :VALOR ;
     END
  END
  SUSPEND;
END


>From: "Kleber Caneva" <kdcc em terra.com.br>
>Reply-To: FireBase <lista em firebase.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Subject: Re: [firebase-br] Retorno de procedure do firebird
>Date: Tue, 17 Apr 2007 10:06:56 -0300
>
>Pode passar o metadata da SP ? Talvez ajude a indentificar o problema.
>
>Qual conjunto de componentes você está usando para acesso aos dados ?
>
>[]´s
>
>Kléber Caneva
>
>
>
>----- Original Message -----
>From: "Marco Antonio Albuquerque" <marcksystem em hotmail.com>
>To: <lista em firebase.com.br>
>Sent: Tuesday, April 17, 2007 9:30 AM
>Subject: [firebase-br] Retorno de procedure do firebird
>
>
>Bom dia a todos,
>                         Estou com um problema no retorno de um valor de 
>uma
>procedure para o delphi, executada no IBExpert o result é mostrado
>corretamente, ja no delphi na hora do open ou execproc da erro de cursor
>handle (Componente testados StoredProc e Query)
>
>   with spValor_Consulta do
>   begin
>     Close;
>     Params[0].AsInteger := StrToInt(copy(cbx33_CodigoTabela.Text, 1, 2));
>     Params[1].AsInteger := ID_CAD005;
>     Params[2].AsInteger := ID_TAB001;
>     Params[3].AsInteger := StrToInt(edt34_CodProcedimento.Text);
>     try
>       open;
>       Result := Fields[0].AsCurrency ;
>     except
>         on Exception do
>           ShowMessage('Procedure não rodou');
>     end;
>   end;
>Antecipadamente agradeço
>
>Marco Antonio
>
>_________________________________________________________________
>Mande torpedos SMS do seu messenger para o celular dos seus amigos
>http://mobile.msn.com/
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>Esta mensagem foi verificada pelo E-mail Protegido Terra.
>Scan engine: McAfee VirusScan / Atualizado em 16/04/2007 / Versão:
>5.1.00/5010
>Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço 
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa

_________________________________________________________________
Descubra como mandar Torpedos SMS do seu Messenger para o celular dos seus 
amigos. http://mobile.msn.com/





Mais detalhes sobre a lista de discussão lista