Postgres ejecuta algunas comprobaciones simples en la función que está intentando crear y encuentra (correctamente) que la tabla work_list
(todavía) no existe. Veo dos opciones:
1. "Fíngelo hasta que lo logres"
En realidad, cree la tabla (temporal) antes de crear la función. La tabla temporal desaparecerá al final de la sesión, pero una vez que se crea la función, habrá superado esta prueba definitivamente.
Obviamente, tendría que eliminar esa tabla antes de ejecutar la función en el mismo sesión para evitar un conflicto. Sin embargo, mejor:use CREATE TEMP TABLE IF NOT EXISTS
en su función (Postgres 9.1+). Es posible que desee truncar la tabla si ya existe...
Sin embargo (ver comentarios a continuación), citando el manual
Énfasis en negrita mío.
2. Use PL/pgSQL en su lugar
Las comprobaciones son menos exhaustivas en plpgsql. Si Postgres aún se queja (lo que no ocurre en este caso), también puede ejecutar SQL dinámicamente con EXECUTE
.
Aparte:en muchos casos, hay una solución más eficaz sin una tabla temporal a la vuelta de la esquina...