[firebase-br] Erro estranho SP

Alisson arsuart em uol.com.br
Qua Maio 10 12:27:54 -03 2006


Cara. possivelmente isso eh problema no Componente do Delphi de 
StoreProcedure..
faça o seguinte.. verifique se os parametros q estao mostrando no componente 
corresponde com os parametros q vc tem no banco..
desde nome.. a tipo de dados..
ou se preferir..
na propriedade StoreProcName do componente.. apague ou troque por outro 
nome.. depois volte o nome da procedure q estava usando..
pra q ele possa renovar as variaveis de Entrada e Saida.. possivelmente ele 
nao atualizou alguma variavel..!!!!
caso vc tenha adicionado algum campo novo na procedure pelo banco..!!!

falow..!!!!


"NextCorp Informatica" <nextcorp em terra.com.br> 
escreveu na mensagem news:006b01c673d9$fedafde0$6401a8c0 em nextcorp...
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
####################
______________________________________________
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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista