The whole buisness of error handling in sql server 2000 stored procedures is depressing.
For example if a query has an incorrect table structure then there is no way of handling that from within the sp.
It is rather inconsistent, the best that can be acheived is a compromise. You have to check @@ERROR after every step.
I hope that SQL Server 2005 will be better once I am allowed to use it.