Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как обойти ошибку при использовании CAST  [new]
Dats
Member

Откуда: СПБ
Сообщений: 317
Привет всем.
Ситуация такая. Есть хранимая процедура, которая берет из одной БД данные и заталкивает их в другую, выполняя с ними определенные операции. В этой хранимке присутствует код. Хранимка выполняется в джобе каждые 3 мин. (критический для приложения сегмент)

-- Расщепляем цены и ставим флаг о том, что необходимо создать 2 карточки
declare @Plus tinyint, @Pr1 int, @Pr2 int, @sPr1 nvarchar(10), @sPr2 nvarchar(10)
--Определяем где в строке находится разделительный +
select @Plus = CharIndex('+', @RV5)
set @sPr1 = left(@RV5, @Plus-1)
set @sPr2 = substring(@RV5, @Plus+1,Len(RTrim(@RV5))-@Plus)
set @Pr1 = CAST(@sPr1 as int)
set @Pr2 = CAST(@sPr2 as int)

Т.е в хранимке необходимо расщепить строку вида '1000+2300'.
Однако если бл-ие пользователи вводят цены как-то по другому, то конверсия не производится, возникает ошибка и происходит откат транзакции.

Каким образом можно протестировать строку на наличие в ней чего либо постороннего?
1 апр 05, 11:20    [1432880]     Ответить | Цитировать Сообщить модератору
 Re: Как обойти ошибку при использовании CAST  [new]
Glory
Member

Откуда:
Сообщений: 104760
Каким образом можно протестировать строку на наличие в ней чего либо постороннего?
PATINDEX(), ISNUMERIC()
1 апр 05, 11:22    [1432888]     Ответить | Цитировать Сообщить модератору
 Re: Как обойти ошибку при использовании CAST  [new]
Dats
Member

Откуда: СПБ
Сообщений: 317
Спасибо, то что нужно.
1 апр 05, 11:35    [1432956]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить