[firebase-br] Erro estranho SP

NextCorp Informatica nextcorp em terra.com.br
Ter Maio 9 23:32:30 -03 2006


Caros colegas

Está sp abaixo estava funcionando normalmente, mas de uma hora para outra começou a dar está msg de erro abaixo e não executar mais. Alguem tem alguma ideia do que pode estar acontecendo ?????

MSG Erro na execução:
Erro SQL Dinamico
Parameter mismatch for procedure sp_gera_carne
'. Process stopped

Acontecendo no momento de passar o parametro (wcodigo_e)

Dephi 5 pro, Fire 1.5.3, win 98

No delphi chamo a sp abaixo:

{Inicia a transação}
     if not dmDados.IB_Transaction1.InTransaction then
        dmDados.IB_Transaction1.StartTransaction;
     {executa procedure no banco}
      with dmDados.IB_StoredProc1 do
         begin
               StoredProcName:= 'SP_GERA_CARNE';
               ParamByName('wcodigo_e').asInteger:= wcodigo;      // se 0 gera para todos   
               ParamByName('wdt_venc_e').asDateTime:= StrToDate(deDtVenc.Text);
               if not Prepared then
                  Prepare;
               ExecProc;
         end;
     {final do processamento, tem que confirmar ou cancelar}

Aqui a sp no banco: (suprimi alguns parametros de entrada, so para simplificar)

CREATE PROCEDURE SP_GERA_CARNE (
    WCODIGO_E INTEGER,
    WDT_VENC_E DATE
RETURNS (
    WCLI_CODIGO INTEGER,
    WCOBRA_TX CHAR(1),
    WVALOR_MENSAL NUMERIC(15,2))
AS
DECLARE VARIABLE WVALOR_PARCELA NUMERIC(15,2);
DECLARE VARIABLE WDT_VENC DATE;
DECLARE VARIABLE WPARCELA VARCHAR(5);
DECLARE VARIABLE WCONTA INTEGER;
begin
  if (:wcodigo_e = 0) then -- gera para todos
     begin
          for
             select a.cli_codigo, a.cli_cobrar_tx_banc, b.pla_valor_mensal
             from clientes a Left Join planos b On a.cli_tipo_plano = b.pla_controle
             where (cli_gerar_cr = 'S') and (cli_status = 'S') and (cli_gerado = 'N')
             into :wcli_codigo, :wcobra_tx, :wvalor_mensal
          do
            begin
                wconta= 1;
                wdt_venc= :wdt_venc_e;
                if (:wcobra_tx = 'S') then
                   wvalor_parcela= (wvalor_mensal + wval_desp_ban);
                else
                   wvalor_parcela= wvalor_mensal;
                while (:wconta <= :wnum_parc) do
                    begin
                        wparcela= udf_padl(Cast(:wconta as varchar(2)),'0',2)||'/'||udf_padl(Cast(:wnum_parc as varchar(2)),'0',2);
                        insert into contas_receber(cre_controle, cre_cli_codigo, cre_ced_codigo, cre_parcela, cre_dt_venc, cre_valor_doc, cre_pago, cre_prn)
                        values(Gen_id(gen_contas_receber_id,1), :wcli_codigo, :wced_codigo, :wparcela, :wdt_venc, :wvalor_parcela, 'N', 'N');
                        wconta= wconta + 1;
                        wdt_venc= wdt_venc + 31;
                    end
                update clientes set cli_gerado = 'S'
                where cli_codigo = :wcli_codigo;
            end
          suspend;
     end
end^

GRANT SELECT,UPDATE ON CLIENTES TO PROCEDURE SP_GERA_CARNE;
GRANT SELECT ON PLANOS TO PROCEDURE SP_GERA_CARNE;
GRANT INSERT ON CONTAS_RECEBER TO PROCEDURE SP_GERA_CARNE;
GRANT EXECUTE ON PROCEDURE SP_GERA_CARNE TO SYSDBA;

Atenciosamente

Washington A. Müller da Silva

#####################
NextCorp Informática Ltda
www.nextcorp.com.br
nextcorp em terra.com.br
0 xx (51)-3589-3690
####################


Mais detalhes sobre a lista de discussão lista