Dos livros on-line: @@Error está apenas dentro do escopo atual. Portanto, deve ter o valor para o que enviou o proc para o bloco catch, independentemente de qual das várias instruções foi a que apresentou erro.