Как заставить замолчать ошибки внутри UDF? - PullRequest
0 голосов
/ 17 ноября 2010

Мне нужно написать UDF, который попытался бы привести varchar к bigint и вернуть либо bigint, либо ноль в случае неудачи. Проблема в том, что я не могу найти способ заставить замолчать ошибку приведения, когда строка не является допустимым числом. TRY CATCH не работает внутри функций, и я не знаю, что еще делать.

1 Ответ

2 голосов
/ 18 ноября 2010

Попробуйте это:

Create Function dbo.Convert2BigInt(@Data VarChar(100))
Returns BigInt
As 
Begin
    Return(Case When IsNumeric(@Data + '.0e0') = 1 
                Then Convert(BigInt, @Data)
                Else Convert(BigInt, 0)
                End)
End
...