Ya, ini adalah masalah umum.
PL/pgSQL (seperti fungsi lainnya, kecuali pada SQL
) adalah "kotak hitam" untuk PostgreSQL, oleh karena itu tidak mungkin mendeteksi kesalahan kecuali saat runtime.
Anda dapat melakukan beberapa hal:
- bungkus fungsi Anda dengan memanggil
SQL
kueri keBEGIN
/COMMIT
pernyataan untuk memiliki kontrol yang lebih baik atas kesalahan; - tambahkan
EXCEPTION
blok ke kode Anda untuk menangkap dan melacak kesalahan. Namun, perhatikan bahwa ini akan memengaruhi kinerja fungsi; - gunakan
plpgsql_check
ekstensi , dikembangkan oleh Pavel Stěhule, yang merupakan salah satu kontributor utama pengembangan PL/pgSQL. Saya kira pada akhirnya ekstensi ini akan menjadikannya inti dari PostgreSQL, tetapi itu akan memakan waktu (sekarang kita berada dalam status 9.4beta3); - Anda mungkin juga melihat pertanyaan terkait ini:pemeriksaan sintaks postgresql tanpa menjalankan kueri
Dan sepertinya Anda sangat membutuhkan kerangka kerja pengujian unit.