Это связано с this question, но немного отличается, у меня есть цикл, который вставляет записи, и я хочу, чтобы он продолжался, даже если некоторые вставки не работают. Таким образом, процедура insertrecords вставляет записи, делая то, где в таблице temp для верхних 50 строк за раз.Как продолжить выполнение остальной части цикла while, даже если в sybase возникает исключение?
Проблема в том, что она не продолжится, если какая-либо из вставок внутри вставленных вставки не удалась? Как я могу изменить sql, чтобы продолжить следующие 50 строк, даже если он не работает для текущих 50 записей. Я думаю, есть что-то вроде обработки исключений try/catch в sybase?
SELECT id INTO #temp FROM myTable
-- Loop through the rows of the temp table
WHILE EXISTS(SELECT 1 FROM #temp)
BEGIN
BEGIN TRANSACTION
exec insertrecords
IF @@error = 0
begin
print 'commited'
commit
end
else
begin
print 'rolled back'
rollback
end
DELETE TOP 50 FROM #temp order by id
END
-- Drop the temp table.
DROP TABLE #temp
Я не думаю, что 'try' является допустимым ключевым словом в sybase. – Vishal
Ваш образец кода выглядит как SQL, и я дал образец sql. Не уверен, что он будет работать в sybase или нет. – sudhAnsu63
Да, но я упоминал sybase, и я знаю, что это будет работать в SQL Server. Я искал нечто похожее, которое работает в Sybase. – Vishal