@evan There are circumstances where they are absolutely the right tool for the job.
For example, in a database where the transaction log is correctly implemented (e.g. Postgres, DB2) then using sprocs for complex logic preserves the transaction log as an unpolluted source of truth.
This makes replication (including wide-area async) and recovery vastly easier (and even trivial in some cases). If those properties of the system matter to your use case, sprocs are a good candidate technology.