Αν και μπήκα λίγο αργά στην κουβέντα (που θα πάει, θα μου έρθει το ριμάδι το DSL) θα ήθελα να επισημάνω το εξής:
Σε παλιότερες version του SQL Server οι stored procedures είχαν "ειδική" μεταχείριση από τον server για λόγους performance σε σχέση με τα queries. Υπήρχε ένας caching μηχανισμός ο οποίος δεν υπήρχε για τα ad-hoc queries. Από τον SQL Server 7 αυτός ο μηχανισμός ισχύει και για τα queries. Στα books on line του SQL Server 7 και 2000 λέει:
SQL Server 2000 and SQL Server 7.0 do not save a partially compiled plan for stored procedures when they are created. A stored procedure is compiled at execution time, like any other Transact-SQL statement. SQL Server 2000 and SQL Server 7.0 retain execution plans for all SQL statements in the procedure cache, not just stored procedure execution plans.
Και όμως, ο κόσμος συνεχίζει να πιστεύει από τότε ότι υπάρχει (πάντα μιλάμε ως προς το performance) διαφορά, υπέρ των SP. Πρακτικά, ΔΕΝ υπάρχει. Αν μια λύση αποδίδει καλύτερα με τον έναν ή τον άλλον τρόπο, θα πρέπει να αναζητηθούν αλλού τα αίτια.
Πάντως, οι stored procedures δεν παύουν να είναι χρήσιμες καθώς προσφέρουν άλλο ένα αφαιρετικό επίπεδο. Επίσης, είναι και αυτό που είπε ο Σωτήρης. Εξαρτάται παντότε από το τι θέλουμε να κάνουμε. You win some, you loose some. To debate SPs vs queries τρέχει εδώ και αρκετό καιρό...
Vir prudens non contra ventum mingit