Ich möchte SELECT INTO
verwenden, um eine temporäre Tabelle in einer meiner Funktionen zu erstellen. SELECT INTO
funktioniert in SQL, aber nicht PL/pgSQL.SELECT .. INTO zum Erstellen einer Tabelle in PL/pgSQL
Diese Anweisung erstellt eine Tabelle mytable genannt (Wenn orig_table
als eine Beziehung existiert):
SELECT *
INTO TEMP TABLE mytable
FROM orig_table;
Aber setzen Sie diese Funktion in PostgreSQL, und Sie erhalten den Fehler: ERROR: "temp" is not a known variable
CREATE OR REPLACE FUNCTION whatever()
RETURNS void AS $$
BEGIN
SELECT *
INTO TEMP TABLE mytable
FROM orig_table;
END; $$ LANGUAGE plpgsql;
ich kann SELECT INTO
eine Variable vom Typ record
in PL/pgSQL, aber dann muss ich die Struktur definieren, wenn Daten aus diesem Datensatz abgerufen werden. SELECT INTO
ist wirklich einfach - automatisch eine Tabelle mit der gleichen Struktur der SELECT
Abfrage erstellen. Hat jemand eine Erklärung dafür, warum dies in einer Funktion nicht funktioniert?
Es scheint wie SELECT INTO
funktioniert anders in PL/pgSQL, weil Sie in die Variablen auswählen können, die Sie deklariert haben. Ich möchte jedoch nicht meine temporäre Tabellenstruktur deklarieren. Ich wünschte, es würde nur die Struktur automatisch erstellen, wie es in SQL tut.
Dank! Ich wusste, dass ich dieses Problem vorher gelöst hatte, und ich erinnere mich an diesen Satz von den Postgresql-Dokumenten. Ich habe CREATE TABLE AS einfach total vergessen. – nnyby
Das hat mich für eine Weile total ratlos gemacht - danke. – mvexel