Store procedure só retorna zero
Depurei a store procedure abaixo no IB Manager e ela calcula os totais desejados normalmente. Porém, ao retornar os resultados, ela só me retorna 0 (zero). Alguém pode me ajudar?
Obs: Estou fazendo uma chamada de uma store procedure dentro de outra.
CREATE PROCEDURE TOTALPEDIDOS (
GEROU_NF CHAR(1),
IMPRIMIU CHAR(1),
CLI CHAR(5),
VEND CHAR(4))
RETURNS (
TOTAL_PEDIDOS_PERDAS NUMERIC(10,4),
TOTAL_PEDIDOS_COM_DESCONTO NUMERIC(10,4),
TOTAL_PEDIDOS NUMERIC(10,4))
AS
DECLARE VARIABLE TOTAL_PED_PERDAS NUMERIC(10,4);
DECLARE VARIABLE TOTAL_PED_COM_DESCONTO NUMERIC(10,4);
DECLARE VARIABLE TOTAL_PEDIDO NUMERIC(10,4);
DECLARE VARIABLE ESPECIE CHAR(1);
DECLARE VARIABLE PEDIDO CHAR(5);
begin
total_pedidos_perdas = 0;
total_pedidos_com_desconto = 0;
total_pedidos = 0;
/* Pedidos a serem calculados */
FOR SELECT
dp.dppednum, dp.dpespecie
FROM
DadosPedidos dp, Clientes c, Vendedores v
WHERE
dp.DPVendCod like :vend AND
dp.DPCliCod like :cli AND
dp.DPControNota like :gerou_nf AND
dp.dpimprimiu like :imprimiu AND
dp.DPCliCod = c.CliCod AND
dp.DPVendCod = v.VendCod
ORDER BY
dp.DPPedNum, dp.DPEspecie
INTO
:pedido, :especie
DO BEGIN
/* Pegar o total de cada pedido */
select tp.total_ped, tp.total_com_desc, tp.total_perdas
from totalped tp
into :TOTAL_PEDIDO, :TOTAL_PED_COM_DESCONTO, :TOTAL_PED_PERDAS;
total_pedidos_perdas = total_pedidos_perdas + total_ped_perdas;
total_pedidos_com_desconto = total_pedidos_com_desconto + total_ped_com_desconto;
total_pedidos = total_pedidos + total_pedido;
END
suspend;
end
Obs: Estou fazendo uma chamada de uma store procedure dentro de outra.
CREATE PROCEDURE TOTALPEDIDOS (
GEROU_NF CHAR(1),
IMPRIMIU CHAR(1),
CLI CHAR(5),
VEND CHAR(4))
RETURNS (
TOTAL_PEDIDOS_PERDAS NUMERIC(10,4),
TOTAL_PEDIDOS_COM_DESCONTO NUMERIC(10,4),
TOTAL_PEDIDOS NUMERIC(10,4))
AS
DECLARE VARIABLE TOTAL_PED_PERDAS NUMERIC(10,4);
DECLARE VARIABLE TOTAL_PED_COM_DESCONTO NUMERIC(10,4);
DECLARE VARIABLE TOTAL_PEDIDO NUMERIC(10,4);
DECLARE VARIABLE ESPECIE CHAR(1);
DECLARE VARIABLE PEDIDO CHAR(5);
begin
total_pedidos_perdas = 0;
total_pedidos_com_desconto = 0;
total_pedidos = 0;
/* Pedidos a serem calculados */
FOR SELECT
dp.dppednum, dp.dpespecie
FROM
DadosPedidos dp, Clientes c, Vendedores v
WHERE
dp.DPVendCod like :vend AND
dp.DPCliCod like :cli AND
dp.DPControNota like :gerou_nf AND
dp.dpimprimiu like :imprimiu AND
dp.DPCliCod = c.CliCod AND
dp.DPVendCod = v.VendCod
ORDER BY
dp.DPPedNum, dp.DPEspecie
INTO
:pedido, :especie
DO BEGIN
/* Pegar o total de cada pedido */
select tp.total_ped, tp.total_com_desc, tp.total_perdas
from totalped tp
into :TOTAL_PEDIDO, :TOTAL_PED_COM_DESCONTO, :TOTAL_PED_PERDAS;
total_pedidos_perdas = total_pedidos_perdas + total_ped_perdas;
total_pedidos_com_desconto = total_pedidos_com_desconto + total_ped_com_desconto;
total_pedidos = total_pedidos + total_pedido;
END
suspend;
end
Luker
Curtidas 0
Respostas
Gandalf.nho
05/10/2004
Tente colocar o SUSPEND antes do primeiro END
GOSTEI 0
Luker
05/10/2004
Eu coloquei...
Aí ele retorna null...
Aí ele retorna null...
GOSTEI 0