It normally sucks for various reasons. If you work object oriented, then stored procedures are not eaxactls a good place for logic - because your objects don't exist there anymore. An object may be in multiple tables.
Second. SQL is a freaking bad langauge to code complex logic in. It just is no tdone for that - one reason SQL Server allows SP's to be written in .NET. Try calculating a hash in SQL and you will understand what I mean - all kinds of string manupulations are another area. Dirty as hell.
SP's in general are pretty often done with idiotic arguments. Idiotic like the arguments the people bring to defend them are simply not true at all. Frans Bourma has a list of the most often used fallacies anda good explanation why the arguments are mostly stupid ramblings at http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx - and yes, it is this level of idiocy (like people not even reading the documentation or thinking about what they actually say, in all the consequences).
I personally have limited systmes with stored procedures, and the ones I have are: Limited complexity, but high performance. Basically no inheritance because the object model is simple, the transactional logic in the SP's is not overly complex AND I need/want extreme small locking speed, so certain operations are moved into stored procedures. On top, this particular application has a very unusual object model, too (objects aare dynamically streamed from various sources, never updated, always replaced, and all changes HAVE to go through services and not be done on the object - sometimes because a change is "asked for" on another computer in another country in anothe organization.
A good example is an accounting system which is high performance (because it is tracking trades from fully automated trading systems). The logic in every SP is not really complex, but I want to have as little SQL going back and forth as possible.
Now, bad sides of Stored procedures are also a lot tool wise. There is no proper testing framework, no mocking frameowrk, source control itnegration is kind of a little awkward (but doable with the right toolset). Integrated debugging? Well, my great thanks to Microsoft and Visual Studio - that actually works (breakpoint in stored procedure - really nice).
I have yet to see one approach using a lot of stored procedures that was not defended with totally borked arguments - on the level of actually being a demonstration of "employee should be fired" level of thinking. Maybe they are out there, but I have not seen them.