stored procedures com insert update e select no firebird 3.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
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.cAmerico Neto
Curtidas 0
Respostas
Joao Ishiwatari
08/11/2016
tentou usar o depurador do ibexpert ?
GOSTEI 0