>While I agree with you in terms of performance, isn't it true that extensive (or exclusive) use of stored procedures conflicts with the notion of separating business logic from the data.
Personally, I believe that you enforce a rule at the lowest tier that is capable of handling it.
BTW, you can solve your problem with just one trip to the server but it will require that the query is bigger. When you submit a "query" to the server, you're really submitting a "batch" and a batch can contain more than one query. So it would be possible to submit the following:
IF EXISTS(SELECT * FROM table WHERE something = something)
UPDATE table SET something = something WHERE something
ELSE
INSERT INTO table () VALUES ()
-Mike