Eu ţi-aş recomanda să eviţi eroarea (în loc să o tratezi), verificând înainte de conversie dacă acea conversie e posibilă. O modalitate ar fi să foloseşti funcţia ISNUMERIC:
DECLARE @x AS
VARCHAR(50), @y
bigint, @eroare
nvarchar(255)
SET @x='12a3'
IF ISNUMERIC(@x)<>0 SET @y = CAST(@x AS BIGINT)
ELSE SET @eroare = 'eroare la conversie'
SELECT @y,
@eroare
Dar funcţia ISNUMERIC nu returnează totdeauna ceea ce te aştepţi (încearcă de exemplu cu '.', '$', '1e3', etc). Pentru explicaţii şi soluţii alternative, vezi: http://classicasp.aspfaq.com/general/what-is-wrong-with-isnumeric.html
Răzvan