Postgres menjalankan beberapa pemeriksaan sederhana pada fungsi yang Anda coba buat, dan menemukan (dengan benar) bahwa tabel work_list
tidak (belum) ada. Saya melihat dua opsi:
1. "Berpura-puralah sampai kamu berhasil"
Sebenarnya buat tabel (sementara) sebelum Anda membuat fungsi. Tabel sementara akan hilang di akhir sesi, tetapi setelah fungsi dibuat, Anda telah lulus tes ini untuk selamanya.
Jelas, Anda harus menghapus tabel itu sebelum menjalankan fungsi di tempat yang sama pertemuan untuk menghindari konflik. Lebih baik, meskipun:gunakan CREATE TEMP TABLE IF NOT EXISTS
dalam fungsi Anda (Postgres 9.1+). Anda mungkin ingin memotong tabel jika sudah ada ...
Namun (lihat komentar di bawah), mengutip manual
Penekanan saya yang berani.
2. Gunakan PL/pgSQL sebagai gantinya
Pengecekan kurang teliti di plpgsql. Jika Postgres masih mengeluh (yang tidak dalam kasus ini), Anda juga dapat eksekusi SQL secara dinamis dengan EXECUTE
.
Selain:Dalam banyak kasus, ada solusi yang lebih berkinerja tanpa tabel sementara ...