-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値を必要とする意味します:= ';)。 –
関数は倍精度を返すように宣言されています。実際のタイプは 'text'です。エラーは驚くべきことでも、誤解を招くものでもありません。 –