PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Erro ao ativar SQLStoredProc. #384452

24/08/2010

0

Olá,
Sou iniciante em Delphi 7 e fiz uma descrição sobre minha dificuldade. Desculpe por não saber explicar direito o problema.

Estou tentando executar uma procedure do banco (firebird), mas não estou conseguindo ativar o componente SQLStoredProc.
Criei um form onde informarei o codigo da conta e a data inicial. 
Inseri um SQLStoredProc, informei o SQLConnection, o StoredProcName.
Quando vou ativar o componente dá erro de null devido o parametro estar vazio.
Informei para o primeiro parametro (codigo_conta) DataType Integer. Value 1 e Type Integer.
Tentei fazer a mesma coisa para o segundo parametro (data_inicial) mas no Type = Date o value fica preenchido com 00.00.00 e não em formato data.
Terminada esta configuração tento ativar SQLStoredProc mas mostra o seguinte erro:
SQLStoredProc1: Cursor not returned from Query.


**Procedure**
ALTER PROCEDURE RECALCULA_SALDOS (    CODIGO_CONTA INTEGER,    DATA_INICIAL DATE)ASDECLARE VARIABLE SALDO_INICIAL DECIMAL(15,2);DECLARE VARIABLE TOTAL_ENTRADAS DECIMAL(15,2);DECLARE VARIABLE TOTAL_SAIDAS DECIMAL(15,2);DECLARE VARIABLE TEM_SALDO INTEGER;DECLARE VARIABLE DATA_SALDO DATE;DECLARE VARIABLE ANO_INICIAL INTEGER;DECLARE VARIABLE SALDO_EXISTS INTEGER;DECLARE VARIABLE SALDO_FINAL DECIMAL(15,2);begin    ano_inicial    = 0;    saldo_inicial  = 0;    total_entradas = 0;    total_saidas   = 0;    tem_saldo      = 0;    data_inicial   = :data_inicial - 1;
--VERIFICA SE EXIST SALDO DIA ANTERIOR A DATA INFORMADA PARA RECALCULO  --SE NAO EXISISTIR VOLTA UM DIA NA DATA E VERIFICA NOVAMENTE ATE ENCONTRAR UM SALDOwhile (:tem_saldo = 0) do    begin        SELECT SUM(SALDO) FROM SALDOS WHERE COD_CONTA = :CODIGO_CONTA            AND DATA = :data_inicial            INTO :tem_saldo;
            If (:tem_saldo > 0) then                tem_saldo = 1;            If (:tem_saldo = 0) then                data_inicial = :data_inicial - 1;            if (:data_inicial < '01.01.2008') then                tem_saldo = 1;    end
--PEGA SALDO INICIAL (na data que foi encontrado o saldo)SELECT SALDO FROM saldos WHERE cod_conta = :codigo_conta    and DATA = :data_inicial    INTO :saldo_inicial;
--SOMA ENTRADAS (a partir de 1 dia apos a data do saldo)SELECT COALESCE(SUM(VALOR),0) AS TOTAL_ENTRADA FROM mov_bancaria mov, naturezas nat WHERE        mov.cod_conta     = :codigo_conta    and mov.cod_natureza  = nat.codigo    and nat.entrada_saida = 'E'    and data > :data_inicial    INTO :total_entradas;
--SOMA SAIDASSELECT COALESCE(SUM(VALOR),0) AS TOTAL_ENTRADA FROM mov_bancaria mov, naturezas nat WHERE        mov.cod_conta = :codigo_conta    and mov.cod_natureza = nat.codigo     and nat.entrada_saida = 'S'    and data > :data_inicial    INTO :total_saidas;

--ATUALIZA SALDO DA CONTA DO DIASELECT count(*) FROM saldos WHERE cod_conta = :codigo_conta and data = (SELECT cast ('now' as date) from rdb$database) into :saldo_exists;
If (:saldo_exists <= 0) then    begin       insert into  SALDOS (DATA,COD_CONTA,SALDO) VALUES ((SELECT cast ('now' as date) from rdb$database),:codigo_conta,0);    end

saldo_final = :saldo_inicial + :total_entradas - :total_saidas;
UPDATE saldos SET SALDO = :saldo_final WHERE cod_conta = :codigo_conta and data = (SELECT cast ('now' as date) from rdb$database);  suspend;end^
Daniel

Daniel

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar