سؤال

CREATE FUNCTION cleanAmount(amount DECIMAL)
    RETURNS decimal(30,2)
    LANGUAGE SQL
    DETERMINISTIC
    NO SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
DECLARE res DECIMAL;
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END

SELECT cleanAmount('3.456'); return 3,00. It should be 3,46

هل كانت مفيدة؟

المحلول

Change the declare of res in the stored proc:-

CREATE FUNCTION cleanAmount(amount DECIMAL(60,30))
    RETURNS decimal(30,2)
    LANGUAGE SQL
    DETERMINISTIC
    NO SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
DECLARE res DECIMAL(30,2);
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END

نصائح أخرى

default decimal is probably rounding your number

DECLARE res DECIMAL(30,2)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top