这与this question有关,但略有不同,我有while循环插入记录,并且即使某些插入失败,我也希望它继续。因此,insertrecords过程通过在临时表上一次对前50行执行一次插入来插入记录。
问题是,如果insertrecords中的任何插入失败,它将不会继续?即使当前50条记录失败,如何修改sql以继续下50行。我想在sybase中有类似try/catch异常处理的东西吗?
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
最佳答案
尝试将内容放入while块中,放入try cactch中。
注意:以下示例在SQL中,请在sybase中尝试类似的代码。
`WHILE(SOME CONDITION)
BEGIN --start of while block
BEGIN TRY-start of try block
--your code here
END TRY
BEGIN CATCH
PRINT ERR_MESSAGE();
END CATCH
END --end of while loop.
`
关于tsql - 即使sybase中发生异常,如何继续执行while循环的其余部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19389112/