Fórum stored procedures com insert update e select no firebird 3.0 #570663

08/11/2016

0

Olá tenho uma stored procedure que funcionana perfeitamente no firebird 3.0 com PHP mas agora a Insert e Update não funcionam mais
Não da erro mas tambem nao grava no banco.
Segue abaixo o codigo, se alguem puder me ajudar ficarei grato

SET TERM ^ ;

create or alter procedure SPEMBARQUE (
    ACAO integer,
    EMB_CODIGO integer,
    EMB_DATA date,
    EMB_QTDBRUTA numeric(15,2),
    EMB_QTDLIQUIDA numeric(15,2),
    DESEM_DATA date,
    DESEM_QTDBRUTA numeric(15,2),
    DESEM_QTDLIQUIDA numeric(15,2),
    DESEM_QTDQUEBRA numeric(15,2),
    TAC_CODIGO integer,
    AGM_CODIGO numeric(15,2),
    ID_USUARIO integer,
    EMB_NUMERO integer,
    EMB_TRANSGENICO char(1),
    COD_CONHECIMENTO integer,
    EMB_DESCONTAR char(1),
    CT_CODIGO integer,
    EMB_NUMCTE integer,
    PED_ID integer,
    COM_CODIGO integer,
    VEI_CODIGO integer,
    TIPO_CONTRATO char(10),
    FORNECEDOR integer,
    NF_NUMERO numeric(15,2),
    XWHER varchar(200),
    P_PESO numeric(15,2),
    S_PESO numeric(15,4),
    EMP integer)
returns (
    EMB_COD integer,
    EMB_DAT date,
    EMB_QTDBRUT numeric(15,2),
    EMB_QTDLIQUI numeric(15,2),
    DESEM_DAT date,
    DESEM_QTDBRUT numeric(15,2),
    DESEM_QTDLIQUID numeric(15,2),
    DESEM_QTDQUEBR numeric(15,2),
    TAC_CODIG integer,
    AGM_CODIG integer,
    ID_USU integer,
    EMB_NUM integer,
    EMB_TRANSGENIC char(2),
    DESEM_TRANSGE char(2),
    COD_CONHECIMENT integer,
    EMB_DESCONT char(1),
    CT_CODI integer,
    EMB_NUMCT integer,
    ID_PED integer,
    COM_NOME varchar(100),
    CON_NOME varchar(100),
    VEI_CODIG integer,
    VEI_PLACA varchar(50),
    EMB_P_PESO numeric(15,2),
    EMB_S_PESO numeric(15,2),
    VALOR_FRETE double precision,
    TIPO_CONTR char(1),
    VAL_FRETTON numeric(15,2),
    TES_ID integer,
    VAL_UNIT numeric(15,6),
    VALOR_NOTA numeric(15,6),
    PROD_ID integer,
    CLIENTE integer,
    NUM_NF varchar(100),
    ID_CAD integer,
    TES_GERA_FINANC char(1),
    TIPO_FRETE char(10),
    PED_OBS varchar(300),
    PED_AMBIENTE smallint,
    PROD_DESCR varchar(100),
    NF_TIPO_NOTA char(1),
    DIAS integer,
    PED_PAG char(1),
    TELEFONE varchar(20),
    PROD_NOME varchar(100),
    UMIDADE numeric(15,2),
    IMPUREZA numeric(15,2),
    AVARIADO numeric(15,2),
    FERMENTADO numeric(15,2),
    ARDIDO numeric(15,2),
    QUEIMADO numeric(15,2),
    PESO_LIQUIDO numeric(15,2),
    PESO_NOTA numeric(15,2),
    VL_FETHAB numeric(15,2),
    VL_ICMS numeric(15,2),
    VL_FRETE numeric(15,2),
    VL_COF numeric(15,2),
    VL_PIS numeric(15,2),
    LOC_ESTOQUE integer,
    DATA_HORA_P_PESO timestamp,
    DATA_HORA_S_PESO timestamp,
    RAZAO_SOCIAL varchar(300),
    PESO_BRUTO numeric(18,6),
    DESC_UMIDADE numeric(15,2),
    DESC_AVARIADO numeric(15,2),
    DESC_IMPUREZA numeric(15,2),
    DESC_ESVER numeric(15,2),
    NUM_CONTRATO varchar(10),
    CORRETOR varchar(300),
    VAL_LIQUI double precision,
    VL_CORRETAGEM double precision,
    PESO_BRUTO_VEI numeric(15,2),
    LACRE char(1),
    INTERVALO varchar(10),
    EXCESSO varchar(1),
    EMB_UMIDADE numeric(18,6),
    CIDADE_DESTINO varchar(300),
    LOTE varchar(100),
    CFOP_NUMERO integer,
    PESO_LIQUI numeric(15,2),
    VALOR_LIQUIDO numeric(15,2),
    VALOR_CARTA numeric(15,2),
    VALOR_ADIANTAMENTO numeric(15,2),
    VALOR_PEDAGIO numeric(15,2),
    EMAIL_CLI varchar(100),
    NOTA_REMESSA varchar(10),
    NOTA_VENDA varchar(10),
    ICMS_NOTA_TRIANGULAR numeric(15,2),
    NF_METRO_ESTERIO float)
