A very interesting topic.

IMO Sprocs are not a great strategy for an application that needs to be able to work againtst multiple RDbMS'. In fact, I think that LINQ is trying to answer what I have seen in several products - a RDbMS-independent layer above the database.

I too am uncertain as to the architectural wisdom of locking database logic into code, but I think that most product vendors would already be forced into something like this by the demands of using only SQL-92 compliant statements, and making certain RDBMS tweks at runtime.

Besides, prepared statements/meta-data can give you a lot of the non-compiled support you would get out of sprocs.

my two cents.