PgAdmin 4クエリエディターで以下を実行するとエラーが発生するのはなぜですか? createステートメントを1つのデータベースにコピーし、新しいサーバーに移動しようとしました。
そこで、pgAdminで関数を右クリックし、[スクリプト]メニューから[スクリプトの作成]を選択して、以下のコードを生成します。新しいデータベースにコピーして実行しました。
-- FUNCTION: public.osmtrip_format(bigint, numeric, numeric)
-- DROP FUNCTION public.osmtrip_format(bigint, numeric, numeric);
CREATE OR REPLACE FUNCTION public.osmtrip_format(
num bigint,
length numeric,
tolerance numeric)
RETURNS bigint
LANGUAGE 'sql'
COST 100
IMMUTABLE
ROWS 0
AS $BODY$
SELECT
CASE WHEN $1=0 OR $2<=0.7*$3 THEN NULL ELSE $1 END;
$BODY$;
ALTER FUNCTION public.osmtrip_format(bigint, numeric, numeric)
OWNER TO gis;
ERROR: ROWS must be positive
SQL state: 22023
CREATE FUNCTION
に関するドキュメントから:
result_rows
positive数値は、プランナが関数が返すと予想される行の推定数を示します。 これは、関数がセットを返すように宣言されている場合にのみ許可されます。デフォルトの想定は1000行です。
ROWS 0
は、これらの関数でも許可されていません(正の数でなければなりません)。
関数はセットを返さないため、そのROWS n
を削除する必要があります。