-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'意味着你需要一个双值之后'出来:=')。 –
您的函数被声明为返回双精度。实际的类型是“文本”。这个错误并不令人意外或误导。 –