[firebase-br] Problema com Select em Procedure
Isael Faria Junior
isael em stetika.com.br
Sex Abr 11 09:03:51 -03 2008
Pessoal,
Tenho o seguinte procedure.
---
CREATE PROCEDURE SPR_ORDEM_CPR_FORNECEDOR (
COD_ORD_COM INTEGER,
DATA_INICIAL DATE,
DATA_FINAL DATE,
ID_FORNECEDOR INTEGER,
TIPO VARCHAR(1))
AS
DECLARE VARIABLE ID_PRODUTO INTEGER;
DECLARE VARIABLE VAL_UNITARIO DOUBLE PRECISION;
DECLARE VARIABLE PRODUTO VARCHAR(50);
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE CODENA VARCHAR(15);
DECLARE VARIABLE ID_LOC_ESTQ INTEGER;
DECLARE VARIABLE SALDO FLOAT;
DECLARE VARIABLE VENDA FLOAT;
DECLARE VARIABLE COMPRAS FLOAT;
DECLARE VARIABLE ENTRADAS FLOAT;
DECLARE VARIABLE FONTE_ODBC VARCHAR(30);
DECLARE VARIABLE SAIDAS FLOAT;
DECLARE VARIABLE ID_UNIDADE INTEGER;
DECLARE VARIABLE QTDMIN FLOAT;
DECLARE VARIABLE UNIDADE VARCHAR(3);
DECLARE VARIABLE VALOR FLOAT;
begin
SELECT ID_LOC_CPR,FONTE_ODBC FROM PARAMETROS INTO :id_loc_estq,:fonte_odbc;
FOR SELECT COD_PRODUTO FROM CAT_PRO_FOR WHERE COD_FORNECEDOR = :id_fornecedor
INTO :id_produto DO
BEGIN
SELECT SUM(QTD_MOV) FROM MOVEST WHERE ID_PRODUTO = :id_produto AND
DAT_MOV < :data_final AND ID_LOCAL_ENT = :id_loc_estq AND
SUBSTR(SIT_TIPO_LANC,1,1) = 'E' INTO :entradas;
if (:entradas IS NULL) then
entradas = 0;
SELECT SUM(QTD_MOV) FROM MOVEST WHERE ID_PRODUTO = :id_produto AND
DAT_MOV < :data_final AND ID_LOCAL_SAI = :id_loc_estq AND
SUBSTR(SIT_TIPO_LANC,1,1) = 'S' INTO :saidas;
if (:saidas IS NULL) then
SAIDAS = 0;
SALDO = ENTRADAS - SAIDAS;
IF (:tipo = 'N') THEN
BEGIN
select
sum(qtd_item)
from ite_pro_nota
where id_tipo_operacao
in (select id_tipo_operacao from tipo_operacao where sit_tip_op = 'V')
and id_nota
in (select id_nota from notas_fiscais where dat_emissao between
:data_inicial and :data_final)
AND ID_PRODUTO = :id_produto into :venda;
END
IF (:tipo = 'P') THEN
BEGIN
SELECT
SUM(QTD_ITEM)
FROM item_prod_ped
WHERE ID_TIPO_OPERACAO
IN (SELECT ID_TIPO_OPERACAO FROM tipo_operacao WHERE SIT_TIP_OP = 'V')
AND ID_PEDIDO
IN (SELECT ID_PEDIDO FROM PEDIDO WHERE DAT_EMISSAO between
:data_inicial AND :data_final)
AND ID_PRODUTO = :id_produto INTO :venda;
END
IF (:VENDA IS NULL) THEN
BEGIN
venda = 0;
END
if (:fonte_odbc = 'DUGS') then
BEGIN
SELECT PRCUSTO,DESCRICAO,CODBAR,QTDMIN,ID_UNIDADE FROM PRODUTOS WHERE ID_PRODUTO = :id_produto
INTO :val_unitario,:produto,:codena,:qtdmin,:id_unidade;
END
ELSE
BEGIN
SELECT PRCUSTO,DESCRICAO,ID_PRODUTO,QTDMIN,ID_UNIDADE FROM PRODUTOS WHERE ID_PRODUTO = :id_produto
INTO :val_unitario,:produto,:codena,:qtdmin,:id_unidade;
END
if (qtdmin IS NULL) then
qtdmin = 0;
COMPRAS = (:venda + :qtdmin) - :saldo;
SELECT SIGLA FROM UNIDADE WHERE ID_UNIDADE = :id_unidade INTO :unidade;
INSERT INTO ite_pro_oc(COD_ORD_OC,ID_PRODUTO,CODIGO,PRODUTO,SALDO,VAL_QTD_PRO,VAL_PRO_UNIT,
VENDA,VAL_TOT_IPI,ID_UNIDADE,UNIDADE) VALUES
(:cod_ord_com,:id_produto,:codena,:produto,:saldo,:compras,:val_unitario,:venda,
0,:id_unidade,:unidade);
END
/* Procedure Text */
suspend;
end;
--
Onde este Select deveria me trazer o valor 1
SELECT
SUM(QTD_ITEM)
FROM item_prod_ped
WHERE ID_TIPO_OPERACAO
IN (SELECT ID_TIPO_OPERACAO FROM tipo_operacao WHERE SIT_TIP_OP = 'V')
AND ID_PEDIDO
IN (SELECT ID_PEDIDO FROM PEDIDO WHERE DAT_EMISSAO between
:data_inicial AND :data_final)
AND ID_PRODUTO = :id_produto INTO :venda;
O engraçado que que quando rodo esse select no sql editor o mesmo me monstra o valor correto, porem ao executar a procedure me tras o valor null
Detalhe não tenho como debug passo a passo pois a minha versão de IBExpert não permite isso.
Alguem pode me ajudar a solucionar esse misterio ??
Isael Faria Junior
Rua José Paulino 320 SL 51
Campinas / SP
Stetika Informática LTDA
Fone: 3203-0340 Cel:9198-6729
Mais detalhes sobre a lista de discussão lista