[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