Naro kode business logic di level database berupa stored procedure sebenernya menurut gw gak terlalu masalah sih. 

Dan dari observasi gw meski gak lazim tapi ternyata gk sedikit yg prakteknya kayak gini.Dibandingin naro logic di kode aplikasi di arsitektur 3-tier tentunya pasti lebih cepet karena gak ada network + interprocess overhead. Cuman ya ada bbrp downsidenya; mostly karena memang gk selazim itu.

1/ Nyari talentnya lebih susah kalo butuh backup / scale.
2/ Jadi lock-in bgt ke databasenya. Arguably kita jg jarang bgt kejadian mindahin database. Tp mungkin repot kalo udah kasusnya multiple data storage.
3/ Otentikasinya jadi di level database jg. Again, arguably kalo aplikasinya internal ya gpp. Misalnya SQLServer otentikasinya via Active Directory.
4/ Repot klo mau branching out ke multiple client (web/mobile) terutama klo mau mulai serve ke external customer.
5/ Repot testingnya. Tapi ya boro2 bikin unit test buat logic di database; bikin unit test di level aplikasi aja byk yg gak ngerti.
6/ Toolingnya mungkin belum banyak dan belum mature aja.