Desidero utilizzare SELECT INTO
per creare una tabella temporanea in una delle mie funzioni. SELECT INTO
funziona in SQL ma non in PL/pgSQL.SELEZIONA .. INTO per creare una tabella in PL/pgSQL
Questa istruzione crea una tabella denominata MyTable (Se orig_table
esiste come una relazione):
SELECT *
INTO TEMP TABLE mytable
FROM orig_table;
ma mettere questa funzione in PostgreSQL, e si ottiene l'errore: 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;
posso SELECT INTO
una variabile di tipo record
all'interno di PL/pgSQL, ma in seguito devo definire la struttura per ottenere i dati da quel record. SELECT INTO
è davvero semplice: crea automaticamente una tabella con la stessa struttura della query SELECT
. Qualcuno ha qualche spiegazione sul motivo per cui questo non funziona all'interno di una funzione?
Sembra che SELECT INTO
funzioni in modo diverso in PL/pgSQL, perché è possibile selezionare le variabili dichiarate. Non voglio dichiarare la mia struttura temporanea della tabella, però. Mi piacerebbe solo creare la struttura automaticamente come fa in SQL.
Grazie! Sapevo di aver risolto questo problema in passato e ricordo quella frase dei documenti postgresql. Mi ero completamente dimenticato di CREATE TABLE AS. – nnyby
Questo mi ha totalmente bloccato per un po '- grazie. – mvexel