私はストアドプロシージャを作成しました。関数が正常に作成されます。関数を呼び出すと、エラーが発生します。どうすればこの問題を解決できますか?PostgreSQLストアドプロシージャの実行エラー
エラーは、EXECUTE
コマンドで置換にformat()
と変数に位置パラメータの使用をミックス
ERROR: unrecognized conversion type specifier "a" CONTEXT: PL/pgSQL function dwgcould.updatescale(integer,integer) line 6 at EXECUTE statement ********** Error ********** ERROR: unrecognized conversion type specifier "a" SQL state: 22023 Context: PL/pgSQL function dwgcould.updatescale(integer,integer) line 6 at EXECUTE statement
CREATE OR REPLACE FUNCTION scale(IN id integer, IN scale integer) RETURNS integer
AS $$
DECLARE
result int;
BEGIN
IF (SELECT COUNT(*) FROM pg_tables where tablename = format('table_%s_id',id)) > 0 then
EXECUTE format('update table_%s_id set geom = ST_Scale(geom, %a, %a',id, scale, scale) using id, scale;
EXECUTE format('update table_&s_id2 set geom = ST_Scale(geom, %a, %a',id, scale, scale) using id, scale;
IF FOUND THEN
result:= 1;
return result;
ELSE
result:=0;
return result;
END IF;
ELSE
result:=2;
return result;
END IF;
END;
$$ LANGUAGE plpgsql;
あなたは '%s'を使うべきです。 – Patrick
'%a'指定子を使用しないことで、この問題をどのように解決できますか? – wildplasser
'ST_Scale(geom、%a、%a' - 閉じ括弧なし) –