Have a look at my earlier post about putting the set statements at the beginning of the procedure.
The bizarre solution was courtesy of Microsoft Support
Had the same error on a SQL 2005 server that had a stored proc that used a cursor that enumerated the user databases then ran a SQL command against each database.
On investigation I found it was failing on a database that had IsArithmeticAbortEnabled (this was the only difference between all of teh user databases). This was conflicting with the default behaviour of the stored procedure which was SET ARITHABORT OFF.
You may need to make sure that all of your database options align with the options for the stored procedure.