我从第一个使用数据库的商业产品开始都是用存储过程,复杂业务逻辑完整并可被多放使重用,维护方便,安全。想像复杂的逻辑在应用服务器和数据库传递,还有注入,不能临时表游标等,问题多了。
存储过程的缺点就是偶尔的cache plan因为参数 sniffer或者corrupted,要折腾一下。还有容错这块看怎么做了,如果在sp吞了调用端又难以调试。对批量数据传递进来处理有点麻烦譬如用xml做参数,如果直接ad hoc那可以随便拼接。。。但我还是推荐存储过程。。。cache那是双刃剑看怎么用。
我的经验有点不同,一直是尽量避开存储过程。项目型的统计多的可以用存储过程吧,这东西不好移植,并且在数据库切分之类的操作时会有麻烦,业务逻辑一般不耦合数据层的东西。