[firebase-br] ajuda com stored procedure que não funciona

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Sáb Maio 29 06:54:37 -03 2010


boa noite a todos estou tendo problemas com essa stored procedure pois
usando o ibexpert funciona mais quando tento fazer usando o delphi
simplesmente não funciona, se puderem me ajudar agradeço se acharem que esse
assunto é off por ter sintaxe do delphi me desculpem

segue abaixo a sintaxe
procedure TF_Ordem_Servico.
spbconfirmarClick(Sender: TObject);
begin
cdspecas.First;
cdsserv.First;
 edita_qtde;
f_DMM.C_Os.ApplyUpdates(0);
status_os;
copiaregistro;
copiaservico;
//status_os;
f_DMM.D_Os.ApplyUpdates(0);
F_dmm.D_Servico_OS.ApplyUpdates(0);
baixa_estoque;
ListaStatus.Text :='';


//chamda da stored procedure
procedure TF_Ordem_Servico.status_os;
begin
while not cdspecas.eof do
begin
    sp_status.Params[0].AsInteger := DbEdit19.Field.AsInteger;
sp_status.Params[1].AsString := cdspecasCOD_LOCAL.AsString;//esse campo
precisa dum laço pra pegar todos os registros
sp_status.Params[2].AsInteger := DbEdit1.Field.AsInteger;
sp_status.ExecProc;

    cdspecas.Next;
    f_dmm.Estoque.Close;
  f_dmm.Estoque.Open;
    end;

end;


//sitaxe da sp

CREATE OR ALTER PROCEDURE SP_STATUS_OS (
    emp integer,
    local char(3),
    cod_os integer)
as
declare variable v_status char(1);
declare variable codprod varchar(18);
declare variable qtde numeric(10,2);
begin
select STATUS from c_ordemservico
where codigo = :cod_os
into :v_status;

select d.codprod, d.qtde from d_servico_os d
where d.cod_os = :cod_os
into :codprod,:qtde;

if (:v_status = 'A')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv + :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

if (:v_status = 'F')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv - :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

if (:v_status = 'C')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv - :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

    end

desde já agradeço



Mais detalhes sobre a lista de discussão lista