Это база данных SQL 2000, с которой я работаю.
У меня есть то, что я называю промежуточной таблицей, которая представляет собой необработанный дамп данных, так что все это ntext или nvarchar (255).
Мне нужно привести / преобразовать все эти данные в соответствующие типы данных (например, int, decimal, nvarchar и т. Д.)
Способ, которым я собирался это сделать, заключался в том, чтобы перебирать все записи с использованием цикла while и пытаться выполнить CAST для каждого столбца на одной записи во время каждой итерации, после того как я посещаю определенную запись, я отмечаю ее как обработанную (битовое поле ).
Но как мне зарегистрировать ошибку, когда / если она возникнет, но позволить циклу while продолжить.
Сначала я реализовал это с помощью TRY CATCH в локальном экземпляре SQL 2005 (чтобы запустить проект), и все работало хорошо, но сегодня я узнал, что база данных dev & production, которую установили международные DBA, является Экземпляр SQL 2000, поэтому я должен соответствовать.
РЕДАКТИРОВАТЬ : Я использую пакет служб SSIS для заполнения промежуточной таблицы. Я вижу, что теперь я должен пересмотреть этот пакет и реализовать компонент сценария для обработки преобразований. Спасибо, ребята
РЕДАКТИРОВАТЬ : я я делаю это на основе записи за записью, а не пакетной вставкой, поэтому идея транзакции кажется осуществимой, но я не уверен, как перехватить @@ ERROR и разрешить продолжение хранимой процедуры.
РЕДАКТИРОВАТЬ : Мне действительно нравится Подход Гая , я собираюсь реализовать его таким образом.