PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

postgres ne reconnaît pas la table temporaire dans la fonction

Postgres exécute quelques vérifications simples sur la fonction que vous essayez de créer, et il trouve (correctement) que la table work_list n'existe pas (encore). Je vois deux options :

1. "Faites-le jusqu'à ce que vous le fassiez"

Créez en fait la table (temporaire) avant de créer la fonction. La table temporaire disparaîtra à la fin de la session, mais une fois la fonction créée, vous aurez définitivement réussi ce test.
Évidemment, vous devrez supprimer cette table avant d'exécuter la fonction dans le même séance pour éviter un conflit. Mieux, cependant :utilisez CREATE TEMP TABLE IF NOT EXISTS dans votre fonction (Postgres 9.1+). Vous voudrez peut-être tronquer le tableau s'il existe déjà...

Cependant (voir commentaires ci-dessous), en citant le manuel

J'insiste sur moi.

2. Utilisez PL/pgSQL à la place

Les vérifications sont moins approfondies dans plpgsql. Si Postgres se plaint toujours (ce qui n'est pas le cas dans ce cas), vous pouvez également exécuter SQL dynamiquement avec EXECUTE .

A part :dans de nombreux cas, il existe une solution plus performante sans table temporaire au coin de la rue...