Postgres kör några enkla kontroller av funktionen du försöker skapa, och den finner (korrekt) att tabellen work_list
finns (ännu) inte. Jag ser två alternativ:
1. "Fake it tills you make it"
Skapa faktiskt den (tillfälliga) tabellen innan du skapar funktionen. Den tillfälliga tabellen kommer att försvinna i slutet av sessionen, men när funktionen har skapats har du klarat testet för gott.
Självklart måste du släppa den tabellen innan du kör funktionen i samma session för att undvika en konflikt. Bättre, dock:använd SKAPA TEMPERATABELL OM INTE FINNS
i din funktion (Postgres 9.1+). Du kanske vill trunkera tabellen om den redan finns ...
Men (se kommentarerna nedan), med hänvisning till manualen
Djärv betoning min.
2. Använd PL/pgSQL istället
Kontrollerna är mindre noggranna i plpgsql. Om Postgres fortfarande klagar (vilket det inte gör i det här fallet) kan du också kör SQL dynamiskt med EXECUTE
.
Bortsett från:I många fall finns det en mer presterande lösning utan tempbord runt hörnet ...