Estuve haciendo pruebas y si le paso un valor funciona, pero con una variable no va. Seguro que hago algo mal
Probe tanto con
Código SQL
[-]DECLARE EXTERNAL FUNCTION I64TRUNCATE
DOUBLE PRECISION BY DESCRIPTOR,
DOUBLE PRECISION BY DESCRIPTOR
RETURNS PARAMETER 2
ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf'
como con
Código SQL
[-]DECLARE EXTERNAL FUNCTION TRUNCATE
INTEGER BY DESCRIPTOR,
INTEGER BY DESCRIPTOR
RETURNS PARAMETER 2
ENTRY_POINT 'fbtruncate' MODULE_NAME 'fbudf'
El procedimiento es el siguiente
Código SQL
[-]CREATE PROCEDURE CANSEROFEGLOBAL (
COF VARCHAR(9),
CEN NUMERIC(15,2))
RETURNS (
CANTIDAD NUMERIC(15,2))
AS
DECLARE VARIABLE DISPONIBLE NUMERIC(15,2);
DECLARE VARIABLE FAM VARCHAR(3);
DECLARE VARIABLE SER VARCHAR(9);
DECLARE VARIABLE UNIDADESLIN INTEGER;
begin
-- Igualamos a cantidad máxima a servir á cantidad total a servir
Cantidad = cen;
-- Recorremos todas as liñas da oferta para ver cál é a cantidade máxima
-- que se pode servir
for select fam_of, ser_of, Cen_of * Uen_of from mblinofertas
where cod_of = :cof
into :FAM, :SER, :UNIDADESLIN do
begin
select Exi_al - Cre_al from mbalmacen
where fam_al = :FAM and num_al = :SER
into ISPONIBLE;
DISPONIBLE = truncate(DISPONIBLE/UNIDADESLIN);
if (disponible < Cantidad) then
Cantidad = disponible;
end
suspend;
end
Espero que puedan ayudarme. Muchas gracias