as
declare variable XSQL varchar(10000);
declare variable XWHERE varchar(500);
declare variable CODIGO_COMPRADOR integer;
declare variable PESO2 integer;
declare variable PESO1 integer;
declare variable SALDO_PESO integer;
declare variable VALOR_CLASS numeric(15,2);
declare variable CODIGO_CLASS integer;
declare variable QUANT1 numeric(15,2);
declare variable ICM1 numeric(15,2);
declare variable FRETE1 numeric(15,2);
declare variable PIS1 numeric(15,2);
declare variable COF1 numeric(15,2);
declare variable FETHAB1 numeric(15,2);
declare variable NF_NUM1 varchar(100);
declare variable VL_NOTA numeric(15,6);
declare variable CLA_CODIGO integer;
declare variable DESCONTOS numeric(15,2);
declare variable NUM_EMB integer;
declare variable SEQ_EMB integer;
declare variable NF_EMBARQUE integer;
declare variable CALC_CORRETAGEM double precision;
declare variable HORAS varchar(10);
declare variable MINUTOS varchar(10);
declare variable CDPROD integer;
declare variable METRO_ESTERIO integer;
declare variable DESC_EMB numeric(15,2);
declare variable DESC_DESEM numeric(15,2);
begin
  /* INSERINDO EMARQUE */
  NOTA_REMESSA = ''; nota_venda = '';

  if ((:acao = 5) AND (:agm_codigo > 0)) then
  begin
     Select emb.emb_codigo from embarque emb where emb.agm_codigo = :agm_codigo
     into :emb_codigo;

     --exception agencioamento;
     if (coalesce(:EMB_CODIGO, 0) > 0) then
        acao = 3;
      if (coalesce(:EMB_CODIGO, 0) = 0) then
        acao = 1;
  end

  if (:acao = 1) then
  begin
    if (:tac_codigo = 0) then
       tac_codigo = null;
    -- exception agencioamento;
    select first 1 ped.ped_cliente
    from pedido ped inner join agenciamento agm on (agm.ped_id = ped.ped_id)
    where agm.agm_codigo = :agm_codigo
    into :codigo_comprador;
    /*ALTERANDO STATUS DO AGENCIAMENTO*/
    update agenciamento set agm_status = 'EMBARCADO'
    WHERE AGM_CODIGO = :agm_codigo;
    /*ALTERANDO SALDO DO CONTRATO*/
    update PEDIDO  set ped_saldocarregado = ped_saldocarregado + :emb_qtdbruta
    where ped_id  = :ped_id;
    /*fazendo insercao no embarque / desembarque*/
    insert into embarque
    (
        EMB_CODIGO         ,
        EMB_DATA           ,
        EMB_QTDBRUTA       ,
        EMB_QTDLIQUIDA     ,
        DESEM_DATA         ,
        DESEM_QTDBRUTA     ,
        DESEM_QTDLIQUIDA   ,
        DESEM_QTDQUEBRA    ,
        TAC_CODIGO         ,
        AGM_CODIGO         ,
        ID_USUARIO         ,
        EMB_NUMERO         ,
        EMB_TRANSGENICO    ,
        COD_CONHECIMENTO   ,
        EMB_DESCONTAR      ,
        CT_CODIGO          ,
        EMB_NUMCTE         ,
        PED_ID             ,
        EMB_P_PESO
    )
    values
    (
        gen_id(gen_embarque,  1)         ,
        current_date           ,
        :EMB_QTDBRUTA       ,
        :EMB_QTDLIQUIDA     ,
        :DESEM_DATA         ,
        :DESEM_QTDBRUTA     ,
        :DESEM_QTDLIQUIDA   ,
        :DESEM_QTDQUEBRA    ,
        :TAC_CODIGO         ,
        :AGM_CODIGO         ,
        :ID_USUARIO         ,
        :EMB_NUMERO         ,
        :EMB_TRANSGENICO    ,
        :COD_CONHECIMENTO   ,
        :EMB_DESCONTAR      ,
        :CT_CODIGO          ,
        :EMB_NUMCTE         ,
        :PED_ID             ,
        :p_peso
    );
   acao = 3;
  end

   /*alterando campo umidade*/
    if (:acao = 4) then
    begin
       update embarque set emb_umidade  = :P_Peso --Parametro Primeiro peso foi usado para receber umidade,
       --para nao haver necessidade de se criar novo parametro
       where emb_codigo = :emb_codigo;
       acao = 5; --seta o parametro acao para dar um refresh na tabela e mostrar o resultado

    end
  /*FAZENDO UPDATE DO EMBARQUE*/
  if (:acao = 2) then
  begin
            Select

                sum(    case
                        when ebc.clc_valor < tci.tci_limite then 0
                        when ebc.clc_valor >= tci.tci_limite then
                         coalesce(((coalesce(EMB.emb_qtdbruta, 0) *(coalesce(tci.tci_limite, 0) - coalesce(ebc.clc_valor, 0))/100)*coalesce(tci.tci_indice, 0)),0)
                    end) as quant_embarque
                            from embarque_class ebc
                                inner join embarque emb                  on (emb.emb_codigo     = ebc.emb_codigo)
                                inner join pedido ped                    on (ped.ped_id         = emb.ped_id)
                                inner join classificacao cla             on (cla.cla_codigo     = ebc.c
Americo Neto

Americo Neto

Responder

Posts

29/07/2017

Joao Ishiwatari

tentou usar o depurador do ibexpert ?
Responder

Gostei + 0

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

Aceitar