O Postgres executa algumas verificações simples na função que você está tentando criar e descobre (corretamente) que a tabela
work_list
(ainda) não existe. Vejo duas opções:1. "Finja até conseguir"
Na verdade, crie a tabela (temporária) antes de criar a função. A tabela temporária desaparecerá no final da sessão, mas assim que a função for criada, você passará neste teste definitivamente.Obviamente, você teria que descartar essa tabela antes de executar a função no mesmo sessão para evitar um conflito. Melhor, porém:use
CREATE TEMP TABLE IF NOT EXISTS
em sua função (Postgres 9.1+). Você pode querer truncar a tabela se ela já existir ... No entanto (ver comentários abaixo), citando o manual
Minha ênfase em negrito.
2. Use PL/pgSQL em vez disso
As verificações são menos completas no plpgsql. Se o Postgres ainda reclamar (o que não acontece neste caso), você também pode executar SQL dinamicamente com
EXECUTE
. À parte:em muitos casos, existe uma solução com melhor desempenho sem mesa temporária ao virar da esquina ...