View Revisions: Issue #1733

Summary 0001733: When comparing functions, Numeric comes without parameters
Revision 2022-01-13 22:40 by shirokov
Description This is the original function. Firebird 3.0

CREATE OR ALTER FUNCTION BRUTTO(
 BETRAG NUMERIC(9,2),
 DATUM TIMESTAMP)
RETURNS NUMERIC(9,2) DETERMINISTIC
AS
declare variable MWST numeric(9,2);
begin
 if ( BETRAG is null or (DATUM is null )) then
 begin
 return NULL;
 end
 DATUM = ZEIT_NULLEN( DATUM );

/* Berechnet den Bruttobetrag unter Berücksichtigung des richtigen MwSt Satzes
 anhand des übergebenen Datums. Benutzt die Tabelle MwSt_Saetze */
 select first (1) SATZ from MWST_SAETZE A
 where :DATUM >= A.ab_datum
 order by AB_DATUM DESC /* Order BY ist wichtig nur so kommt immer der richtige Satz */
 into :MWST;
 return ( BETRAG * (( MWST / 100 )+1));
end;

If the database comparator finds a difference, the input/return values of the type "Numeric becomes Integer" only with variable parameters the type is OK.


CREATE OR ALTER FUNCTION BRUTTO(
 BETRAG INTEGER, <-- Integer should be Numeric(9,2) !!!
 DATUM TIMESTAMP)
RETURNS INTEGER <-- Integer should be Numeric(9,2) !!!
AS
declare variable MWST numeric(9,2);
begin
Revision 2022-01-13 21:36 by shirokov
Description This is the original function.
CREATE OR ALTER FUNCTION BRUTTO(
 BETRAG NUMERIC(9,2),
 DATUM TIMESTAMP)
RETURNS NUMERIC(9,2) DETERMINISTIC
AS
declare variable MWST numeric(9,2);
begin
 if ( BETRAG is null or (DATUM is null )) then
 begin
 return NULL;
 end
 DATUM = ZEIT_NULLEN( DATUM );

/* Berechnet den Bruttobetrag unter Berücksichtigung des richtigen MwSt Satzes
 anhand des übergebenen Datums. Benutzt die Tabelle MwSt_Saetze */
 select first (1) SATZ from MWST_SAETZE A
 where :DATUM >= A.ab_datum
 order by AB_DATUM DESC /* Order BY ist wichtig nur so kommt immer der richtige Satz */
 into :MWST;
 return ( BETRAG * (( MWST / 100 )+1));
end;

If the database comparator finds a difference, the input/return values of the type "Numeric becomes Integer" only with variable parameters the type is OK.


CREATE OR ALTER FUNCTION BRUTTO(
 BETRAG INTEGER, <-- Integer should be Numeric(9,2) !!!
 DATUM TIMESTAMP)
RETURNS INTEGER <-- Integer should be Numeric(9,2) !!!
AS
declare variable MWST numeric(9,2);
begin