Không giống như mã ngôn ngữ lập trình thực tế, chúng:
- không di động (mỗi db đều có phiên bản PL / SQL riêng. Đôi khi các phiên bản khác nhau của giống nhau cơ sở dữ liệu không tương thích - Tôi đã thấy nó!)
- không thể kiểm tra dễ dàng - bạn cần một thực tế (dev) phiên bản cơ sở dữ liệu để kiểm tra chúng và do đó đơn vị kiểm tra mã của chúng như một phần của bản dựng là hầu như không thể
- không thể cập nhật / có thể cập nhật dễ dàng - bạn phải thả / tạo chúng, tức là sửa đổi db sản xuất để phát hành chúng
- không có hỗ trợ thư viện (tại sao phải viết mã khi người khác có)
- không thể tích hợp dễ dàng với các công nghệ khác (hãy thử gọi một dịch vụ web từ chúng)
- họ sử dụng một ngôn ngữ gần như nguyên thủy như Fortran và do đó không phù hợp và tốn nhiều công sức để hoàn thành việc viết mã hữu ích, vì vậy rất khó để diễn đạt logic nghiệp vụ, mặc dù thông thường đó là mục đích chính của họ
- không cung cấp tính năng gỡ lỗi / truy tìm / ghi nhật ký tin nhắn, v.v. (một số db có thể hỗ trợ điều này - mặc dù vậy tôi chưa thấy)
- thiếu một IDE phù hợp để trợ giúp về cú pháp và liên kết với các thủ tục hiện có khác (ví dụ như Eclipse làm cho java)
- những người có kỹ năng viết mã chúng hiếm hơn và đắt hơn những người viết mã ứng dụng
- "hiệu suất cao" của chúng là một huyền thoại, bởi vì chúng thực thi trên máy chủ cơ sở dữ liệu mà chúng thường tăng tải của máy chủ db, vì vậy việc sử dụng chúng thường sẽ giảm thông lượng giao dịch tối đa của bạn
- không có khả năng chia sẻ các hằng số một cách hiệu quả (thường được giải quyết bằng cách tạo một bảng và yêu cầu nó từ bên trong thủ tục của bạn - rất kém hiệu quả)
- v.v.
Nếu bạn có một hành động rất cụ thể cho cơ sở dữ liệu (ví dụ:một hành động trong giao dịch để duy trì tính toàn vẹn của db) hoặc giữ cho các thủ tục của bạn rất nguyên tử và đơn giản, có lẽ bạn nên xem xét chúng.
Cần thận trọng khi chỉ định trước "hiệu suất cao". Nó thường dẫn đến những lựa chọn không tốt với cái giá phải trả là thiết kế đẹp và nó sẽ khiến bạn sớm bị sa ngã hơn bạn nghĩ.
Sử dụng các thủ tục được lưu trữ với nguy cơ của riêng bạn (từ một người đã ở đó và không bao giờ muốn quay lại). Khuyến nghị của tôi là tránh chúng như bệnh dịch.