-1
我創建功能,其中之一是:無效的輸入語法
CREATE OR REPLACE FUNCTION core.cal_status(
er_v DOUBLE PRECISION,
cell_v DOUBLE PRECISION
) RETURNS DOUBLE PRECISION
LANGUAGE plpgsql
AS $$
DECLARE out DOUBLE PRECISION;
BEGIN
IF er_v < 15 THEN out := 'LOW_LOAD';
ELSEIF cell_v < 60 THEN out := 'LOW_LOAD';
ELSEIF er_v > 40 THEN out := 'CONGESTED';
ELSEIF cell_v > 80 THEN out := 'CONGESTED';
ELSEIF cell_v >60 and cell_v < 80 THEN out := 'HIGH_LOAD';
END IF;
RETURN out;
END;
$$;
當我調用函數與此:
LEFT JOIN LATERAL core.cal_status(
er_v,
cell_v) status ON true
我得到了一個錯誤:
ERROR: invalid input syntax for type double precision: "LOW_LOAD" Where: PL/pgSQL function core.cal_status(double precision,double precision) line 4 at assignment
這是怎麼回事,我猜這是輸出類型,但不知道。
恕我直言,'返回DOUBLE PRECISION'意味着你需要一個雙值之後'出來:=')。 –
您的函數被聲明爲返回雙精度。實際的類型是「文本」。這個錯誤並不令人意外或誤導。 –