Table temporaire postgresql fonction

Je ne peux pas trouver une explication claire de la syntaxe pour créer (et d'utiliser) des tables juste à l'intérieur des calculs d'une fonction. Quelqu'un pourrait-il me donner un exemple de syntaxe s'il vous plaît ?

De ce que j'ai trouvé, j'ai essayé (avec et sans @ avant temp_table) :

CREATE FUNCTION test.myfunction()
RETURNS SETOF test.out_table
AS $$

DECLARE @temp_table TABLE
( 
        id int,
        value text
 )
BEGIN
 INSERT INTO @temp_table 
        SELECT id, value
        FROM test.another_table;

 INSERT INTO test.out_table
        SELECT id, value
        FROM @temp_table;
RETURN END
$$ LANGUAGE SQL;

J'obtiens :

D'ERREUR: erreur de syntaxe sur ou près de "DÉCLARER"
LIGNE 5: DECLARE @temp_table TABLE

-

J'ai aussi essayé de CRÉER la TABLE de l'approche proposée ici, de cette façon :

CREATE FUNCTION test.myfunction()
RETURNS SETOF test.out_table
AS $$

    CREATE TABLE temp_table AS
        SELECT id, value
        FROM test.another_table;

    INSERT INTO test.out_table
        SELECT id, value
        FROM temp_table;

$$ LANGUAGE SQL;

Et j'obtiens ceci :

ERREUR: la relation "temp_table" n'existe pas
LIGNE 11: DE temp_table

(Évidemment, je suis conscient de la temp_table n'est pas nécessaire pour ce que je fais dans le code ci-dessus, mais ce n'est pas le point 🙂 => je veux comprendre la syntaxe pour le faire fonctionner)

Postgres utilise des tables temporaires pour ce but. Les variables de Table sont une fonctionnalité de SQL Server.
Où en avez-vous trouver la syntaxe DECLARE @temp_table TABLE...?

OriginalL'auteur François M. | 2016-03-18