[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