Fehler beim Setzen von n_distinct mit einer plpgsql-Variablen

Ich habe versucht, mit einer Funktion den Wert n_distinct für eine Tabelle festzulegen. Der Code lautet wie folgt:

create temporary table _temp
(
  id integer
);

create function pg_temp.setdistinct(_cnt real)
returns void as $
begin
  alter table _temp
    alter column id set (n_distinct=_cnt);
end
$ language plpgsql;

select pg_temp.setdistinct(1000);

Erhalten Sie noch die folgenden Fehler:

ERROR:  invalid value for floating point option "n_distinct": _cnt
CONTEXT:  SQL statement "alter table _temp
         alter column id set (n_distinct=_cnt)"
PL/pgSQL function pg_temp_3.setdistinct(real) line 3 at SQL statement

Das Problem kann mit einem @ umgangen werdeEXECUTE -Anweisung, aber ich frage mich, warum wir in dieser bestimmten Abfrage keine Variable verwenden können. Gibt es eine bestimmte Regel, die ich übersehen habe?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage