Có, đây là một vấn đề đã biết.
PL / pgSQL (giống như bất kỳ hàm nào khác, ngoại trừ trên SQL
) là một "hộp đen" cho PostgreSQL, do đó không thực sự có thể phát hiện ra lỗi ngoại trừ trong thời gian chạy.
Bạn có thể làm một số điều sau:
- bọc hàm của bạn khi gọi
SQL
truy vấn vàoBEGIN
/COMMIT
để kiểm soát tốt hơn các lỗi; - thêm
EXCEPTION
khối vào mã của bạn để bắt và theo dõi lỗi. Tuy nhiên, lưu ý rằng điều này sẽ ảnh hưởng đến hiệu suất của chức năng; - sử dụng
plpgsql_check
phần mở rộng , được phát triển bởi Pavel Stěhule, người là một trong những người đóng góp chính cho sự phát triển PL / pgSQL. Tôi cho rằng cuối cùng thì tiện ích mở rộng này sẽ trở thành cốt lõi của PostgreSQL, nhưng sẽ mất một thời gian (bây giờ chúng ta đang ở trạng thái 9.4beta3); - Bạn cũng có thể xem xét câu hỏi liên quan này: kiểm tra cú pháp postgresql mà không cần chạy truy vấn
Và có vẻ như bạn đang rất cần một khung thử nghiệm đơn vị.